????JFIF??x?x????'403WebShell
403Webshell
Server IP : 104.21.80.1  /  Your IP : 216.73.216.145
Web Server : LiteSpeed
System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
User : tempvsty ( 647)
PHP Version : 8.0.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/tempvsty/pontiacques.org/wp-content/themes/astra/admin/assets/build/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/tempvsty/pontiacques.org/wp-content/themes/astra/admin/assets/build/dashboard-app.js
/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "./node_modules/@remix-run/router/dist/router.js":
/*!*******************************************************!*\
  !*** ./node_modules/@remix-run/router/dist/router.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   AbortedDeferredError: () => (/* binding */ AbortedDeferredError),
/* harmony export */   Action: () => (/* binding */ Action),
/* harmony export */   IDLE_BLOCKER: () => (/* binding */ IDLE_BLOCKER),
/* harmony export */   IDLE_FETCHER: () => (/* binding */ IDLE_FETCHER),
/* harmony export */   IDLE_NAVIGATION: () => (/* binding */ IDLE_NAVIGATION),
/* harmony export */   UNSAFE_DEFERRED_SYMBOL: () => (/* binding */ UNSAFE_DEFERRED_SYMBOL),
/* harmony export */   UNSAFE_DeferredData: () => (/* binding */ DeferredData),
/* harmony export */   UNSAFE_ErrorResponseImpl: () => (/* binding */ ErrorResponseImpl),
/* harmony export */   UNSAFE_convertRouteMatchToUiMatch: () => (/* binding */ convertRouteMatchToUiMatch),
/* harmony export */   UNSAFE_convertRoutesToDataRoutes: () => (/* binding */ convertRoutesToDataRoutes),
/* harmony export */   UNSAFE_decodePath: () => (/* binding */ decodePath),
/* harmony export */   UNSAFE_getResolveToMatches: () => (/* binding */ getResolveToMatches),
/* harmony export */   UNSAFE_invariant: () => (/* binding */ invariant),
/* harmony export */   UNSAFE_warning: () => (/* binding */ warning),
/* harmony export */   createBrowserHistory: () => (/* binding */ createBrowserHistory),
/* harmony export */   createHashHistory: () => (/* binding */ createHashHistory),
/* harmony export */   createMemoryHistory: () => (/* binding */ createMemoryHistory),
/* harmony export */   createPath: () => (/* binding */ createPath),
/* harmony export */   createRouter: () => (/* binding */ createRouter),
/* harmony export */   createStaticHandler: () => (/* binding */ createStaticHandler),
/* harmony export */   data: () => (/* binding */ data),
/* harmony export */   defer: () => (/* binding */ defer),
/* harmony export */   generatePath: () => (/* binding */ generatePath),
/* harmony export */   getStaticContextFromError: () => (/* binding */ getStaticContextFromError),
/* harmony export */   getToPathname: () => (/* binding */ getToPathname),
/* harmony export */   isDataWithResponseInit: () => (/* binding */ isDataWithResponseInit),
/* harmony export */   isDeferredData: () => (/* binding */ isDeferredData),
/* harmony export */   isRouteErrorResponse: () => (/* binding */ isRouteErrorResponse),
/* harmony export */   joinPaths: () => (/* binding */ joinPaths),
/* harmony export */   json: () => (/* binding */ json),
/* harmony export */   matchPath: () => (/* binding */ matchPath),
/* harmony export */   matchRoutes: () => (/* binding */ matchRoutes),
/* harmony export */   normalizePathname: () => (/* binding */ normalizePathname),
/* harmony export */   parsePath: () => (/* binding */ parsePath),
/* harmony export */   redirect: () => (/* binding */ redirect),
/* harmony export */   redirectDocument: () => (/* binding */ redirectDocument),
/* harmony export */   replace: () => (/* binding */ replace),
/* harmony export */   resolvePath: () => (/* binding */ resolvePath),
/* harmony export */   resolveTo: () => (/* binding */ resolveTo),
/* harmony export */   stripBasename: () => (/* binding */ stripBasename)
/* harmony export */ });
/**
 * @remix-run/router v1.21.0
 *
 * Copyright (c) Remix Software Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE.md file in the root directory of this source tree.
 *
 * @license MIT
 */
function _extends() {
  _extends = Object.assign ? Object.assign.bind() : 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;
  };
  return _extends.apply(this, arguments);
}

////////////////////////////////////////////////////////////////////////////////
//#region Types and Constants
////////////////////////////////////////////////////////////////////////////////
/**
 * Actions represent the type of change to a location value.
 */
var Action;
(function (Action) {
  /**
   * A POP indicates a change to an arbitrary index in the history stack, such
   * as a back or forward navigation. It does not describe the direction of the
   * navigation, only that the current index changed.
   *
   * Note: This is the default action for newly created history objects.
   */
  Action["Pop"] = "POP";
  /**
   * A PUSH indicates a new entry being added to the history stack, such as when
   * a link is clicked and a new page loads. When this happens, all subsequent
   * entries in the stack are lost.
   */
  Action["Push"] = "PUSH";
  /**
   * A REPLACE indicates the entry at the current index in the history stack
   * being replaced by a new one.
   */
  Action["Replace"] = "REPLACE";
})(Action || (Action = {}));
const PopStateEventType = "popstate";
/**
 * Memory history stores the current location in memory. It is designed for use
 * in stateful non-browser environments like tests and React Native.
 */
function createMemoryHistory(options) {
  if (options === void 0) {
    options = {};
  }
  let {
    initialEntries = ["/"],
    initialIndex,
    v5Compat = false
  } = options;
  let entries; // Declare so we can access from createMemoryLocation
  entries = initialEntries.map((entry, index) => createMemoryLocation(entry, typeof entry === "string" ? null : entry.state, index === 0 ? "default" : undefined));
  let index = clampIndex(initialIndex == null ? entries.length - 1 : initialIndex);
  let action = Action.Pop;
  let listener = null;
  function clampIndex(n) {
    return Math.min(Math.max(n, 0), entries.length - 1);
  }
  function getCurrentLocation() {
    return entries[index];
  }
  function createMemoryLocation(to, state, key) {
    if (state === void 0) {
      state = null;
    }
    let location = createLocation(entries ? getCurrentLocation().pathname : "/", to, state, key);
    warning(location.pathname.charAt(0) === "/", "relative pathnames are not supported in memory history: " + JSON.stringify(to));
    return location;
  }
  function createHref(to) {
    return typeof to === "string" ? to : createPath(to);
  }
  let history = {
    get index() {
      return index;
    },
    get action() {
      return action;
    },
    get location() {
      return getCurrentLocation();
    },
    createHref,
    createURL(to) {
      return new URL(createHref(to), "http://localhost");
    },
    encodeLocation(to) {
      let path = typeof to === "string" ? parsePath(to) : to;
      return {
        pathname: path.pathname || "",
        search: path.search || "",
        hash: path.hash || ""
      };
    },
    push(to, state) {
      action = Action.Push;
      let nextLocation = createMemoryLocation(to, state);
      index += 1;
      entries.splice(index, entries.length, nextLocation);
      if (v5Compat && listener) {
        listener({
          action,
          location: nextLocation,
          delta: 1
        });
      }
    },
    replace(to, state) {
      action = Action.Replace;
      let nextLocation = createMemoryLocation(to, state);
      entries[index] = nextLocation;
      if (v5Compat && listener) {
        listener({
          action,
          location: nextLocation,
          delta: 0
        });
      }
    },
    go(delta) {
      action = Action.Pop;
      let nextIndex = clampIndex(index + delta);
      let nextLocation = entries[nextIndex];
      index = nextIndex;
      if (listener) {
        listener({
          action,
          location: nextLocation,
          delta
        });
      }
    },
    listen(fn) {
      listener = fn;
      return () => {
        listener = null;
      };
    }
  };
  return history;
}
/**
 * Browser history stores the location in regular URLs. This is the standard for
 * most web apps, but it requires some configuration on the server to ensure you
 * serve the same app at multiple URLs.
 *
 * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory
 */
function createBrowserHistory(options) {
  if (options === void 0) {
    options = {};
  }
  function createBrowserLocation(window, globalHistory) {
    let {
      pathname,
      search,
      hash
    } = window.location;
    return createLocation("", {
      pathname,
      search,
      hash
    },
    // state defaults to `null` because `window.history.state` does
    globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || "default");
  }
  function createBrowserHref(window, to) {
    return typeof to === "string" ? to : createPath(to);
  }
  return getUrlBasedHistory(createBrowserLocation, createBrowserHref, null, options);
}
/**
 * Hash history stores the location in window.location.hash. This makes it ideal
 * for situations where you don't want to send the location to the server for
 * some reason, either because you do cannot configure it or the URL space is
 * reserved for something else.
 *
 * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory
 */
function createHashHistory(options) {
  if (options === void 0) {
    options = {};
  }
  function createHashLocation(window, globalHistory) {
    let {
      pathname = "/",
      search = "",
      hash = ""
    } = parsePath(window.location.hash.substr(1));
    // Hash URL should always have a leading / just like window.location.pathname
    // does, so if an app ends up at a route like /#something then we add a
    // leading slash so all of our path-matching behaves the same as if it would
    // in a browser router.  This is particularly important when there exists a
    // root splat route (<Route path="*">) since that matches internally against
    // "/*" and we'd expect /#something to 404 in a hash router app.
    if (!pathname.startsWith("/") && !pathname.startsWith(".")) {
      pathname = "/" + pathname;
    }
    return createLocation("", {
      pathname,
      search,
      hash
    },
    // state defaults to `null` because `window.history.state` does
    globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || "default");
  }
  function createHashHref(window, to) {
    let base = window.document.querySelector("base");
    let href = "";
    if (base && base.getAttribute("href")) {
      let url = window.location.href;
      let hashIndex = url.indexOf("#");
      href = hashIndex === -1 ? url : url.slice(0, hashIndex);
    }
    return href + "#" + (typeof to === "string" ? to : createPath(to));
  }
  function validateHashLocation(location, to) {
    warning(location.pathname.charAt(0) === "/", "relative pathnames are not supported in hash history.push(" + JSON.stringify(to) + ")");
  }
  return getUrlBasedHistory(createHashLocation, createHashHref, validateHashLocation, options);
}
function invariant(value, message) {
  if (value === false || value === null || typeof value === "undefined") {
    throw new Error(message);
  }
}
function warning(cond, message) {
  if (!cond) {
    // eslint-disable-next-line no-console
    if (typeof console !== "undefined") console.warn(message);
    try {
      // Welcome to debugging history!
      //
      // This error is thrown as a convenience, so you can more easily
      // find the source for a warning that appears in the console by
      // enabling "pause on exceptions" in your JavaScript debugger.
      throw new Error(message);
      // eslint-disable-next-line no-empty
    } catch (e) {}
  }
}
function createKey() {
  return Math.random().toString(36).substr(2, 8);
}
/**
 * For browser-based histories, we combine the state and key into an object
 */
function getHistoryState(location, index) {
  return {
    usr: location.state,
    key: location.key,
    idx: index
  };
}
/**
 * Creates a Location object with a unique key from the given Path
 */
function createLocation(current, to, state, key) {
  if (state === void 0) {
    state = null;
  }
  let location = _extends({
    pathname: typeof current === "string" ? current : current.pathname,
    search: "",
    hash: ""
  }, typeof to === "string" ? parsePath(to) : to, {
    state,
    // TODO: This could be cleaned up.  push/replace should probably just take
    // full Locations now and avoid the need to run through this flow at all
    // But that's a pretty big refactor to the current test suite so going to
    // keep as is for the time being and just let any incoming keys take precedence
    key: to && to.key || key || createKey()
  });
  return location;
}
/**
 * Creates a string URL path from the given pathname, search, and hash components.
 */
function createPath(_ref) {
  let {
    pathname = "/",
    search = "",
    hash = ""
  } = _ref;
  if (search && search !== "?") pathname += search.charAt(0) === "?" ? search : "?" + search;
  if (hash && hash !== "#") pathname += hash.charAt(0) === "#" ? hash : "#" + hash;
  return pathname;
}
/**
 * Parses a string URL path into its separate pathname, search, and hash components.
 */
function parsePath(path) {
  let parsedPath = {};
  if (path) {
    let hashIndex = path.indexOf("#");
    if (hashIndex >= 0) {
      parsedPath.hash = path.substr(hashIndex);
      path = path.substr(0, hashIndex);
    }
    let searchIndex = path.indexOf("?");
    if (searchIndex >= 0) {
      parsedPath.search = path.substr(searchIndex);
      path = path.substr(0, searchIndex);
    }
    if (path) {
      parsedPath.pathname = path;
    }
  }
  return parsedPath;
}
function getUrlBasedHistory(getLocation, createHref, validateLocation, options) {
  if (options === void 0) {
    options = {};
  }
  let {
    window = document.defaultView,
    v5Compat = false
  } = options;
  let globalHistory = window.history;
  let action = Action.Pop;
  let listener = null;
  let index = getIndex();
  // Index should only be null when we initialize. If not, it's because the
  // user called history.pushState or history.replaceState directly, in which
  // case we should log a warning as it will result in bugs.
  if (index == null) {
    index = 0;
    globalHistory.replaceState(_extends({}, globalHistory.state, {
      idx: index
    }), "");
  }
  function getIndex() {
    let state = globalHistory.state || {
      idx: null
    };
    return state.idx;
  }
  function handlePop() {
    action = Action.Pop;
    let nextIndex = getIndex();
    let delta = nextIndex == null ? null : nextIndex - index;
    index = nextIndex;
    if (listener) {
      listener({
        action,
        location: history.location,
        delta
      });
    }
  }
  function push(to, state) {
    action = Action.Push;
    let location = createLocation(history.location, to, state);
    if (validateLocation) validateLocation(location, to);
    index = getIndex() + 1;
    let historyState = getHistoryState(location, index);
    let url = history.createHref(location);
    // try...catch because iOS limits us to 100 pushState calls :/
    try {
      globalHistory.pushState(historyState, "", url);
    } catch (error) {
      // If the exception is because `state` can't be serialized, let that throw
      // outwards just like a replace call would so the dev knows the cause
      // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps
      // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal
      if (error instanceof DOMException && error.name === "DataCloneError") {
        throw error;
      }
      // They are going to lose state here, but there is no real
      // way to warn them about it since the page will refresh...
      window.location.assign(url);
    }
    if (v5Compat && listener) {
      listener({
        action,
        location: history.location,
        delta: 1
      });
    }
  }
  function replace(to, state) {
    action = Action.Replace;
    let location = createLocation(history.location, to, state);
    if (validateLocation) validateLocation(location, to);
    index = getIndex();
    let historyState = getHistoryState(location, index);
    let url = history.createHref(location);
    globalHistory.replaceState(historyState, "", url);
    if (v5Compat && listener) {
      listener({
        action,
        location: history.location,
        delta: 0
      });
    }
  }
  function createURL(to) {
    // window.location.origin is "null" (the literal string value) in Firefox
    // under certain conditions, notably when serving from a local HTML file
    // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297
    let base = window.location.origin !== "null" ? window.location.origin : window.location.href;
    let href = typeof to === "string" ? to : createPath(to);
    // Treating this as a full URL will strip any trailing spaces so we need to
    // pre-encode them since they might be part of a matching splat param from
    // an ancestor route
    href = href.replace(/ $/, "%20");
    invariant(base, "No window.location.(origin|href) available to create URL for href: " + href);
    return new URL(href, base);
  }
  let history = {
    get action() {
      return action;
    },
    get location() {
      return getLocation(window, globalHistory);
    },
    listen(fn) {
      if (listener) {
        throw new Error("A history only accepts one active listener");
      }
      window.addEventListener(PopStateEventType, handlePop);
      listener = fn;
      return () => {
        window.removeEventListener(PopStateEventType, handlePop);
        listener = null;
      };
    },
    createHref(to) {
      return createHref(window, to);
    },
    createURL,
    encodeLocation(to) {
      // Encode a Location the same way window.location would
      let url = createURL(to);
      return {
        pathname: url.pathname,
        search: url.search,
        hash: url.hash
      };
    },
    push,
    replace,
    go(n) {
      return globalHistory.go(n);
    }
  };
  return history;
}
//#endregion

var ResultType;
(function (ResultType) {
  ResultType["data"] = "data";
  ResultType["deferred"] = "deferred";
  ResultType["redirect"] = "redirect";
  ResultType["error"] = "error";
})(ResultType || (ResultType = {}));
const immutableRouteKeys = new Set(["lazy", "caseSensitive", "path", "id", "index", "children"]);
function isIndexRoute(route) {
  return route.index === true;
}
// Walk the route tree generating unique IDs where necessary, so we are working
// solely with AgnosticDataRouteObject's within the Router
function convertRoutesToDataRoutes(routes, mapRouteProperties, parentPath, manifest) {
  if (parentPath === void 0) {
    parentPath = [];
  }
  if (manifest === void 0) {
    manifest = {};
  }
  return routes.map((route, index) => {
    let treePath = [...parentPath, String(index)];
    let id = typeof route.id === "string" ? route.id : treePath.join("-");
    invariant(route.index !== true || !route.children, "Cannot specify children on an index route");
    invariant(!manifest[id], "Found a route id collision on id \"" + id + "\".  Route " + "id's must be globally unique within Data Router usages");
    if (isIndexRoute(route)) {
      let indexRoute = _extends({}, route, mapRouteProperties(route), {
        id
      });
      manifest[id] = indexRoute;
      return indexRoute;
    } else {
      let pathOrLayoutRoute = _extends({}, route, mapRouteProperties(route), {
        id,
        children: undefined
      });
      manifest[id] = pathOrLayoutRoute;
      if (route.children) {
        pathOrLayoutRoute.children = convertRoutesToDataRoutes(route.children, mapRouteProperties, treePath, manifest);
      }
      return pathOrLayoutRoute;
    }
  });
}
/**
 * Matches the given routes to a location and returns the match data.
 *
 * @see https://reactrouter.com/v6/utils/match-routes
 */
function matchRoutes(routes, locationArg, basename) {
  if (basename === void 0) {
    basename = "/";
  }
  return matchRoutesImpl(routes, locationArg, basename, false);
}
function matchRoutesImpl(routes, locationArg, basename, allowPartial) {
  let location = typeof locationArg === "string" ? parsePath(locationArg) : locationArg;
  let pathname = stripBasename(location.pathname || "/", basename);
  if (pathname == null) {
    return null;
  }
  let branches = flattenRoutes(routes);
  rankRouteBranches(branches);
  let matches = null;
  for (let i = 0; matches == null && i < branches.length; ++i) {
    // Incoming pathnames are generally encoded from either window.location
    // or from router.navigate, but we want to match against the unencoded
    // paths in the route definitions.  Memory router locations won't be
    // encoded here but there also shouldn't be anything to decode so this
    // should be a safe operation.  This avoids needing matchRoutes to be
    // history-aware.
    let decoded = decodePath(pathname);
    matches = matchRouteBranch(branches[i], decoded, allowPartial);
  }
  return matches;
}
function convertRouteMatchToUiMatch(match, loaderData) {
  let {
    route,
    pathname,
    params
  } = match;
  return {
    id: route.id,
    pathname,
    params,
    data: loaderData[route.id],
    handle: route.handle
  };
}
function flattenRoutes(routes, branches, parentsMeta, parentPath) {
  if (branches === void 0) {
    branches = [];
  }
  if (parentsMeta === void 0) {
    parentsMeta = [];
  }
  if (parentPath === void 0) {
    parentPath = "";
  }
  let flattenRoute = (route, index, relativePath) => {
    let meta = {
      relativePath: relativePath === undefined ? route.path || "" : relativePath,
      caseSensitive: route.caseSensitive === true,
      childrenIndex: index,
      route
    };
    if (meta.relativePath.startsWith("/")) {
      invariant(meta.relativePath.startsWith(parentPath), "Absolute route path \"" + meta.relativePath + "\" nested under path " + ("\"" + parentPath + "\" is not valid. An absolute child route path ") + "must start with the combined path of all its parent routes.");
      meta.relativePath = meta.relativePath.slice(parentPath.length);
    }
    let path = joinPaths([parentPath, meta.relativePath]);
    let routesMeta = parentsMeta.concat(meta);
    // Add the children before adding this route to the array, so we traverse the
    // route tree depth-first and child routes appear before their parents in
    // the "flattened" version.
    if (route.children && route.children.length > 0) {
      invariant(
      // Our types know better, but runtime JS may not!
      // @ts-expect-error
      route.index !== true, "Index routes must not have child routes. Please remove " + ("all child routes from route path \"" + path + "\"."));
      flattenRoutes(route.children, branches, routesMeta, path);
    }
    // Routes without a path shouldn't ever match by themselves unless they are
    // index routes, so don't add them to the list of possible branches.
    if (route.path == null && !route.index) {
      return;
    }
    branches.push({
      path,
      score: computeScore(path, route.index),
      routesMeta
    });
  };
  routes.forEach((route, index) => {
    var _route$path;
    // coarse-grain check for optional params
    if (route.path === "" || !((_route$path = route.path) != null && _route$path.includes("?"))) {
      flattenRoute(route, index);
    } else {
      for (let exploded of explodeOptionalSegments(route.path)) {
        flattenRoute(route, index, exploded);
      }
    }
  });
  return branches;
}
/**
 * Computes all combinations of optional path segments for a given path,
 * excluding combinations that are ambiguous and of lower priority.
 *
 * For example, `/one/:two?/three/:four?/:five?` explodes to:
 * - `/one/three`
 * - `/one/:two/three`
 * - `/one/three/:four`
 * - `/one/three/:five`
 * - `/one/:two/three/:four`
 * - `/one/:two/three/:five`
 * - `/one/three/:four/:five`
 * - `/one/:two/three/:four/:five`
 */
function explodeOptionalSegments(path) {
  let segments = path.split("/");
  if (segments.length === 0) return [];
  let [first, ...rest] = segments;
  // Optional path segments are denoted by a trailing `?`
  let isOptional = first.endsWith("?");
  // Compute the corresponding required segment: `foo?` -> `foo`
  let required = first.replace(/\?$/, "");
  if (rest.length === 0) {
    // Intepret empty string as omitting an optional segment
    // `["one", "", "three"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`
    return isOptional ? [required, ""] : [required];
  }
  let restExploded = explodeOptionalSegments(rest.join("/"));
  let result = [];
  // All child paths with the prefix.  Do this for all children before the
  // optional version for all children, so we get consistent ordering where the
  // parent optional aspect is preferred as required.  Otherwise, we can get
  // child sections interspersed where deeper optional segments are higher than
  // parent optional segments, where for example, /:two would explode _earlier_
  // then /:one.  By always including the parent as required _for all children_
  // first, we avoid this issue
  result.push(...restExploded.map(subpath => subpath === "" ? required : [required, subpath].join("/")));
  // Then, if this is an optional value, add all child versions without
  if (isOptional) {
    result.push(...restExploded);
  }
  // for absolute paths, ensure `/` instead of empty segment
  return result.map(exploded => path.startsWith("/") && exploded === "" ? "/" : exploded);
}
function rankRouteBranches(branches) {
  branches.sort((a, b) => a.score !== b.score ? b.score - a.score // Higher score first
  : compareIndexes(a.routesMeta.map(meta => meta.childrenIndex), b.routesMeta.map(meta => meta.childrenIndex)));
}
const paramRe = /^:[\w-]+$/;
const dynamicSegmentValue = 3;
const indexRouteValue = 2;
const emptySegmentValue = 1;
const staticSegmentValue = 10;
const splatPenalty = -2;
const isSplat = s => s === "*";
function computeScore(path, index) {
  let segments = path.split("/");
  let initialScore = segments.length;
  if (segments.some(isSplat)) {
    initialScore += splatPenalty;
  }
  if (index) {
    initialScore += indexRouteValue;
  }
  return segments.filter(s => !isSplat(s)).reduce((score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === "" ? emptySegmentValue : staticSegmentValue), initialScore);
}
function compareIndexes(a, b) {
  let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);
  return siblings ?
  // If two routes are siblings, we should try to match the earlier sibling
  // first. This allows people to have fine-grained control over the matching
  // behavior by simply putting routes with identical paths in the order they
  // want them tried.
  a[a.length - 1] - b[b.length - 1] :
  // Otherwise, it doesn't really make sense to rank non-siblings by index,
  // so they sort equally.
  0;
}
function matchRouteBranch(branch, pathname, allowPartial) {
  if (allowPartial === void 0) {
    allowPartial = false;
  }
  let {
    routesMeta
  } = branch;
  let matchedParams = {};
  let matchedPathname = "/";
  let matches = [];
  for (let i = 0; i < routesMeta.length; ++i) {
    let meta = routesMeta[i];
    let end = i === routesMeta.length - 1;
    let remainingPathname = matchedPathname === "/" ? pathname : pathname.slice(matchedPathname.length) || "/";
    let match = matchPath({
      path: meta.relativePath,
      caseSensitive: meta.caseSensitive,
      end
    }, remainingPathname);
    let route = meta.route;
    if (!match && end && allowPartial && !routesMeta[routesMeta.length - 1].route.index) {
      match = matchPath({
        path: meta.relativePath,
        caseSensitive: meta.caseSensitive,
        end: false
      }, remainingPathname);
    }
    if (!match) {
      return null;
    }
    Object.assign(matchedParams, match.params);
    matches.push({
      // TODO: Can this as be avoided?
      params: matchedParams,
      pathname: joinPaths([matchedPathname, match.pathname]),
      pathnameBase: normalizePathname(joinPaths([matchedPathname, match.pathnameBase])),
      route
    });
    if (match.pathnameBase !== "/") {
      matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);
    }
  }
  return matches;
}
/**
 * Returns a path with params interpolated.
 *
 * @see https://reactrouter.com/v6/utils/generate-path
 */
function generatePath(originalPath, params) {
  if (params === void 0) {
    params = {};
  }
  let path = originalPath;
  if (path.endsWith("*") && path !== "*" && !path.endsWith("/*")) {
    warning(false, "Route path \"" + path + "\" will be treated as if it were " + ("\"" + path.replace(/\*$/, "/*") + "\" because the `*` character must ") + "always follow a `/` in the pattern. To get rid of this warning, " + ("please change the route path to \"" + path.replace(/\*$/, "/*") + "\"."));
    path = path.replace(/\*$/, "/*");
  }
  // ensure `/` is added at the beginning if the path is absolute
  const prefix = path.startsWith("/") ? "/" : "";
  const stringify = p => p == null ? "" : typeof p === "string" ? p : String(p);
  const segments = path.split(/\/+/).map((segment, index, array) => {
    const isLastSegment = index === array.length - 1;
    // only apply the splat if it's the last segment
    if (isLastSegment && segment === "*") {
      const star = "*";
      // Apply the splat
      return stringify(params[star]);
    }
    const keyMatch = segment.match(/^:([\w-]+)(\??)$/);
    if (keyMatch) {
      const [, key, optional] = keyMatch;
      let param = params[key];
      invariant(optional === "?" || param != null, "Missing \":" + key + "\" param");
      return stringify(param);
    }
    // Remove any optional markers from optional static segments
    return segment.replace(/\?$/g, "");
  })
  // Remove empty segments
  .filter(segment => !!segment);
  return prefix + segments.join("/");
}
/**
 * Performs pattern matching on a URL pathname and returns information about
 * the match.
 *
 * @see https://reactrouter.com/v6/utils/match-path
 */
function matchPath(pattern, pathname) {
  if (typeof pattern === "string") {
    pattern = {
      path: pattern,
      caseSensitive: false,
      end: true
    };
  }
  let [matcher, compiledParams] = compilePath(pattern.path, pattern.caseSensitive, pattern.end);
  let match = pathname.match(matcher);
  if (!match) return null;
  let matchedPathname = match[0];
  let pathnameBase = matchedPathname.replace(/(.)\/+$/, "$1");
  let captureGroups = match.slice(1);
  let params = compiledParams.reduce((memo, _ref, index) => {
    let {
      paramName,
      isOptional
    } = _ref;
    // We need to compute the pathnameBase here using the raw splat value
    // instead of using params["*"] later because it will be decoded then
    if (paramName === "*") {
      let splatValue = captureGroups[index] || "";
      pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\/+$/, "$1");
    }
    const value = captureGroups[index];
    if (isOptional && !value) {
      memo[paramName] = undefined;
    } else {
      memo[paramName] = (value || "").replace(/%2F/g, "/");
    }
    return memo;
  }, {});
  return {
    params,
    pathname: matchedPathname,
    pathnameBase,
    pattern
  };
}
function compilePath(path, caseSensitive, end) {
  if (caseSensitive === void 0) {
    caseSensitive = false;
  }
  if (end === void 0) {
    end = true;
  }
  warning(path === "*" || !path.endsWith("*") || path.endsWith("/*"), "Route path \"" + path + "\" will be treated as if it were " + ("\"" + path.replace(/\*$/, "/*") + "\" because the `*` character must ") + "always follow a `/` in the pattern. To get rid of this warning, " + ("please change the route path to \"" + path.replace(/\*$/, "/*") + "\"."));
  let params = [];
  let regexpSource = "^" + path.replace(/\/*\*?$/, "") // Ignore trailing / and /*, we'll handle it below
  .replace(/^\/*/, "/") // Make sure it has a leading /
  .replace(/[\\.*+^${}|()[\]]/g, "\\$&") // Escape special regex chars
  .replace(/\/:([\w-]+)(\?)?/g, (_, paramName, isOptional) => {
    params.push({
      paramName,
      isOptional: isOptional != null
    });
    return isOptional ? "/?([^\\/]+)?" : "/([^\\/]+)";
  });
  if (path.endsWith("*")) {
    params.push({
      paramName: "*"
    });
    regexpSource += path === "*" || path === "/*" ? "(.*)$" // Already matched the initial /, just match the rest
    : "(?:\\/(.+)|\\/*)$"; // Don't include the / in params["*"]
  } else if (end) {
    // When matching to the end, ignore trailing slashes
    regexpSource += "\\/*$";
  } else if (path !== "" && path !== "/") {
    // If our path is non-empty and contains anything beyond an initial slash,
    // then we have _some_ form of path in our regex, so we should expect to
    // match only if we find the end of this path segment.  Look for an optional
    // non-captured trailing slash (to match a portion of the URL) or the end
    // of the path (if we've matched to the end).  We used to do this with a
    // word boundary but that gives false positives on routes like
    // /user-preferences since `-` counts as a word boundary.
    regexpSource += "(?:(?=\\/|$))";
  } else ;
  let matcher = new RegExp(regexpSource, caseSensitive ? undefined : "i");
  return [matcher, params];
}
function decodePath(value) {
  try {
    return value.split("/").map(v => decodeURIComponent(v).replace(/\//g, "%2F")).join("/");
  } catch (error) {
    warning(false, "The URL path \"" + value + "\" could not be decoded because it is is a " + "malformed URL segment. This is probably due to a bad percent " + ("encoding (" + error + ")."));
    return value;
  }
}
/**
 * @private
 */
function stripBasename(pathname, basename) {
  if (basename === "/") return pathname;
  if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {
    return null;
  }
  // We want to leave trailing slash behavior in the user's control, so if they
  // specify a basename with a trailing slash, we should support it
  let startIndex = basename.endsWith("/") ? basename.length - 1 : basename.length;
  let nextChar = pathname.charAt(startIndex);
  if (nextChar && nextChar !== "/") {
    // pathname does not start with basename/
    return null;
  }
  return pathname.slice(startIndex) || "/";
}
/**
 * Returns a resolved path object relative to the given pathname.
 *
 * @see https://reactrouter.com/v6/utils/resolve-path
 */
function resolvePath(to, fromPathname) {
  if (fromPathname === void 0) {
    fromPathname = "/";
  }
  let {
    pathname: toPathname,
    search = "",
    hash = ""
  } = typeof to === "string" ? parsePath(to) : to;
  let pathname = toPathname ? toPathname.startsWith("/") ? toPathname : resolvePathname(toPathname, fromPathname) : fromPathname;
  return {
    pathname,
    search: normalizeSearch(search),
    hash: normalizeHash(hash)
  };
}
function resolvePathname(relativePath, fromPathname) {
  let segments = fromPathname.replace(/\/+$/, "").split("/");
  let relativeSegments = relativePath.split("/");
  relativeSegments.forEach(segment => {
    if (segment === "..") {
      // Keep the root "" segment so the pathname starts at /
      if (segments.length > 1) segments.pop();
    } else if (segment !== ".") {
      segments.push(segment);
    }
  });
  return segments.length > 1 ? segments.join("/") : "/";
}
function getInvalidPathError(char, field, dest, path) {
  return "Cannot include a '" + char + "' character in a manually specified " + ("`to." + field + "` field [" + JSON.stringify(path) + "].  Please separate it out to the ") + ("`to." + dest + "` field. Alternatively you may provide the full path as ") + "a string in <Link to=\"...\"> and the router will parse it for you.";
}
/**
 * @private
 *
 * When processing relative navigation we want to ignore ancestor routes that
 * do not contribute to the path, such that index/pathless layout routes don't
 * interfere.
 *
 * For example, when moving a route element into an index route and/or a
 * pathless layout route, relative link behavior contained within should stay
 * the same.  Both of the following examples should link back to the root:
 *
 *   <Route path="/">
 *     <Route path="accounts" element={<Link to=".."}>
 *   </Route>
 *
 *   <Route path="/">
 *     <Route path="accounts">
 *       <Route element={<AccountsLayout />}>       // <-- Does not contribute
 *         <Route index element={<Link to=".."} />  // <-- Does not contribute
 *       </Route
 *     </Route>
 *   </Route>
 */
function getPathContributingMatches(matches) {
  return matches.filter((match, index) => index === 0 || match.route.path && match.route.path.length > 0);
}
// Return the array of pathnames for the current route matches - used to
// generate the routePathnames input for resolveTo()
function getResolveToMatches(matches, v7_relativeSplatPath) {
  let pathMatches = getPathContributingMatches(matches);
  // When v7_relativeSplatPath is enabled, use the full pathname for the leaf
  // match so we include splat values for "." links.  See:
  // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329
  if (v7_relativeSplatPath) {
    return pathMatches.map((match, idx) => idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase);
  }
  return pathMatches.map(match => match.pathnameBase);
}
/**
 * @private
 */
function resolveTo(toArg, routePathnames, locationPathname, isPathRelative) {
  if (isPathRelative === void 0) {
    isPathRelative = false;
  }
  let to;
  if (typeof toArg === "string") {
    to = parsePath(toArg);
  } else {
    to = _extends({}, toArg);
    invariant(!to.pathname || !to.pathname.includes("?"), getInvalidPathError("?", "pathname", "search", to));
    invariant(!to.pathname || !to.pathname.includes("#"), getInvalidPathError("#", "pathname", "hash", to));
    invariant(!to.search || !to.search.includes("#"), getInvalidPathError("#", "search", "hash", to));
  }
  let isEmptyPath = toArg === "" || to.pathname === "";
  let toPathname = isEmptyPath ? "/" : to.pathname;
  let from;
  // Routing is relative to the current pathname if explicitly requested.
  //
  // If a pathname is explicitly provided in `to`, it should be relative to the
  // route context. This is explained in `Note on `<Link to>` values` in our
  // migration guide from v5 as a means of disambiguation between `to` values
  // that begin with `/` and those that do not. However, this is problematic for
  // `to` values that do not provide a pathname. `to` can simply be a search or
  // hash string, in which case we should assume that the navigation is relative
  // to the current location's pathname and *not* the route pathname.
  if (toPathname == null) {
    from = locationPathname;
  } else {
    let routePathnameIndex = routePathnames.length - 1;
    // With relative="route" (the default), each leading .. segment means
    // "go up one route" instead of "go up one URL segment".  This is a key
    // difference from how <a href> works and a major reason we call this a
    // "to" value instead of a "href".
    if (!isPathRelative && toPathname.startsWith("..")) {
      let toSegments = toPathname.split("/");
      while (toSegments[0] === "..") {
        toSegments.shift();
        routePathnameIndex -= 1;
      }
      to.pathname = toSegments.join("/");
    }
    from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : "/";
  }
  let path = resolvePath(to, from);
  // Ensure the pathname has a trailing slash if the original "to" had one
  let hasExplicitTrailingSlash = toPathname && toPathname !== "/" && toPathname.endsWith("/");
  // Or if this was a link to the current path which has a trailing slash
  let hasCurrentTrailingSlash = (isEmptyPath || toPathname === ".") && locationPathname.endsWith("/");
  if (!path.pathname.endsWith("/") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {
    path.pathname += "/";
  }
  return path;
}
/**
 * @private
 */
function getToPathname(to) {
  // Empty strings should be treated the same as / paths
  return to === "" || to.pathname === "" ? "/" : typeof to === "string" ? parsePath(to).pathname : to.pathname;
}
/**
 * @private
 */
const joinPaths = paths => paths.join("/").replace(/\/\/+/g, "/");
/**
 * @private
 */
const normalizePathname = pathname => pathname.replace(/\/+$/, "").replace(/^\/*/, "/");
/**
 * @private
 */
const normalizeSearch = search => !search || search === "?" ? "" : search.startsWith("?") ? search : "?" + search;
/**
 * @private
 */
const normalizeHash = hash => !hash || hash === "#" ? "" : hash.startsWith("#") ? hash : "#" + hash;
/**
 * This is a shortcut for creating `application/json` responses. Converts `data`
 * to JSON and sets the `Content-Type` header.
 *
 * @deprecated The `json` method is deprecated in favor of returning raw objects.
 * This method will be removed in v7.
 */
const json = function json(data, init) {
  if (init === void 0) {
    init = {};
  }
  let responseInit = typeof init === "number" ? {
    status: init
  } : init;
  let headers = new Headers(responseInit.headers);
  if (!headers.has("Content-Type")) {
    headers.set("Content-Type", "application/json; charset=utf-8");
  }
  return new Response(JSON.stringify(data), _extends({}, responseInit, {
    headers
  }));
};
class DataWithResponseInit {
  constructor(data, init) {
    this.type = "DataWithResponseInit";
    this.data = data;
    this.init = init || null;
  }
}
/**
 * Create "responses" that contain `status`/`headers` without forcing
 * serialization into an actual `Response` - used by Remix single fetch
 */
function data(data, init) {
  return new DataWithResponseInit(data, typeof init === "number" ? {
    status: init
  } : init);
}
class AbortedDeferredError extends Error {}
class DeferredData {
  constructor(data, responseInit) {
    this.pendingKeysSet = new Set();
    this.subscribers = new Set();
    this.deferredKeys = [];
    invariant(data && typeof data === "object" && !Array.isArray(data), "defer() only accepts plain objects");
    // Set up an AbortController + Promise we can race against to exit early
    // cancellation
    let reject;
    this.abortPromise = new Promise((_, r) => reject = r);
    this.controller = new AbortController();
    let onAbort = () => reject(new AbortedDeferredError("Deferred data aborted"));
    this.unlistenAbortSignal = () => this.controller.signal.removeEventListener("abort", onAbort);
    this.controller.signal.addEventListener("abort", onAbort);
    this.data = Object.entries(data).reduce((acc, _ref2) => {
      let [key, value] = _ref2;
      return Object.assign(acc, {
        [key]: this.trackPromise(key, value)
      });
    }, {});
    if (this.done) {
      // All incoming values were resolved
      this.unlistenAbortSignal();
    }
    this.init = responseInit;
  }
  trackPromise(key, value) {
    if (!(value instanceof Promise)) {
      return value;
    }
    this.deferredKeys.push(key);
    this.pendingKeysSet.add(key);
    // We store a little wrapper promise that will be extended with
    // _data/_error props upon resolve/reject
    let promise = Promise.race([value, this.abortPromise]).then(data => this.onSettle(promise, key, undefined, data), error => this.onSettle(promise, key, error));
    // Register rejection listeners to avoid uncaught promise rejections on
    // errors or aborted deferred values
    promise.catch(() => {});
    Object.defineProperty(promise, "_tracked", {
      get: () => true
    });
    return promise;
  }
  onSettle(promise, key, error, data) {
    if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {
      this.unlistenAbortSignal();
      Object.defineProperty(promise, "_error", {
        get: () => error
      });
      return Promise.reject(error);
    }
    this.pendingKeysSet.delete(key);
    if (this.done) {
      // Nothing left to abort!
      this.unlistenAbortSignal();
    }
    // If the promise was resolved/rejected with undefined, we'll throw an error as you
    // should always resolve with a value or null
    if (error === undefined && data === undefined) {
      let undefinedError = new Error("Deferred data for key \"" + key + "\" resolved/rejected with `undefined`, " + "you must resolve/reject with a value or `null`.");
      Object.defineProperty(promise, "_error", {
        get: () => undefinedError
      });
      this.emit(false, key);
      return Promise.reject(undefinedError);
    }
    if (data === undefined) {
      Object.defineProperty(promise, "_error", {
        get: () => error
      });
      this.emit(false, key);
      return Promise.reject(error);
    }
    Object.defineProperty(promise, "_data", {
      get: () => data
    });
    this.emit(false, key);
    return data;
  }
  emit(aborted, settledKey) {
    this.subscribers.forEach(subscriber => subscriber(aborted, settledKey));
  }
  subscribe(fn) {
    this.subscribers.add(fn);
    return () => this.subscribers.delete(fn);
  }
  cancel() {
    this.controller.abort();
    this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));
    this.emit(true);
  }
  async resolveData(signal) {
    let aborted = false;
    if (!this.done) {
      let onAbort = () => this.cancel();
      signal.addEventListener("abort", onAbort);
      aborted = await new Promise(resolve => {
        this.subscribe(aborted => {
          signal.removeEventListener("abort", onAbort);
          if (aborted || this.done) {
            resolve(aborted);
          }
        });
      });
    }
    return aborted;
  }
  get done() {
    return this.pendingKeysSet.size === 0;
  }
  get unwrappedData() {
    invariant(this.data !== null && this.done, "Can only unwrap data on initialized and settled deferreds");
    return Object.entries(this.data).reduce((acc, _ref3) => {
      let [key, value] = _ref3;
      return Object.assign(acc, {
        [key]: unwrapTrackedPromise(value)
      });
    }, {});
  }
  get pendingKeys() {
    return Array.from(this.pendingKeysSet);
  }
}
function isTrackedPromise(value) {
  return value instanceof Promise && value._tracked === true;
}
function unwrapTrackedPromise(value) {
  if (!isTrackedPromise(value)) {
    return value;
  }
  if (value._error) {
    throw value._error;
  }
  return value._data;
}
/**
 * @deprecated The `defer` method is deprecated in favor of returning raw
 * objects. This method will be removed in v7.
 */
const defer = function defer(data, init) {
  if (init === void 0) {
    init = {};
  }
  let responseInit = typeof init === "number" ? {
    status: init
  } : init;
  return new DeferredData(data, responseInit);
};
/**
 * A redirect response. Sets the status code and the `Location` header.
 * Defaults to "302 Found".
 */
const redirect = function redirect(url, init) {
  if (init === void 0) {
    init = 302;
  }
  let responseInit = init;
  if (typeof responseInit === "number") {
    responseInit = {
      status: responseInit
    };
  } else if (typeof responseInit.status === "undefined") {
    responseInit.status = 302;
  }
  let headers = new Headers(responseInit.headers);
  headers.set("Location", url);
  return new Response(null, _extends({}, responseInit, {
    headers
  }));
};
/**
 * A redirect response that will force a document reload to the new location.
 * Sets the status code and the `Location` header.
 * Defaults to "302 Found".
 */
const redirectDocument = (url, init) => {
  let response = redirect(url, init);
  response.headers.set("X-Remix-Reload-Document", "true");
  return response;
};
/**
 * A redirect response that will perform a `history.replaceState` instead of a
 * `history.pushState` for client-side navigation redirects.
 * Sets the status code and the `Location` header.
 * Defaults to "302 Found".
 */
const replace = (url, init) => {
  let response = redirect(url, init);
  response.headers.set("X-Remix-Replace", "true");
  return response;
};
/**
 * @private
 * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies
 *
 * We don't export the class for public use since it's an implementation
 * detail, but we export the interface above so folks can build their own
 * abstractions around instances via isRouteErrorResponse()
 */
class ErrorResponseImpl {
  constructor(status, statusText, data, internal) {
    if (internal === void 0) {
      internal = false;
    }
    this.status = status;
    this.statusText = statusText || "";
    this.internal = internal;
    if (data instanceof Error) {
      this.data = data.toString();
      this.error = data;
    } else {
      this.data = data;
    }
  }
}
/**
 * Check if the given error is an ErrorResponse generated from a 4xx/5xx
 * Response thrown from an action/loader
 */
function isRouteErrorResponse(error) {
  return error != null && typeof error.status === "number" && typeof error.statusText === "string" && typeof error.internal === "boolean" && "data" in error;
}

const validMutationMethodsArr = ["post", "put", "patch", "delete"];
const validMutationMethods = new Set(validMutationMethodsArr);
const validRequestMethodsArr = ["get", ...validMutationMethodsArr];
const validRequestMethods = new Set(validRequestMethodsArr);
const redirectStatusCodes = new Set([301, 302, 303, 307, 308]);
const redirectPreserveMethodStatusCodes = new Set([307, 308]);
const IDLE_NAVIGATION = {
  state: "idle",
  location: undefined,
  formMethod: undefined,
  formAction: undefined,
  formEncType: undefined,
  formData: undefined,
  json: undefined,
  text: undefined
};
const IDLE_FETCHER = {
  state: "idle",
  data: undefined,
  formMethod: undefined,
  formAction: undefined,
  formEncType: undefined,
  formData: undefined,
  json: undefined,
  text: undefined
};
const IDLE_BLOCKER = {
  state: "unblocked",
  proceed: undefined,
  reset: undefined,
  location: undefined
};
const ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;
const defaultMapRouteProperties = route => ({
  hasErrorBoundary: Boolean(route.hasErrorBoundary)
});
const TRANSITIONS_STORAGE_KEY = "remix-router-transitions";
//#endregion
////////////////////////////////////////////////////////////////////////////////
//#region createRouter
////////////////////////////////////////////////////////////////////////////////
/**
 * Create a router and listen to history POP navigations
 */
function createRouter(init) {
  const routerWindow = init.window ? init.window : typeof window !== "undefined" ? window : undefined;
  const isBrowser = typeof routerWindow !== "undefined" && typeof routerWindow.document !== "undefined" && typeof routerWindow.document.createElement !== "undefined";
  const isServer = !isBrowser;
  invariant(init.routes.length > 0, "You must provide a non-empty routes array to createRouter");
  let mapRouteProperties;
  if (init.mapRouteProperties) {
    mapRouteProperties = init.mapRouteProperties;
  } else if (init.detectErrorBoundary) {
    // If they are still using the deprecated version, wrap it with the new API
    let detectErrorBoundary = init.detectErrorBoundary;
    mapRouteProperties = route => ({
      hasErrorBoundary: detectErrorBoundary(route)
    });
  } else {
    mapRouteProperties = defaultMapRouteProperties;
  }
  // Routes keyed by ID
  let manifest = {};
  // Routes in tree format for matching
  let dataRoutes = convertRoutesToDataRoutes(init.routes, mapRouteProperties, undefined, manifest);
  let inFlightDataRoutes;
  let basename = init.basename || "/";
  let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;
  let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;
  // Config driven behavior flags
  let future = _extends({
    v7_fetcherPersist: false,
    v7_normalizeFormMethod: false,
    v7_partialHydration: false,
    v7_prependBasename: false,
    v7_relativeSplatPath: false,
    v7_skipActionErrorRevalidation: false
  }, init.future);
  // Cleanup function for history
  let unlistenHistory = null;
  // Externally-provided functions to call on all state changes
  let subscribers = new Set();
  // Externally-provided object to hold scroll restoration locations during routing
  let savedScrollPositions = null;
  // Externally-provided function to get scroll restoration keys
  let getScrollRestorationKey = null;
  // Externally-provided function to get current scroll position
  let getScrollPosition = null;
  // One-time flag to control the initial hydration scroll restoration.  Because
  // we don't get the saved positions from <ScrollRestoration /> until _after_
  // the initial render, we need to manually trigger a separate updateState to
  // send along the restoreScrollPosition
  // Set to true if we have `hydrationData` since we assume we were SSR'd and that
  // SSR did the initial scroll restoration.
  let initialScrollRestored = init.hydrationData != null;
  let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);
  let initialErrors = null;
  if (initialMatches == null && !patchRoutesOnNavigationImpl) {
    // If we do not match a user-provided-route, fall back to the root
    // to allow the error boundary to take over
    let error = getInternalRouterError(404, {
      pathname: init.history.location.pathname
    });
    let {
      matches,
      route
    } = getShortCircuitMatches(dataRoutes);
    initialMatches = matches;
    initialErrors = {
      [route.id]: error
    };
  }
  // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and
  // our initial match is a splat route, clear them out so we run through lazy
  // discovery on hydration in case there's a more accurate lazy route match.
  // In SSR apps (with `hydrationData`), we expect that the server will send
  // up the proper matched routes so we don't want to run lazy discovery on
  // initial hydration and want to hydrate into the splat route.
  if (initialMatches && !init.hydrationData) {
    let fogOfWar = checkFogOfWar(initialMatches, dataRoutes, init.history.location.pathname);
    if (fogOfWar.active) {
      initialMatches = null;
    }
  }
  let initialized;
  if (!initialMatches) {
    initialized = false;
    initialMatches = [];
    // If partial hydration and fog of war is enabled, we will be running
    // `patchRoutesOnNavigation` during hydration so include any partial matches as
    // the initial matches so we can properly render `HydrateFallback`'s
    if (future.v7_partialHydration) {
      let fogOfWar = checkFogOfWar(null, dataRoutes, init.history.location.pathname);
      if (fogOfWar.active && fogOfWar.matches) {
        initialMatches = fogOfWar.matches;
      }
    }
  } else if (initialMatches.some(m => m.route.lazy)) {
    // All initialMatches need to be loaded before we're ready.  If we have lazy
    // functions around still then we'll need to run them in initialize()
    initialized = false;
  } else if (!initialMatches.some(m => m.route.loader)) {
    // If we've got no loaders to run, then we're good to go
    initialized = true;
  } else if (future.v7_partialHydration) {
    // If partial hydration is enabled, we're initialized so long as we were
    // provided with hydrationData for every route with a loader, and no loaders
    // were marked for explicit hydration
    let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;
    let errors = init.hydrationData ? init.hydrationData.errors : null;
    // If errors exist, don't consider routes below the boundary
    if (errors) {
      let idx = initialMatches.findIndex(m => errors[m.route.id] !== undefined);
      initialized = initialMatches.slice(0, idx + 1).every(m => !shouldLoadRouteOnHydration(m.route, loaderData, errors));
    } else {
      initialized = initialMatches.every(m => !shouldLoadRouteOnHydration(m.route, loaderData, errors));
    }
  } else {
    // Without partial hydration - we're initialized if we were provided any
    // hydrationData - which is expected to be complete
    initialized = init.hydrationData != null;
  }
  let router;
  let state = {
    historyAction: init.history.action,
    location: init.history.location,
    matches: initialMatches,
    initialized,
    navigation: IDLE_NAVIGATION,
    // Don't restore on initial updateState() if we were SSR'd
    restoreScrollPosition: init.hydrationData != null ? false : null,
    preventScrollReset: false,
    revalidation: "idle",
    loaderData: init.hydrationData && init.hydrationData.loaderData || {},
    actionData: init.hydrationData && init.hydrationData.actionData || null,
    errors: init.hydrationData && init.hydrationData.errors || initialErrors,
    fetchers: new Map(),
    blockers: new Map()
  };
  // -- Stateful internal variables to manage navigations --
  // Current navigation in progress (to be committed in completeNavigation)
  let pendingAction = Action.Pop;
  // Should the current navigation prevent the scroll reset if scroll cannot
  // be restored?
  let pendingPreventScrollReset = false;
  // AbortController for the active navigation
  let pendingNavigationController;
  // Should the current navigation enable document.startViewTransition?
  let pendingViewTransitionEnabled = false;
  // Store applied view transitions so we can apply them on POP
  let appliedViewTransitions = new Map();
  // Cleanup function for persisting applied transitions to sessionStorage
  let removePageHideEventListener = null;
  // We use this to avoid touching history in completeNavigation if a
  // revalidation is entirely uninterrupted
  let isUninterruptedRevalidation = false;
  // Use this internal flag to force revalidation of all loaders:
  //  - submissions (completed or interrupted)
  //  - useRevalidator()
  //  - X-Remix-Revalidate (from redirect)
  let isRevalidationRequired = false;
  // Use this internal array to capture routes that require revalidation due
  // to a cancelled deferred on action submission
  let cancelledDeferredRoutes = [];
  // Use this internal array to capture fetcher loads that were cancelled by an
  // action navigation and require revalidation
  let cancelledFetcherLoads = new Set();
  // AbortControllers for any in-flight fetchers
  let fetchControllers = new Map();
  // Track loads based on the order in which they started
  let incrementingLoadId = 0;
  // Track the outstanding pending navigation data load to be compared against
  // the globally incrementing load when a fetcher load lands after a completed
  // navigation
  let pendingNavigationLoadId = -1;
  // Fetchers that triggered data reloads as a result of their actions
  let fetchReloadIds = new Map();
  // Fetchers that triggered redirect navigations
  let fetchRedirectIds = new Set();
  // Most recent href/match for fetcher.load calls for fetchers
  let fetchLoadMatches = new Map();
  // Ref-count mounted fetchers so we know when it's ok to clean them up
  let activeFetchers = new Map();
  // Fetchers that have requested a delete when using v7_fetcherPersist,
  // they'll be officially removed after they return to idle
  let deletedFetchers = new Set();
  // Store DeferredData instances for active route matches.  When a
  // route loader returns defer() we stick one in here.  Then, when a nested
  // promise resolves we update loaderData.  If a new navigation starts we
  // cancel active deferreds for eliminated routes.
  let activeDeferreds = new Map();
  // Store blocker functions in a separate Map outside of router state since
  // we don't need to update UI state if they change
  let blockerFunctions = new Map();
  // Flag to ignore the next history update, so we can revert the URL change on
  // a POP navigation that was blocked by the user without touching router state
  let unblockBlockerHistoryUpdate = undefined;
  // Initialize the router, all side effects should be kicked off from here.
  // Implemented as a Fluent API for ease of:
  //   let router = createRouter(init).initialize();
  function initialize() {
    // If history informs us of a POP navigation, start the navigation but do not update
    // state.  We'll update our own state once the navigation completes
    unlistenHistory = init.history.listen(_ref => {
      let {
        action: historyAction,
        location,
        delta
      } = _ref;
      // Ignore this event if it was just us resetting the URL from a
      // blocked POP navigation
      if (unblockBlockerHistoryUpdate) {
        unblockBlockerHistoryUpdate();
        unblockBlockerHistoryUpdate = undefined;
        return;
      }
      warning(blockerFunctions.size === 0 || delta != null, "You are trying to use a blocker on a POP navigation to a location " + "that was not created by @remix-run/router. This will fail silently in " + "production. This can happen if you are navigating outside the router " + "via `window.history.pushState`/`window.location.hash` instead of using " + "router navigation APIs.  This can also happen if you are using " + "createHashRouter and the user manually changes the URL.");
      let blockerKey = shouldBlockNavigation({
        currentLocation: state.location,
        nextLocation: location,
        historyAction
      });
      if (blockerKey && delta != null) {
        // Restore the URL to match the current UI, but don't update router state
        let nextHistoryUpdatePromise = new Promise(resolve => {
          unblockBlockerHistoryUpdate = resolve;
        });
        init.history.go(delta * -1);
        // Put the blocker into a blocked state
        updateBlocker(blockerKey, {
          state: "blocked",
          location,
          proceed() {
            updateBlocker(blockerKey, {
              state: "proceeding",
              proceed: undefined,
              reset: undefined,
              location
            });
            // Re-do the same POP navigation we just blocked, after the url
            // restoration is also complete.  See:
            // https://github.com/remix-run/react-router/issues/11613
            nextHistoryUpdatePromise.then(() => init.history.go(delta));
          },
          reset() {
            let blockers = new Map(state.blockers);
            blockers.set(blockerKey, IDLE_BLOCKER);
            updateState({
              blockers
            });
          }
        });
        return;
      }
      return startNavigation(historyAction, location);
    });
    if (isBrowser) {
      // FIXME: This feels gross.  How can we cleanup the lines between
      // scrollRestoration/appliedTransitions persistance?
      restoreAppliedTransitions(routerWindow, appliedViewTransitions);
      let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);
      routerWindow.addEventListener("pagehide", _saveAppliedTransitions);
      removePageHideEventListener = () => routerWindow.removeEventListener("pagehide", _saveAppliedTransitions);
    }
    // Kick off initial data load if needed.  Use Pop to avoid modifying history
    // Note we don't do any handling of lazy here.  For SPA's it'll get handled
    // in the normal navigation flow.  For SSR it's expected that lazy modules are
    // resolved prior to router creation since we can't go into a fallbackElement
    // UI for SSR'd apps
    if (!state.initialized) {
      startNavigation(Action.Pop, state.location, {
        initialHydration: true
      });
    }
    return router;
  }
  // Clean up a router and it's side effects
  function dispose() {
    if (unlistenHistory) {
      unlistenHistory();
    }
    if (removePageHideEventListener) {
      removePageHideEventListener();
    }
    subscribers.clear();
    pendingNavigationController && pendingNavigationController.abort();
    state.fetchers.forEach((_, key) => deleteFetcher(key));
    state.blockers.forEach((_, key) => deleteBlocker(key));
  }
  // Subscribe to state updates for the router
  function subscribe(fn) {
    subscribers.add(fn);
    return () => subscribers.delete(fn);
  }
  // Update our state and notify the calling context of the change
  function updateState(newState, opts) {
    if (opts === void 0) {
      opts = {};
    }
    state = _extends({}, state, newState);
    // Prep fetcher cleanup so we can tell the UI which fetcher data entries
    // can be removed
    let completedFetchers = [];
    let deletedFetchersKeys = [];
    if (future.v7_fetcherPersist) {
      state.fetchers.forEach((fetcher, key) => {
        if (fetcher.state === "idle") {
          if (deletedFetchers.has(key)) {
            // Unmounted from the UI and can be totally removed
            deletedFetchersKeys.push(key);
          } else {
            // Returned to idle but still mounted in the UI, so semi-remains for
            // revalidations and such
            completedFetchers.push(key);
          }
        }
      });
    }
    // Iterate over a local copy so that if flushSync is used and we end up
    // removing and adding a new subscriber due to the useCallback dependencies,
    // we don't get ourselves into a loop calling the new subscriber immediately
    [...subscribers].forEach(subscriber => subscriber(state, {
      deletedFetchers: deletedFetchersKeys,
      viewTransitionOpts: opts.viewTransitionOpts,
      flushSync: opts.flushSync === true
    }));
    // Remove idle fetchers from state since we only care about in-flight fetchers.
    if (future.v7_fetcherPersist) {
      completedFetchers.forEach(key => state.fetchers.delete(key));
      deletedFetchersKeys.forEach(key => deleteFetcher(key));
    }
  }
  // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION
  // and setting state.[historyAction/location/matches] to the new route.
  // - Location is a required param
  // - Navigation will always be set to IDLE_NAVIGATION
  // - Can pass any other state in newState
  function completeNavigation(location, newState, _temp) {
    var _location$state, _location$state2;
    let {
      flushSync
    } = _temp === void 0 ? {} : _temp;
    // Deduce if we're in a loading/actionReload state:
    // - We have committed actionData in the store
    // - The current navigation was a mutation submission
    // - We're past the submitting state and into the loading state
    // - The location being loaded is not the result of a redirect
    let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === "loading" && ((_location$state = location.state) == null ? void 0 : _location$state._isRedirect) !== true;
    let actionData;
    if (newState.actionData) {
      if (Object.keys(newState.actionData).length > 0) {
        actionData = newState.actionData;
      } else {
        // Empty actionData -> clear prior actionData due to an action error
        actionData = null;
      }
    } else if (isActionReload) {
      // Keep the current data if we're wrapping up the action reload
      actionData = state.actionData;
    } else {
      // Clear actionData on any other completed navigations
      actionData = null;
    }
    // Always preserve any existing loaderData from re-used routes
    let loaderData = newState.loaderData ? mergeLoaderData(state.loaderData, newState.loaderData, newState.matches || [], newState.errors) : state.loaderData;
    // On a successful navigation we can assume we got through all blockers
    // so we can start fresh
    let blockers = state.blockers;
    if (blockers.size > 0) {
      blockers = new Map(blockers);
      blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));
    }
    // Always respect the user flag.  Otherwise don't reset on mutation
    // submission navigations unless they redirect
    let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && ((_location$state2 = location.state) == null ? void 0 : _location$state2._isRedirect) !== true;
    // Commit any in-flight routes at the end of the HMR revalidation "navigation"
    if (inFlightDataRoutes) {
      dataRoutes = inFlightDataRoutes;
      inFlightDataRoutes = undefined;
    }
    if (isUninterruptedRevalidation) ; else if (pendingAction === Action.Pop) ; else if (pendingAction === Action.Push) {
      init.history.push(location, location.state);
    } else if (pendingAction === Action.Replace) {
      init.history.replace(location, location.state);
    }
    let viewTransitionOpts;
    // On POP, enable transitions if they were enabled on the original navigation
    if (pendingAction === Action.Pop) {
      // Forward takes precedence so they behave like the original navigation
      let priorPaths = appliedViewTransitions.get(state.location.pathname);
      if (priorPaths && priorPaths.has(location.pathname)) {
        viewTransitionOpts = {
          currentLocation: state.location,
          nextLocation: location
        };
      } else if (appliedViewTransitions.has(location.pathname)) {
        // If we don't have a previous forward nav, assume we're popping back to
        // the new location and enable if that location previously enabled
        viewTransitionOpts = {
          currentLocation: location,
          nextLocation: state.location
        };
      }
    } else if (pendingViewTransitionEnabled) {
      // Store the applied transition on PUSH/REPLACE
      let toPaths = appliedViewTransitions.get(state.location.pathname);
      if (toPaths) {
        toPaths.add(location.pathname);
      } else {
        toPaths = new Set([location.pathname]);
        appliedViewTransitions.set(state.location.pathname, toPaths);
      }
      viewTransitionOpts = {
        currentLocation: state.location,
        nextLocation: location
      };
    }
    updateState(_extends({}, newState, {
      actionData,
      loaderData,
      historyAction: pendingAction,
      location,
      initialized: true,
      navigation: IDLE_NAVIGATION,
      revalidation: "idle",
      restoreScrollPosition: getSavedScrollPosition(location, newState.matches || state.matches),
      preventScrollReset,
      blockers
    }), {
      viewTransitionOpts,
      flushSync: flushSync === true
    });
    // Reset stateful navigation vars
    pendingAction = Action.Pop;
    pendingPreventScrollReset = false;
    pendingViewTransitionEnabled = false;
    isUninterruptedRevalidation = false;
    isRevalidationRequired = false;
    cancelledDeferredRoutes = [];
  }
  // Trigger a navigation event, which can either be a numerical POP or a PUSH
  // replace with an optional submission
  async function navigate(to, opts) {
    if (typeof to === "number") {
      init.history.go(to);
      return;
    }
    let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, to, future.v7_relativeSplatPath, opts == null ? void 0 : opts.fromRouteId, opts == null ? void 0 : opts.relative);
    let {
      path,
      submission,
      error
    } = normalizeNavigateOptions(future.v7_normalizeFormMethod, false, normalizedPath, opts);
    let currentLocation = state.location;
    let nextLocation = createLocation(state.location, path, opts && opts.state);
    // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded
    // URL from window.location, so we need to encode it here so the behavior
    // remains the same as POP and non-data-router usages.  new URL() does all
    // the same encoding we'd get from a history.pushState/window.location read
    // without having to touch history
    nextLocation = _extends({}, nextLocation, init.history.encodeLocation(nextLocation));
    let userReplace = opts && opts.replace != null ? opts.replace : undefined;
    let historyAction = Action.Push;
    if (userReplace === true) {
      historyAction = Action.Replace;
    } else if (userReplace === false) ; else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {
      // By default on submissions to the current location we REPLACE so that
      // users don't have to double-click the back button to get to the prior
      // location.  If the user redirects to a different location from the
      // action/loader this will be ignored and the redirect will be a PUSH
      historyAction = Action.Replace;
    }
    let preventScrollReset = opts && "preventScrollReset" in opts ? opts.preventScrollReset === true : undefined;
    let flushSync = (opts && opts.flushSync) === true;
    let blockerKey = shouldBlockNavigation({
      currentLocation,
      nextLocation,
      historyAction
    });
    if (blockerKey) {
      // Put the blocker into a blocked state
      updateBlocker(blockerKey, {
        state: "blocked",
        location: nextLocation,
        proceed() {
          updateBlocker(blockerKey, {
            state: "proceeding",
            proceed: undefined,
            reset: undefined,
            location: nextLocation
          });
          // Send the same navigation through
          navigate(to, opts);
        },
        reset() {
          let blockers = new Map(state.blockers);
          blockers.set(blockerKey, IDLE_BLOCKER);
          updateState({
            blockers
          });
        }
      });
      return;
    }
    return await startNavigation(historyAction, nextLocation, {
      submission,
      // Send through the formData serialization error if we have one so we can
      // render at the right error boundary after we match routes
      pendingError: error,
      preventScrollReset,
      replace: opts && opts.replace,
      enableViewTransition: opts && opts.viewTransition,
      flushSync
    });
  }
  // Revalidate all current loaders.  If a navigation is in progress or if this
  // is interrupted by a navigation, allow this to "succeed" by calling all
  // loaders during the next loader round
  function revalidate() {
    interruptActiveLoads();
    updateState({
      revalidation: "loading"
    });
    // If we're currently submitting an action, we don't need to start a new
    // navigation, we'll just let the follow up loader execution call all loaders
    if (state.navigation.state === "submitting") {
      return;
    }
    // If we're currently in an idle state, start a new navigation for the current
    // action/location and mark it as uninterrupted, which will skip the history
    // update in completeNavigation
    if (state.navigation.state === "idle") {
      startNavigation(state.historyAction, state.location, {
        startUninterruptedRevalidation: true
      });
      return;
    }
    // Otherwise, if we're currently in a loading state, just start a new
    // navigation to the navigation.location but do not trigger an uninterrupted
    // revalidation so that history correctly updates once the navigation completes
    startNavigation(pendingAction || state.historyAction, state.navigation.location, {
      overrideNavigation: state.navigation,
      // Proxy through any rending view transition
      enableViewTransition: pendingViewTransitionEnabled === true
    });
  }
  // Start a navigation to the given action/location.  Can optionally provide a
  // overrideNavigation which will override the normalLoad in the case of a redirect
  // navigation
  async function startNavigation(historyAction, location, opts) {
    // Abort any in-progress navigations and start a new one. Unset any ongoing
    // uninterrupted revalidations unless told otherwise, since we want this
    // new navigation to update history normally
    pendingNavigationController && pendingNavigationController.abort();
    pendingNavigationController = null;
    pendingAction = historyAction;
    isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;
    // Save the current scroll position every time we start a new navigation,
    // and track whether we should reset scroll on completion
    saveScrollPosition(state.location, state.matches);
    pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;
    pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;
    let routesToUse = inFlightDataRoutes || dataRoutes;
    let loadingNavigation = opts && opts.overrideNavigation;
    let matches = matchRoutes(routesToUse, location, basename);
    let flushSync = (opts && opts.flushSync) === true;
    let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);
    if (fogOfWar.active && fogOfWar.matches) {
      matches = fogOfWar.matches;
    }
    // Short circuit with a 404 on the root error boundary if we match nothing
    if (!matches) {
      let {
        error,
        notFoundMatches,
        route
      } = handleNavigational404(location.pathname);
      completeNavigation(location, {
        matches: notFoundMatches,
        loaderData: {},
        errors: {
          [route.id]: error
        }
      }, {
        flushSync
      });
      return;
    }
    // Short circuit if it's only a hash change and not a revalidation or
    // mutation submission.
    //
    // Ignore on initial page loads because since the initial hydration will always
    // be "same hash".  For example, on /page#hash and submit a <Form method="post">
    // which will default to a navigation to /page
    if (state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {
      completeNavigation(location, {
        matches
      }, {
        flushSync
      });
      return;
    }
    // Create a controller/Request for this navigation
    pendingNavigationController = new AbortController();
    let request = createClientSideRequest(init.history, location, pendingNavigationController.signal, opts && opts.submission);
    let pendingActionResult;
    if (opts && opts.pendingError) {
      // If we have a pendingError, it means the user attempted a GET submission
      // with binary FormData so assign here and skip to handleLoaders.  That
      // way we handle calling loaders above the boundary etc.  It's not really
      // different from an actionError in that sense.
      pendingActionResult = [findNearestBoundary(matches).route.id, {
        type: ResultType.error,
        error: opts.pendingError
      }];
    } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {
      // Call action if we received an action submission
      let actionResult = await handleAction(request, location, opts.submission, matches, fogOfWar.active, {
        replace: opts.replace,
        flushSync
      });
      if (actionResult.shortCircuited) {
        return;
      }
      // If we received a 404 from handleAction, it's because we couldn't lazily
      // discover the destination route so we don't want to call loaders
      if (actionResult.pendingActionResult) {
        let [routeId, result] = actionResult.pendingActionResult;
        if (isErrorResult(result) && isRouteErrorResponse(result.error) && result.error.status === 404) {
          pendingNavigationController = null;
          completeNavigation(location, {
            matches: actionResult.matches,
            loaderData: {},
            errors: {
              [routeId]: result.error
            }
          });
          return;
        }
      }
      matches = actionResult.matches || matches;
      pendingActionResult = actionResult.pendingActionResult;
      loadingNavigation = getLoadingNavigation(location, opts.submission);
      flushSync = false;
      // No need to do fog of war matching again on loader execution
      fogOfWar.active = false;
      // Create a GET request for the loaders
      request = createClientSideRequest(init.history, request.url, request.signal);
    }
    // Call loaders
    let {
      shortCircuited,
      matches: updatedMatches,
      loaderData,
      errors
    } = await handleLoaders(request, location, matches, fogOfWar.active, loadingNavigation, opts && opts.submission, opts && opts.fetcherSubmission, opts && opts.replace, opts && opts.initialHydration === true, flushSync, pendingActionResult);
    if (shortCircuited) {
      return;
    }
    // Clean up now that the action/loaders have completed.  Don't clean up if
    // we short circuited because pendingNavigationController will have already
    // been assigned to a new controller for the next navigation
    pendingNavigationController = null;
    completeNavigation(location, _extends({
      matches: updatedMatches || matches
    }, getActionDataForCommit(pendingActionResult), {
      loaderData,
      errors
    }));
  }
  // Call the action matched by the leaf route for this navigation and handle
  // redirects/errors
  async function handleAction(request, location, submission, matches, isFogOfWar, opts) {
    if (opts === void 0) {
      opts = {};
    }
    interruptActiveLoads();
    // Put us in a submitting state
    let navigation = getSubmittingNavigation(location, submission);
    updateState({
      navigation
    }, {
      flushSync: opts.flushSync === true
    });
    if (isFogOfWar) {
      let discoverResult = await discoverRoutes(matches, location.pathname, request.signal);
      if (discoverResult.type === "aborted") {
        return {
          shortCircuited: true
        };
      } else if (discoverResult.type === "error") {
        let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;
        return {
          matches: discoverResult.partialMatches,
          pendingActionResult: [boundaryId, {
            type: ResultType.error,
            error: discoverResult.error
          }]
        };
      } else if (!discoverResult.matches) {
        let {
          notFoundMatches,
          error,
          route
        } = handleNavigational404(location.pathname);
        return {
          matches: notFoundMatches,
          pendingActionResult: [route.id, {
            type: ResultType.error,
            error
          }]
        };
      } else {
        matches = discoverResult.matches;
      }
    }
    // Call our action and get the result
    let result;
    let actionMatch = getTargetMatch(matches, location);
    if (!actionMatch.route.action && !actionMatch.route.lazy) {
      result = {
        type: ResultType.error,
        error: getInternalRouterError(405, {
          method: request.method,
          pathname: location.pathname,
          routeId: actionMatch.route.id
        })
      };
    } else {
      let results = await callDataStrategy("action", state, request, [actionMatch], matches, null);
      result = results[actionMatch.route.id];
      if (request.signal.aborted) {
        return {
          shortCircuited: true
        };
      }
    }
    if (isRedirectResult(result)) {
      let replace;
      if (opts && opts.replace != null) {
        replace = opts.replace;
      } else {
        // If the user didn't explicity indicate replace behavior, replace if
        // we redirected to the exact same location we're currently at to avoid
        // double back-buttons
        let location = normalizeRedirectLocation(result.response.headers.get("Location"), new URL(request.url), basename);
        replace = location === state.location.pathname + state.location.search;
      }
      await startRedirectNavigation(request, result, true, {
        submission,
        replace
      });
      return {
        shortCircuited: true
      };
    }
    if (isDeferredResult(result)) {
      throw getInternalRouterError(400, {
        type: "defer-action"
      });
    }
    if (isErrorResult(result)) {
      // Store off the pending error - we use it to determine which loaders
      // to call and will commit it when we complete the navigation
      let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);
      // By default, all submissions to the current location are REPLACE
      // navigations, but if the action threw an error that'll be rendered in
      // an errorElement, we fall back to PUSH so that the user can use the
      // back button to get back to the pre-submission form location to try
      // again
      if ((opts && opts.replace) !== true) {
        pendingAction = Action.Push;
      }
      return {
        matches,
        pendingActionResult: [boundaryMatch.route.id, result]
      };
    }
    return {
      matches,
      pendingActionResult: [actionMatch.route.id, result]
    };
  }
  // Call all applicable loaders for the given matches, handling redirects,
  // errors, etc.
  async function handleLoaders(request, location, matches, isFogOfWar, overrideNavigation, submission, fetcherSubmission, replace, initialHydration, flushSync, pendingActionResult) {
    // Figure out the right navigation we want to use for data loading
    let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);
    // If this was a redirect from an action we don't have a "submission" but
    // we have it on the loading navigation so use that if available
    let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);
    // If this is an uninterrupted revalidation, we remain in our current idle
    // state.  If not, we need to switch to our loading state and load data,
    // preserving any new action data or existing action data (in the case of
    // a revalidation interrupting an actionReload)
    // If we have partialHydration enabled, then don't update the state for the
    // initial data load since it's not a "navigation"
    let shouldUpdateNavigationState = !isUninterruptedRevalidation && (!future.v7_partialHydration || !initialHydration);
    // When fog of war is enabled, we enter our `loading` state earlier so we
    // can discover new routes during the `loading` state.  We skip this if
    // we've already run actions since we would have done our matching already.
    // If the children() function threw then, we want to proceed with the
    // partial matches it discovered.
    if (isFogOfWar) {
      if (shouldUpdateNavigationState) {
        let actionData = getUpdatedActionData(pendingActionResult);
        updateState(_extends({
          navigation: loadingNavigation
        }, actionData !== undefined ? {
          actionData
        } : {}), {
          flushSync
        });
      }
      let discoverResult = await discoverRoutes(matches, location.pathname, request.signal);
      if (discoverResult.type === "aborted") {
        return {
          shortCircuited: true
        };
      } else if (discoverResult.type === "error") {
        let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;
        return {
          matches: discoverResult.partialMatches,
          loaderData: {},
          errors: {
            [boundaryId]: discoverResult.error
          }
        };
      } else if (!discoverResult.matches) {
        let {
          error,
          notFoundMatches,
          route
        } = handleNavigational404(location.pathname);
        return {
          matches: notFoundMatches,
          loaderData: {},
          errors: {
            [route.id]: error
          }
        };
      } else {
        matches = discoverResult.matches;
      }
    }
    let routesToUse = inFlightDataRoutes || dataRoutes;
    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, activeSubmission, location, future.v7_partialHydration && initialHydration === true, future.v7_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult);
    // Cancel pending deferreds for no-longer-matched routes or routes we're
    // about to reload.  Note that if this is an action reload we would have
    // already cancelled all pending deferreds so this would be a no-op
    cancelActiveDeferreds(routeId => !(matches && matches.some(m => m.route.id === routeId)) || matchesToLoad && matchesToLoad.some(m => m.route.id === routeId));
    pendingNavigationLoadId = ++incrementingLoadId;
    // Short circuit if we have no loaders to run
    if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {
      let updatedFetchers = markFetchRedirectsDone();
      completeNavigation(location, _extends({
        matches,
        loaderData: {},
        // Commit pending error if we're short circuiting
        errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {
          [pendingActionResult[0]]: pendingActionResult[1].error
        } : null
      }, getActionDataForCommit(pendingActionResult), updatedFetchers ? {
        fetchers: new Map(state.fetchers)
      } : {}), {
        flushSync
      });
      return {
        shortCircuited: true
      };
    }
    if (shouldUpdateNavigationState) {
      let updates = {};
      if (!isFogOfWar) {
        // Only update navigation/actionNData if we didn't already do it above
        updates.navigation = loadingNavigation;
        let actionData = getUpdatedActionData(pendingActionResult);
        if (actionData !== undefined) {
          updates.actionData = actionData;
        }
      }
      if (revalidatingFetchers.length > 0) {
        updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);
      }
      updateState(updates, {
        flushSync
      });
    }
    revalidatingFetchers.forEach(rf => {
      abortFetcher(rf.key);
      if (rf.controller) {
        // Fetchers use an independent AbortController so that aborting a fetcher
        // (via deleteFetcher) does not abort the triggering navigation that
        // triggered the revalidation
        fetchControllers.set(rf.key, rf.controller);
      }
    });
    // Proxy navigation abort through to revalidation fetchers
    let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(f => abortFetcher(f.key));
    if (pendingNavigationController) {
      pendingNavigationController.signal.addEventListener("abort", abortPendingFetchRevalidations);
    }
    let {
      loaderResults,
      fetcherResults
    } = await callLoadersAndMaybeResolveData(state, matches, matchesToLoad, revalidatingFetchers, request);
    if (request.signal.aborted) {
      return {
        shortCircuited: true
      };
    }
    // Clean up _after_ loaders have completed.  Don't clean up if we short
    // circuited because fetchControllers would have been aborted and
    // reassigned to new controllers for the next navigation
    if (pendingNavigationController) {
      pendingNavigationController.signal.removeEventListener("abort", abortPendingFetchRevalidations);
    }
    revalidatingFetchers.forEach(rf => fetchControllers.delete(rf.key));
    // If any loaders returned a redirect Response, start a new REPLACE navigation
    let redirect = findRedirect(loaderResults);
    if (redirect) {
      await startRedirectNavigation(request, redirect.result, true, {
        replace
      });
      return {
        shortCircuited: true
      };
    }
    redirect = findRedirect(fetcherResults);
    if (redirect) {
      // If this redirect came from a fetcher make sure we mark it in
      // fetchRedirectIds so it doesn't get revalidated on the next set of
      // loader executions
      fetchRedirectIds.add(redirect.key);
      await startRedirectNavigation(request, redirect.result, true, {
        replace
      });
      return {
        shortCircuited: true
      };
    }
    // Process and commit output from loaders
    let {
      loaderData,
      errors
    } = processLoaderData(state, matches, loaderResults, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds);
    // Wire up subscribers to update loaderData as promises settle
    activeDeferreds.forEach((deferredData, routeId) => {
      deferredData.subscribe(aborted => {
        // Note: No need to updateState here since the TrackedPromise on
        // loaderData is stable across resolve/reject
        // Remove this instance if we were aborted or if promises have settled
        if (aborted || deferredData.done) {
          activeDeferreds.delete(routeId);
        }
      });
    });
    // Preserve SSR errors during partial hydration
    if (future.v7_partialHydration && initialHydration && state.errors) {
      errors = _extends({}, state.errors, errors);
    }
    let updatedFetchers = markFetchRedirectsDone();
    let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);
    let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;
    return _extends({
      matches,
      loaderData,
      errors
    }, shouldUpdateFetchers ? {
      fetchers: new Map(state.fetchers)
    } : {});
  }
  function getUpdatedActionData(pendingActionResult) {
    if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {
      // This is cast to `any` currently because `RouteData`uses any and it
      // would be a breaking change to use any.
      // TODO: v7 - change `RouteData` to use `unknown` instead of `any`
      return {
        [pendingActionResult[0]]: pendingActionResult[1].data
      };
    } else if (state.actionData) {
      if (Object.keys(state.actionData).length === 0) {
        return null;
      } else {
        return state.actionData;
      }
    }
  }
  function getUpdatedRevalidatingFetchers(revalidatingFetchers) {
    revalidatingFetchers.forEach(rf => {
      let fetcher = state.fetchers.get(rf.key);
      let revalidatingFetcher = getLoadingFetcher(undefined, fetcher ? fetcher.data : undefined);
      state.fetchers.set(rf.key, revalidatingFetcher);
    });
    return new Map(state.fetchers);
  }
  // Trigger a fetcher load/submit for the given fetcher key
  function fetch(key, routeId, href, opts) {
    if (isServer) {
      throw new Error("router.fetch() was called during the server render, but it shouldn't be. " + "You are likely calling a useFetcher() method in the body of your component. " + "Try moving it to a useEffect or a callback.");
    }
    abortFetcher(key);
    let flushSync = (opts && opts.flushSync) === true;
    let routesToUse = inFlightDataRoutes || dataRoutes;
    let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, href, future.v7_relativeSplatPath, routeId, opts == null ? void 0 : opts.relative);
    let matches = matchRoutes(routesToUse, normalizedPath, basename);
    let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);
    if (fogOfWar.active && fogOfWar.matches) {
      matches = fogOfWar.matches;
    }
    if (!matches) {
      setFetcherError(key, routeId, getInternalRouterError(404, {
        pathname: normalizedPath
      }), {
        flushSync
      });
      return;
    }
    let {
      path,
      submission,
      error
    } = normalizeNavigateOptions(future.v7_normalizeFormMethod, true, normalizedPath, opts);
    if (error) {
      setFetcherError(key, routeId, error, {
        flushSync
      });
      return;
    }
    let match = getTargetMatch(matches, path);
    let preventScrollReset = (opts && opts.preventScrollReset) === true;
    if (submission && isMutationMethod(submission.formMethod)) {
      handleFetcherAction(key, routeId, path, match, matches, fogOfWar.active, flushSync, preventScrollReset, submission);
      return;
    }
    // Store off the match so we can call it's shouldRevalidate on subsequent
    // revalidations
    fetchLoadMatches.set(key, {
      routeId,
      path
    });
    handleFetcherLoader(key, routeId, path, match, matches, fogOfWar.active, flushSync, preventScrollReset, submission);
  }
  // Call the action for the matched fetcher.submit(), and then handle redirects,
  // errors, and revalidation
  async function handleFetcherAction(key, routeId, path, match, requestMatches, isFogOfWar, flushSync, preventScrollReset, submission) {
    interruptActiveLoads();
    fetchLoadMatches.delete(key);
    function detectAndHandle405Error(m) {
      if (!m.route.action && !m.route.lazy) {
        let error = getInternalRouterError(405, {
          method: submission.formMethod,
          pathname: path,
          routeId: routeId
        });
        setFetcherError(key, routeId, error, {
          flushSync
        });
        return true;
      }
      return false;
    }
    if (!isFogOfWar && detectAndHandle405Error(match)) {
      return;
    }
    // Put this fetcher into it's submitting state
    let existingFetcher = state.fetchers.get(key);
    updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {
      flushSync
    });
    let abortController = new AbortController();
    let fetchRequest = createClientSideRequest(init.history, path, abortController.signal, submission);
    if (isFogOfWar) {
      let discoverResult = await discoverRoutes(requestMatches, path, fetchRequest.signal);
      if (discoverResult.type === "aborted") {
        return;
      } else if (discoverResult.type === "error") {
        setFetcherError(key, routeId, discoverResult.error, {
          flushSync
        });
        return;
      } else if (!discoverResult.matches) {
        setFetcherError(key, routeId, getInternalRouterError(404, {
          pathname: path
        }), {
          flushSync
        });
        return;
      } else {
        requestMatches = discoverResult.matches;
        match = getTargetMatch(requestMatches, path);
        if (detectAndHandle405Error(match)) {
          return;
        }
      }
    }
    // Call the action for the fetcher
    fetchControllers.set(key, abortController);
    let originatingLoadId = incrementingLoadId;
    let actionResults = await callDataStrategy("action", state, fetchRequest, [match], requestMatches, key);
    let actionResult = actionResults[match.route.id];
    if (fetchRequest.signal.aborted) {
      // We can delete this so long as we weren't aborted by our own fetcher
      // re-submit which would have put _new_ controller is in fetchControllers
      if (fetchControllers.get(key) === abortController) {
        fetchControllers.delete(key);
      }
      return;
    }
    // When using v7_fetcherPersist, we don't want errors bubbling up to the UI
    // or redirects processed for unmounted fetchers so we just revert them to
    // idle
    if (future.v7_fetcherPersist && deletedFetchers.has(key)) {
      if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {
        updateFetcherState(key, getDoneFetcher(undefined));
        return;
      }
      // Let SuccessResult's fall through for revalidation
    } else {
      if (isRedirectResult(actionResult)) {
        fetchControllers.delete(key);
        if (pendingNavigationLoadId > originatingLoadId) {
          // A new navigation was kicked off after our action started, so that
          // should take precedence over this redirect navigation.  We already
          // set isRevalidationRequired so all loaders for the new route should
          // fire unless opted out via shouldRevalidate
          updateFetcherState(key, getDoneFetcher(undefined));
          return;
        } else {
          fetchRedirectIds.add(key);
          updateFetcherState(key, getLoadingFetcher(submission));
          return startRedirectNavigation(fetchRequest, actionResult, false, {
            fetcherSubmission: submission,
            preventScrollReset
          });
        }
      }
      // Process any non-redirect errors thrown
      if (isErrorResult(actionResult)) {
        setFetcherError(key, routeId, actionResult.error);
        return;
      }
    }
    if (isDeferredResult(actionResult)) {
      throw getInternalRouterError(400, {
        type: "defer-action"
      });
    }
    // Start the data load for current matches, or the next location if we're
    // in the middle of a navigation
    let nextLocation = state.navigation.location || state.location;
    let revalidationRequest = createClientSideRequest(init.history, nextLocation, abortController.signal);
    let routesToUse = inFlightDataRoutes || dataRoutes;
    let matches = state.navigation.state !== "idle" ? matchRoutes(routesToUse, state.navigation.location, basename) : state.matches;
    invariant(matches, "Didn't find any matches after fetcher action");
    let loadId = ++incrementingLoadId;
    fetchReloadIds.set(key, loadId);
    let loadFetcher = getLoadingFetcher(submission, actionResult.data);
    state.fetchers.set(key, loadFetcher);
    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, submission, nextLocation, false, future.v7_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, [match.route.id, actionResult]);
    // Put all revalidating fetchers into the loading state, except for the
    // current fetcher which we want to keep in it's current loading state which
    // contains it's action submission info + action data
    revalidatingFetchers.filter(rf => rf.key !== key).forEach(rf => {
      let staleKey = rf.key;
      let existingFetcher = state.fetchers.get(staleKey);
      let revalidatingFetcher = getLoadingFetcher(undefined, existingFetcher ? existingFetcher.data : undefined);
      state.fetchers.set(staleKey, revalidatingFetcher);
      abortFetcher(staleKey);
      if (rf.controller) {
        fetchControllers.set(staleKey, rf.controller);
      }
    });
    updateState({
      fetchers: new Map(state.fetchers)
    });
    let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(rf => abortFetcher(rf.key));
    abortController.signal.addEventListener("abort", abortPendingFetchRevalidations);
    let {
      loaderResults,
      fetcherResults
    } = await callLoadersAndMaybeResolveData(state, matches, matchesToLoad, revalidatingFetchers, revalidationRequest);
    if (abortController.signal.aborted) {
      return;
    }
    abortController.signal.removeEventListener("abort", abortPendingFetchRevalidations);
    fetchReloadIds.delete(key);
    fetchControllers.delete(key);
    revalidatingFetchers.forEach(r => fetchControllers.delete(r.key));
    let redirect = findRedirect(loaderResults);
    if (redirect) {
      return startRedirectNavigation(revalidationRequest, redirect.result, false, {
        preventScrollReset
      });
    }
    redirect = findRedirect(fetcherResults);
    if (redirect) {
      // If this redirect came from a fetcher make sure we mark it in
      // fetchRedirectIds so it doesn't get revalidated on the next set of
      // loader executions
      fetchRedirectIds.add(redirect.key);
      return startRedirectNavigation(revalidationRequest, redirect.result, false, {
        preventScrollReset
      });
    }
    // Process and commit output from loaders
    let {
      loaderData,
      errors
    } = processLoaderData(state, matches, loaderResults, undefined, revalidatingFetchers, fetcherResults, activeDeferreds);
    // Since we let revalidations complete even if the submitting fetcher was
    // deleted, only put it back to idle if it hasn't been deleted
    if (state.fetchers.has(key)) {
      let doneFetcher = getDoneFetcher(actionResult.data);
      state.fetchers.set(key, doneFetcher);
    }
    abortStaleFetchLoads(loadId);
    // If we are currently in a navigation loading state and this fetcher is
    // more recent than the navigation, we want the newer data so abort the
    // navigation and complete it with the fetcher data
    if (state.navigation.state === "loading" && loadId > pendingNavigationLoadId) {
      invariant(pendingAction, "Expected pending action");
      pendingNavigationController && pendingNavigationController.abort();
      completeNavigation(state.navigation.location, {
        matches,
        loaderData,
        errors,
        fetchers: new Map(state.fetchers)
      });
    } else {
      // otherwise just update with the fetcher data, preserving any existing
      // loaderData for loaders that did not need to reload.  We have to
      // manually merge here since we aren't going through completeNavigation
      updateState({
        errors,
        loaderData: mergeLoaderData(state.loaderData, loaderData, matches, errors),
        fetchers: new Map(state.fetchers)
      });
      isRevalidationRequired = false;
    }
  }
  // Call the matched loader for fetcher.load(), handling redirects, errors, etc.
  async function handleFetcherLoader(key, routeId, path, match, matches, isFogOfWar, flushSync, preventScrollReset, submission) {
    let existingFetcher = state.fetchers.get(key);
    updateFetcherState(key, getLoadingFetcher(submission, existingFetcher ? existingFetcher.data : undefined), {
      flushSync
    });
    let abortController = new AbortController();
    let fetchRequest = createClientSideRequest(init.history, path, abortController.signal);
    if (isFogOfWar) {
      let discoverResult = await discoverRoutes(matches, path, fetchRequest.signal);
      if (discoverResult.type === "aborted") {
        return;
      } else if (discoverResult.type === "error") {
        setFetcherError(key, routeId, discoverResult.error, {
          flushSync
        });
        return;
      } else if (!discoverResult.matches) {
        setFetcherError(key, routeId, getInternalRouterError(404, {
          pathname: path
        }), {
          flushSync
        });
        return;
      } else {
        matches = discoverResult.matches;
        match = getTargetMatch(matches, path);
      }
    }
    // Call the loader for this fetcher route match
    fetchControllers.set(key, abortController);
    let originatingLoadId = incrementingLoadId;
    let results = await callDataStrategy("loader", state, fetchRequest, [match], matches, key);
    let result = results[match.route.id];
    // Deferred isn't supported for fetcher loads, await everything and treat it
    // as a normal load.  resolveDeferredData will return undefined if this
    // fetcher gets aborted, so we just leave result untouched and short circuit
    // below if that happens
    if (isDeferredResult(result)) {
      result = (await resolveDeferredData(result, fetchRequest.signal, true)) || result;
    }
    // We can delete this so long as we weren't aborted by our our own fetcher
    // re-load which would have put _new_ controller is in fetchControllers
    if (fetchControllers.get(key) === abortController) {
      fetchControllers.delete(key);
    }
    if (fetchRequest.signal.aborted) {
      return;
    }
    // We don't want errors bubbling up or redirects followed for unmounted
    // fetchers, so short circuit here if it was removed from the UI
    if (deletedFetchers.has(key)) {
      updateFetcherState(key, getDoneFetcher(undefined));
      return;
    }
    // If the loader threw a redirect Response, start a new REPLACE navigation
    if (isRedirectResult(result)) {
      if (pendingNavigationLoadId > originatingLoadId) {
        // A new navigation was kicked off after our loader started, so that
        // should take precedence over this redirect navigation
        updateFetcherState(key, getDoneFetcher(undefined));
        return;
      } else {
        fetchRedirectIds.add(key);
        await startRedirectNavigation(fetchRequest, result, false, {
          preventScrollReset
        });
        return;
      }
    }
    // Process any non-redirect errors thrown
    if (isErrorResult(result)) {
      setFetcherError(key, routeId, result.error);
      return;
    }
    invariant(!isDeferredResult(result), "Unhandled fetcher deferred data");
    // Put the fetcher back into an idle state
    updateFetcherState(key, getDoneFetcher(result.data));
  }
  /**
   * Utility function to handle redirects returned from an action or loader.
   * Normally, a redirect "replaces" the navigation that triggered it.  So, for
   * example:
   *
   *  - user is on /a
   *  - user clicks a link to /b
   *  - loader for /b redirects to /c
   *
   * In a non-JS app the browser would track the in-flight navigation to /b and
   * then replace it with /c when it encountered the redirect response.  In
   * the end it would only ever update the URL bar with /c.
   *
   * In client-side routing using pushState/replaceState, we aim to emulate
   * this behavior and we also do not update history until the end of the
   * navigation (including processed redirects).  This means that we never
   * actually touch history until we've processed redirects, so we just use
   * the history action from the original navigation (PUSH or REPLACE).
   */
  async function startRedirectNavigation(request, redirect, isNavigation, _temp2) {
    let {
      submission,
      fetcherSubmission,
      preventScrollReset,
      replace
    } = _temp2 === void 0 ? {} : _temp2;
    if (redirect.response.headers.has("X-Remix-Revalidate")) {
      isRevalidationRequired = true;
    }
    let location = redirect.response.headers.get("Location");
    invariant(location, "Expected a Location header on the redirect Response");
    location = normalizeRedirectLocation(location, new URL(request.url), basename);
    let redirectLocation = createLocation(state.location, location, {
      _isRedirect: true
    });
    if (isBrowser) {
      let isDocumentReload = false;
      if (redirect.response.headers.has("X-Remix-Reload-Document")) {
        // Hard reload if the response contained X-Remix-Reload-Document
        isDocumentReload = true;
      } else if (ABSOLUTE_URL_REGEX.test(location)) {
        const url = init.history.createURL(location);
        isDocumentReload =
        // Hard reload if it's an absolute URL to a new origin
        url.origin !== routerWindow.location.origin ||
        // Hard reload if it's an absolute URL that does not match our basename
        stripBasename(url.pathname, basename) == null;
      }
      if (isDocumentReload) {
        if (replace) {
          routerWindow.location.replace(location);
        } else {
          routerWindow.location.assign(location);
        }
        return;
      }
    }
    // There's no need to abort on redirects, since we don't detect the
    // redirect until the action/loaders have settled
    pendingNavigationController = null;
    let redirectHistoryAction = replace === true || redirect.response.headers.has("X-Remix-Replace") ? Action.Replace : Action.Push;
    // Use the incoming submission if provided, fallback on the active one in
    // state.navigation
    let {
      formMethod,
      formAction,
      formEncType
    } = state.navigation;
    if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {
      submission = getSubmissionFromNavigation(state.navigation);
    }
    // If this was a 307/308 submission we want to preserve the HTTP method and
    // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the
    // redirected location
    let activeSubmission = submission || fetcherSubmission;
    if (redirectPreserveMethodStatusCodes.has(redirect.response.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {
      await startNavigation(redirectHistoryAction, redirectLocation, {
        submission: _extends({}, activeSubmission, {
          formAction: location
        }),
        // Preserve these flags across redirects
        preventScrollReset: preventScrollReset || pendingPreventScrollReset,
        enableViewTransition: isNavigation ? pendingViewTransitionEnabled : undefined
      });
    } else {
      // If we have a navigation submission, we will preserve it through the
      // redirect navigation
      let overrideNavigation = getLoadingNavigation(redirectLocation, submission);
      await startNavigation(redirectHistoryAction, redirectLocation, {
        overrideNavigation,
        // Send fetcher submissions through for shouldRevalidate
        fetcherSubmission,
        // Preserve these flags across redirects
        preventScrollReset: preventScrollReset || pendingPreventScrollReset,
        enableViewTransition: isNavigation ? pendingViewTransitionEnabled : undefined
      });
    }
  }
  // Utility wrapper for calling dataStrategy client-side without having to
  // pass around the manifest, mapRouteProperties, etc.
  async function callDataStrategy(type, state, request, matchesToLoad, matches, fetcherKey) {
    let results;
    let dataResults = {};
    try {
      results = await callDataStrategyImpl(dataStrategyImpl, type, state, request, matchesToLoad, matches, fetcherKey, manifest, mapRouteProperties);
    } catch (e) {
      // If the outer dataStrategy method throws, just return the error for all
      // matches - and it'll naturally bubble to the root
      matchesToLoad.forEach(m => {
        dataResults[m.route.id] = {
          type: ResultType.error,
          error: e
        };
      });
      return dataResults;
    }
    for (let [routeId, result] of Object.entries(results)) {
      if (isRedirectDataStrategyResultResult(result)) {
        let response = result.result;
        dataResults[routeId] = {
          type: ResultType.redirect,
          response: normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename, future.v7_relativeSplatPath)
        };
      } else {
        dataResults[routeId] = await convertDataStrategyResultToDataResult(result);
      }
    }
    return dataResults;
  }
  async function callLoadersAndMaybeResolveData(state, matches, matchesToLoad, fetchersToLoad, request) {
    let currentMatches = state.matches;
    // Kick off loaders and fetchers in parallel
    let loaderResultsPromise = callDataStrategy("loader", state, request, matchesToLoad, matches, null);
    let fetcherResultsPromise = Promise.all(fetchersToLoad.map(async f => {
      if (f.matches && f.match && f.controller) {
        let results = await callDataStrategy("loader", state, createClientSideRequest(init.history, f.path, f.controller.signal), [f.match], f.matches, f.key);
        let result = results[f.match.route.id];
        // Fetcher results are keyed by fetcher key from here on out, not routeId
        return {
          [f.key]: result
        };
      } else {
        return Promise.resolve({
          [f.key]: {
            type: ResultType.error,
            error: getInternalRouterError(404, {
              pathname: f.path
            })
          }
        });
      }
    }));
    let loaderResults = await loaderResultsPromise;
    let fetcherResults = (await fetcherResultsPromise).reduce((acc, r) => Object.assign(acc, r), {});
    await Promise.all([resolveNavigationDeferredResults(matches, loaderResults, request.signal, currentMatches, state.loaderData), resolveFetcherDeferredResults(matches, fetcherResults, fetchersToLoad)]);
    return {
      loaderResults,
      fetcherResults
    };
  }
  function interruptActiveLoads() {
    // Every interruption triggers a revalidation
    isRevalidationRequired = true;
    // Cancel pending route-level deferreds and mark cancelled routes for
    // revalidation
    cancelledDeferredRoutes.push(...cancelActiveDeferreds());
    // Abort in-flight fetcher loads
    fetchLoadMatches.forEach((_, key) => {
      if (fetchControllers.has(key)) {
        cancelledFetcherLoads.add(key);
      }
      abortFetcher(key);
    });
  }
  function updateFetcherState(key, fetcher, opts) {
    if (opts === void 0) {
      opts = {};
    }
    state.fetchers.set(key, fetcher);
    updateState({
      fetchers: new Map(state.fetchers)
    }, {
      flushSync: (opts && opts.flushSync) === true
    });
  }
  function setFetcherError(key, routeId, error, opts) {
    if (opts === void 0) {
      opts = {};
    }
    let boundaryMatch = findNearestBoundary(state.matches, routeId);
    deleteFetcher(key);
    updateState({
      errors: {
        [boundaryMatch.route.id]: error
      },
      fetchers: new Map(state.fetchers)
    }, {
      flushSync: (opts && opts.flushSync) === true
    });
  }
  function getFetcher(key) {
    if (future.v7_fetcherPersist) {
      activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);
      // If this fetcher was previously marked for deletion, unmark it since we
      // have a new instance
      if (deletedFetchers.has(key)) {
        deletedFetchers.delete(key);
      }
    }
    return state.fetchers.get(key) || IDLE_FETCHER;
  }
  function deleteFetcher(key) {
    let fetcher = state.fetchers.get(key);
    // Don't abort the controller if this is a deletion of a fetcher.submit()
    // in it's loading phase since - we don't want to abort the corresponding
    // revalidation and want them to complete and land
    if (fetchControllers.has(key) && !(fetcher && fetcher.state === "loading" && fetchReloadIds.has(key))) {
      abortFetcher(key);
    }
    fetchLoadMatches.delete(key);
    fetchReloadIds.delete(key);
    fetchRedirectIds.delete(key);
    deletedFetchers.delete(key);
    cancelledFetcherLoads.delete(key);
    state.fetchers.delete(key);
  }
  function deleteFetcherAndUpdateState(key) {
    if (future.v7_fetcherPersist) {
      let count = (activeFetchers.get(key) || 0) - 1;
      if (count <= 0) {
        activeFetchers.delete(key);
        deletedFetchers.add(key);
      } else {
        activeFetchers.set(key, count);
      }
    } else {
      deleteFetcher(key);
    }
    updateState({
      fetchers: new Map(state.fetchers)
    });
  }
  function abortFetcher(key) {
    let controller = fetchControllers.get(key);
    if (controller) {
      controller.abort();
      fetchControllers.delete(key);
    }
  }
  function markFetchersDone(keys) {
    for (let key of keys) {
      let fetcher = getFetcher(key);
      let doneFetcher = getDoneFetcher(fetcher.data);
      state.fetchers.set(key, doneFetcher);
    }
  }
  function markFetchRedirectsDone() {
    let doneKeys = [];
    let updatedFetchers = false;
    for (let key of fetchRedirectIds) {
      let fetcher = state.fetchers.get(key);
      invariant(fetcher, "Expected fetcher: " + key);
      if (fetcher.state === "loading") {
        fetchRedirectIds.delete(key);
        doneKeys.push(key);
        updatedFetchers = true;
      }
    }
    markFetchersDone(doneKeys);
    return updatedFetchers;
  }
  function abortStaleFetchLoads(landedId) {
    let yeetedKeys = [];
    for (let [key, id] of fetchReloadIds) {
      if (id < landedId) {
        let fetcher = state.fetchers.get(key);
        invariant(fetcher, "Expected fetcher: " + key);
        if (fetcher.state === "loading") {
          abortFetcher(key);
          fetchReloadIds.delete(key);
          yeetedKeys.push(key);
        }
      }
    }
    markFetchersDone(yeetedKeys);
    return yeetedKeys.length > 0;
  }
  function getBlocker(key, fn) {
    let blocker = state.blockers.get(key) || IDLE_BLOCKER;
    if (blockerFunctions.get(key) !== fn) {
      blockerFunctions.set(key, fn);
    }
    return blocker;
  }
  function deleteBlocker(key) {
    state.blockers.delete(key);
    blockerFunctions.delete(key);
  }
  // Utility function to update blockers, ensuring valid state transitions
  function updateBlocker(key, newBlocker) {
    let blocker = state.blockers.get(key) || IDLE_BLOCKER;
    // Poor mans state machine :)
    // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM
    invariant(blocker.state === "unblocked" && newBlocker.state === "blocked" || blocker.state === "blocked" && newBlocker.state === "blocked" || blocker.state === "blocked" && newBlocker.state === "proceeding" || blocker.state === "blocked" && newBlocker.state === "unblocked" || blocker.state === "proceeding" && newBlocker.state === "unblocked", "Invalid blocker state transition: " + blocker.state + " -> " + newBlocker.state);
    let blockers = new Map(state.blockers);
    blockers.set(key, newBlocker);
    updateState({
      blockers
    });
  }
  function shouldBlockNavigation(_ref2) {
    let {
      currentLocation,
      nextLocation,
      historyAction
    } = _ref2;
    if (blockerFunctions.size === 0) {
      return;
    }
    // We ony support a single active blocker at the moment since we don't have
    // any compelling use cases for multi-blocker yet
    if (blockerFunctions.size > 1) {
      warning(false, "A router only supports one blocker at a time");
    }
    let entries = Array.from(blockerFunctions.entries());
    let [blockerKey, blockerFunction] = entries[entries.length - 1];
    let blocker = state.blockers.get(blockerKey);
    if (blocker && blocker.state === "proceeding") {
      // If the blocker is currently proceeding, we don't need to re-check
      // it and can let this navigation continue
      return;
    }
    // At this point, we know we're unblocked/blocked so we need to check the
    // user-provided blocker function
    if (blockerFunction({
      currentLocation,
      nextLocation,
      historyAction
    })) {
      return blockerKey;
    }
  }
  function handleNavigational404(pathname) {
    let error = getInternalRouterError(404, {
      pathname
    });
    let routesToUse = inFlightDataRoutes || dataRoutes;
    let {
      matches,
      route
    } = getShortCircuitMatches(routesToUse);
    // Cancel all pending deferred on 404s since we don't keep any routes
    cancelActiveDeferreds();
    return {
      notFoundMatches: matches,
      route,
      error
    };
  }
  function cancelActiveDeferreds(predicate) {
    let cancelledRouteIds = [];
    activeDeferreds.forEach((dfd, routeId) => {
      if (!predicate || predicate(routeId)) {
        // Cancel the deferred - but do not remove from activeDeferreds here -
        // we rely on the subscribers to do that so our tests can assert proper
        // cleanup via _internalActiveDeferreds
        dfd.cancel();
        cancelledRouteIds.push(routeId);
        activeDeferreds.delete(routeId);
      }
    });
    return cancelledRouteIds;
  }
  // Opt in to capturing and reporting scroll positions during navigations,
  // used by the <ScrollRestoration> component
  function enableScrollRestoration(positions, getPosition, getKey) {
    savedScrollPositions = positions;
    getScrollPosition = getPosition;
    getScrollRestorationKey = getKey || null;
    // Perform initial hydration scroll restoration, since we miss the boat on
    // the initial updateState() because we've not yet rendered <ScrollRestoration/>
    // and therefore have no savedScrollPositions available
    if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {
      initialScrollRestored = true;
      let y = getSavedScrollPosition(state.location, state.matches);
      if (y != null) {
        updateState({
          restoreScrollPosition: y
        });
      }
    }
    return () => {
      savedScrollPositions = null;
      getScrollPosition = null;
      getScrollRestorationKey = null;
    };
  }
  function getScrollKey(location, matches) {
    if (getScrollRestorationKey) {
      let key = getScrollRestorationKey(location, matches.map(m => convertRouteMatchToUiMatch(m, state.loaderData)));
      return key || location.key;
    }
    return location.key;
  }
  function saveScrollPosition(location, matches) {
    if (savedScrollPositions && getScrollPosition) {
      let key = getScrollKey(location, matches);
      savedScrollPositions[key] = getScrollPosition();
    }
  }
  function getSavedScrollPosition(location, matches) {
    if (savedScrollPositions) {
      let key = getScrollKey(location, matches);
      let y = savedScrollPositions[key];
      if (typeof y === "number") {
        return y;
      }
    }
    return null;
  }
  function checkFogOfWar(matches, routesToUse, pathname) {
    if (patchRoutesOnNavigationImpl) {
      if (!matches) {
        let fogMatches = matchRoutesImpl(routesToUse, pathname, basename, true);
        return {
          active: true,
          matches: fogMatches || []
        };
      } else {
        if (Object.keys(matches[0].params).length > 0) {
          // If we matched a dynamic param or a splat, it might only be because
          // we haven't yet discovered other routes that would match with a
          // higher score.  Call patchRoutesOnNavigation just to be sure
          let partialMatches = matchRoutesImpl(routesToUse, pathname, basename, true);
          return {
            active: true,
            matches: partialMatches
          };
        }
      }
    }
    return {
      active: false,
      matches: null
    };
  }
  async function discoverRoutes(matches, pathname, signal) {
    if (!patchRoutesOnNavigationImpl) {
      return {
        type: "success",
        matches
      };
    }
    let partialMatches = matches;
    while (true) {
      let isNonHMR = inFlightDataRoutes == null;
      let routesToUse = inFlightDataRoutes || dataRoutes;
      let localManifest = manifest;
      try {
        await patchRoutesOnNavigationImpl({
          path: pathname,
          matches: partialMatches,
          patch: (routeId, children) => {
            if (signal.aborted) return;
            patchRoutesImpl(routeId, children, routesToUse, localManifest, mapRouteProperties);
          }
        });
      } catch (e) {
        return {
          type: "error",
          error: e,
          partialMatches
        };
      } finally {
        // If we are not in the middle of an HMR revalidation and we changed the
        // routes, provide a new identity so when we `updateState` at the end of
        // this navigation/fetch `router.routes` will be a new identity and
        // trigger a re-run of memoized `router.routes` dependencies.
        // HMR will already update the identity and reflow when it lands
        // `inFlightDataRoutes` in `completeNavigation`
        if (isNonHMR && !signal.aborted) {
          dataRoutes = [...dataRoutes];
        }
      }
      if (signal.aborted) {
        return {
          type: "aborted"
        };
      }
      let newMatches = matchRoutes(routesToUse, pathname, basename);
      if (newMatches) {
        return {
          type: "success",
          matches: newMatches
        };
      }
      let newPartialMatches = matchRoutesImpl(routesToUse, pathname, basename, true);
      // Avoid loops if the second pass results in the same partial matches
      if (!newPartialMatches || partialMatches.length === newPartialMatches.length && partialMatches.every((m, i) => m.route.id === newPartialMatches[i].route.id)) {
        return {
          type: "success",
          matches: null
        };
      }
      partialMatches = newPartialMatches;
    }
  }
  function _internalSetRoutes(newRoutes) {
    manifest = {};
    inFlightDataRoutes = convertRoutesToDataRoutes(newRoutes, mapRouteProperties, undefined, manifest);
  }
  function patchRoutes(routeId, children) {
    let isNonHMR = inFlightDataRoutes == null;
    let routesToUse = inFlightDataRoutes || dataRoutes;
    patchRoutesImpl(routeId, children, routesToUse, manifest, mapRouteProperties);
    // If we are not in the middle of an HMR revalidation and we changed the
    // routes, provide a new identity and trigger a reflow via `updateState`
    // to re-run memoized `router.routes` dependencies.
    // HMR will already update the identity and reflow when it lands
    // `inFlightDataRoutes` in `completeNavigation`
    if (isNonHMR) {
      dataRoutes = [...dataRoutes];
      updateState({});
    }
  }
  router = {
    get basename() {
      return basename;
    },
    get future() {
      return future;
    },
    get state() {
      return state;
    },
    get routes() {
      return dataRoutes;
    },
    get window() {
      return routerWindow;
    },
    initialize,
    subscribe,
    enableScrollRestoration,
    navigate,
    fetch,
    revalidate,
    // Passthrough to history-aware createHref used by useHref so we get proper
    // hash-aware URLs in DOM paths
    createHref: to => init.history.createHref(to),
    encodeLocation: to => init.history.encodeLocation(to),
    getFetcher,
    deleteFetcher: deleteFetcherAndUpdateState,
    dispose,
    getBlocker,
    deleteBlocker,
    patchRoutes,
    _internalFetchControllers: fetchControllers,
    _internalActiveDeferreds: activeDeferreds,
    // TODO: Remove setRoutes, it's temporary to avoid dealing with
    // updating the tree while validating the update algorithm.
    _internalSetRoutes
  };
  return router;
}
//#endregion
////////////////////////////////////////////////////////////////////////////////
//#region createStaticHandler
////////////////////////////////////////////////////////////////////////////////
const UNSAFE_DEFERRED_SYMBOL = Symbol("deferred");
function createStaticHandler(routes, opts) {
  invariant(routes.length > 0, "You must provide a non-empty routes array to createStaticHandler");
  let manifest = {};
  let basename = (opts ? opts.basename : null) || "/";
  let mapRouteProperties;
  if (opts != null && opts.mapRouteProperties) {
    mapRouteProperties = opts.mapRouteProperties;
  } else if (opts != null && opts.detectErrorBoundary) {
    // If they are still using the deprecated version, wrap it with the new API
    let detectErrorBoundary = opts.detectErrorBoundary;
    mapRouteProperties = route => ({
      hasErrorBoundary: detectErrorBoundary(route)
    });
  } else {
    mapRouteProperties = defaultMapRouteProperties;
  }
  // Config driven behavior flags
  let future = _extends({
    v7_relativeSplatPath: false,
    v7_throwAbortReason: false
  }, opts ? opts.future : null);
  let dataRoutes = convertRoutesToDataRoutes(routes, mapRouteProperties, undefined, manifest);
  /**
   * The query() method is intended for document requests, in which we want to
   * call an optional action and potentially multiple loaders for all nested
   * routes.  It returns a StaticHandlerContext object, which is very similar
   * to the router state (location, loaderData, actionData, errors, etc.) and
   * also adds SSR-specific information such as the statusCode and headers
   * from action/loaders Responses.
   *
   * It _should_ never throw and should report all errors through the
   * returned context.errors object, properly associating errors to their error
   * boundary.  Additionally, it tracks _deepestRenderedBoundaryId which can be
   * used to emulate React error boundaries during SSr by performing a second
   * pass only down to the boundaryId.
   *
   * The one exception where we do not return a StaticHandlerContext is when a
   * redirect response is returned or thrown from any action/loader.  We
   * propagate that out and return the raw Response so the HTTP server can
   * return it directly.
   *
   * - `opts.requestContext` is an optional server context that will be passed
   *   to actions/loaders in the `context` parameter
   * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent
   *   the bubbling of errors which allows single-fetch-type implementations
   *   where the client will handle the bubbling and we may need to return data
   *   for the handling route
   */
  async function query(request, _temp3) {
    let {
      requestContext,
      skipLoaderErrorBubbling,
      dataStrategy
    } = _temp3 === void 0 ? {} : _temp3;
    let url = new URL(request.url);
    let method = request.method;
    let location = createLocation("", createPath(url), null, "default");
    let matches = matchRoutes(dataRoutes, location, basename);
    // SSR supports HEAD requests while SPA doesn't
    if (!isValidMethod(method) && method !== "HEAD") {
      let error = getInternalRouterError(405, {
        method
      });
      let {
        matches: methodNotAllowedMatches,
        route
      } = getShortCircuitMatches(dataRoutes);
      return {
        basename,
        location,
        matches: methodNotAllowedMatches,
        loaderData: {},
        actionData: null,
        errors: {
          [route.id]: error
        },
        statusCode: error.status,
        loaderHeaders: {},
        actionHeaders: {},
        activeDeferreds: null
      };
    } else if (!matches) {
      let error = getInternalRouterError(404, {
        pathname: location.pathname
      });
      let {
        matches: notFoundMatches,
        route
      } = getShortCircuitMatches(dataRoutes);
      return {
        basename,
        location,
        matches: notFoundMatches,
        loaderData: {},
        actionData: null,
        errors: {
          [route.id]: error
        },
        statusCode: error.status,
        loaderHeaders: {},
        actionHeaders: {},
        activeDeferreds: null
      };
    }
    let result = await queryImpl(request, location, matches, requestContext, dataStrategy || null, skipLoaderErrorBubbling === true, null);
    if (isResponse(result)) {
      return result;
    }
    // When returning StaticHandlerContext, we patch back in the location here
    // since we need it for React Context.  But this helps keep our submit and
    // loadRouteData operating on a Request instead of a Location
    return _extends({
      location,
      basename
    }, result);
  }
  /**
   * The queryRoute() method is intended for targeted route requests, either
   * for fetch ?_data requests or resource route requests.  In this case, we
   * are only ever calling a single action or loader, and we are returning the
   * returned value directly.  In most cases, this will be a Response returned
   * from the action/loader, but it may be a primitive or other value as well -
   * and in such cases the calling context should handle that accordingly.
   *
   * We do respect the throw/return differentiation, so if an action/loader
   * throws, then this method will throw the value.  This is important so we
   * can do proper boundary identification in Remix where a thrown Response
   * must go to the Catch Boundary but a returned Response is happy-path.
   *
   * One thing to note is that any Router-initiated Errors that make sense
   * to associate with a status code will be thrown as an ErrorResponse
   * instance which include the raw Error, such that the calling context can
   * serialize the error as they see fit while including the proper response
   * code.  Examples here are 404 and 405 errors that occur prior to reaching
   * any user-defined loaders.
   *
   * - `opts.routeId` allows you to specify the specific route handler to call.
   *   If not provided the handler will determine the proper route by matching
   *   against `request.url`
   * - `opts.requestContext` is an optional server context that will be passed
   *    to actions/loaders in the `context` parameter
   */
  async function queryRoute(request, _temp4) {
    let {
      routeId,
      requestContext,
      dataStrategy
    } = _temp4 === void 0 ? {} : _temp4;
    let url = new URL(request.url);
    let method = request.method;
    let location = createLocation("", createPath(url), null, "default");
    let matches = matchRoutes(dataRoutes, location, basename);
    // SSR supports HEAD requests while SPA doesn't
    if (!isValidMethod(method) && method !== "HEAD" && method !== "OPTIONS") {
      throw getInternalRouterError(405, {
        method
      });
    } else if (!matches) {
      throw getInternalRouterError(404, {
        pathname: location.pathname
      });
    }
    let match = routeId ? matches.find(m => m.route.id === routeId) : getTargetMatch(matches, location);
    if (routeId && !match) {
      throw getInternalRouterError(403, {
        pathname: location.pathname,
        routeId
      });
    } else if (!match) {
      // This should never hit I don't think?
      throw getInternalRouterError(404, {
        pathname: location.pathname
      });
    }
    let result = await queryImpl(request, location, matches, requestContext, dataStrategy || null, false, match);
    if (isResponse(result)) {
      return result;
    }
    let error = result.errors ? Object.values(result.errors)[0] : undefined;
    if (error !== undefined) {
      // If we got back result.errors, that means the loader/action threw
      // _something_ that wasn't a Response, but it's not guaranteed/required
      // to be an `instanceof Error` either, so we have to use throw here to
      // preserve the "error" state outside of queryImpl.
      throw error;
    }
    // Pick off the right state value to return
    if (result.actionData) {
      return Object.values(result.actionData)[0];
    }
    if (result.loaderData) {
      var _result$activeDeferre;
      let data = Object.values(result.loaderData)[0];
      if ((_result$activeDeferre = result.activeDeferreds) != null && _result$activeDeferre[match.route.id]) {
        data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];
      }
      return data;
    }
    return undefined;
  }
  async function queryImpl(request, location, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch) {
    invariant(request.signal, "query()/queryRoute() requests must contain an AbortController signal");
    try {
      if (isMutationMethod(request.method.toLowerCase())) {
        let result = await submit(request, matches, routeMatch || getTargetMatch(matches, location), requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch != null);
        return result;
      }
      let result = await loadRouteData(request, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch);
      return isResponse(result) ? result : _extends({}, result, {
        actionData: null,
        actionHeaders: {}
      });
    } catch (e) {
      // If the user threw/returned a Response in callLoaderOrAction for a
      // `queryRoute` call, we throw the `DataStrategyResult` to bail out early
      // and then return or throw the raw Response here accordingly
      if (isDataStrategyResult(e) && isResponse(e.result)) {
        if (e.type === ResultType.error) {
          throw e.result;
        }
        return e.result;
      }
      // Redirects are always returned since they don't propagate to catch
      // boundaries
      if (isRedirectResponse(e)) {
        return e;
      }
      throw e;
    }
  }
  async function submit(request, matches, actionMatch, requestContext, dataStrategy, skipLoaderErrorBubbling, isRouteRequest) {
    let result;
    if (!actionMatch.route.action && !actionMatch.route.lazy) {
      let error = getInternalRouterError(405, {
        method: request.method,
        pathname: new URL(request.url).pathname,
        routeId: actionMatch.route.id
      });
      if (isRouteRequest) {
        throw error;
      }
      result = {
        type: ResultType.error,
        error
      };
    } else {
      let results = await callDataStrategy("action", request, [actionMatch], matches, isRouteRequest, requestContext, dataStrategy);
      result = results[actionMatch.route.id];
      if (request.signal.aborted) {
        throwStaticHandlerAbortedError(request, isRouteRequest, future);
      }
    }
    if (isRedirectResult(result)) {
      // Uhhhh - this should never happen, we should always throw these from
      // callLoaderOrAction, but the type narrowing here keeps TS happy and we
      // can get back on the "throw all redirect responses" train here should
      // this ever happen :/
      throw new Response(null, {
        status: result.response.status,
        headers: {
          Location: result.response.headers.get("Location")
        }
      });
    }
    if (isDeferredResult(result)) {
      let error = getInternalRouterError(400, {
        type: "defer-action"
      });
      if (isRouteRequest) {
        throw error;
      }
      result = {
        type: ResultType.error,
        error
      };
    }
    if (isRouteRequest) {
      // Note: This should only be non-Response values if we get here, since
      // isRouteRequest should throw any Response received in callLoaderOrAction
      if (isErrorResult(result)) {
        throw result.error;
      }
      return {
        matches: [actionMatch],
        loaderData: {},
        actionData: {
          [actionMatch.route.id]: result.data
        },
        errors: null,
        // Note: statusCode + headers are unused here since queryRoute will
        // return the raw Response or value
        statusCode: 200,
        loaderHeaders: {},
        actionHeaders: {},
        activeDeferreds: null
      };
    }
    // Create a GET request for the loaders
    let loaderRequest = new Request(request.url, {
      headers: request.headers,
      redirect: request.redirect,
      signal: request.signal
    });
    if (isErrorResult(result)) {
      // Store off the pending error - we use it to determine which loaders
      // to call and will commit it when we complete the navigation
      let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);
      let context = await loadRouteData(loaderRequest, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, null, [boundaryMatch.route.id, result]);
      // action status codes take precedence over loader status codes
      return _extends({}, context, {
        statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,
        actionData: null,
        actionHeaders: _extends({}, result.headers ? {
          [actionMatch.route.id]: result.headers
        } : {})
      });
    }
    let context = await loadRouteData(loaderRequest, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, null);
    return _extends({}, context, {
      actionData: {
        [actionMatch.route.id]: result.data
      }
    }, result.statusCode ? {
      statusCode: result.statusCode
    } : {}, {
      actionHeaders: result.headers ? {
        [actionMatch.route.id]: result.headers
      } : {}
    });
  }
  async function loadRouteData(request, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch, pendingActionResult) {
    let isRouteRequest = routeMatch != null;
    // Short circuit if we have no loaders to run (queryRoute())
    if (isRouteRequest && !(routeMatch != null && routeMatch.route.loader) && !(routeMatch != null && routeMatch.route.lazy)) {
      throw getInternalRouterError(400, {
        method: request.method,
        pathname: new URL(request.url).pathname,
        routeId: routeMatch == null ? void 0 : routeMatch.route.id
      });
    }
    let requestMatches = routeMatch ? [routeMatch] : pendingActionResult && isErrorResult(pendingActionResult[1]) ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0]) : matches;
    let matchesToLoad = requestMatches.filter(m => m.route.loader || m.route.lazy);
    // Short circuit if we have no loaders to run (query())
    if (matchesToLoad.length === 0) {
      return {
        matches,
        // Add a null for all matched routes for proper revalidation on the client
        loaderData: matches.reduce((acc, m) => Object.assign(acc, {
          [m.route.id]: null
        }), {}),
        errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {
          [pendingActionResult[0]]: pendingActionResult[1].error
        } : null,
        statusCode: 200,
        loaderHeaders: {},
        activeDeferreds: null
      };
    }
    let results = await callDataStrategy("loader", request, matchesToLoad, matches, isRouteRequest, requestContext, dataStrategy);
    if (request.signal.aborted) {
      throwStaticHandlerAbortedError(request, isRouteRequest, future);
    }
    // Process and commit output from loaders
    let activeDeferreds = new Map();
    let context = processRouteLoaderData(matches, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling);
    // Add a null for any non-loader matches for proper revalidation on the client
    let executedLoaders = new Set(matchesToLoad.map(match => match.route.id));
    matches.forEach(match => {
      if (!executedLoaders.has(match.route.id)) {
        context.loaderData[match.route.id] = null;
      }
    });
    return _extends({}, context, {
      matches,
      activeDeferreds: activeDeferreds.size > 0 ? Object.fromEntries(activeDeferreds.entries()) : null
    });
  }
  // Utility wrapper for calling dataStrategy server-side without having to
  // pass around the manifest, mapRouteProperties, etc.
  async function callDataStrategy(type, request, matchesToLoad, matches, isRouteRequest, requestContext, dataStrategy) {
    let results = await callDataStrategyImpl(dataStrategy || defaultDataStrategy, type, null, request, matchesToLoad, matches, null, manifest, mapRouteProperties, requestContext);
    let dataResults = {};
    await Promise.all(matches.map(async match => {
      if (!(match.route.id in results)) {
        return;
      }
      let result = results[match.route.id];
      if (isRedirectDataStrategyResultResult(result)) {
        let response = result.result;
        // Throw redirects and let the server handle them with an HTTP redirect
        throw normalizeRelativeRoutingRedirectResponse(response, request, match.route.id, matches, basename, future.v7_relativeSplatPath);
      }
      if (isResponse(result.result) && isRouteRequest) {
        // For SSR single-route requests, we want to hand Responses back
        // directly without unwrapping
        throw result;
      }
      dataResults[match.route.id] = await convertDataStrategyResultToDataResult(result);
    }));
    return dataResults;
  }
  return {
    dataRoutes,
    query,
    queryRoute
  };
}
//#endregion
////////////////////////////////////////////////////////////////////////////////
//#region Helpers
////////////////////////////////////////////////////////////////////////////////
/**
 * Given an existing StaticHandlerContext and an error thrown at render time,
 * provide an updated StaticHandlerContext suitable for a second SSR render
 */
function getStaticContextFromError(routes, context, error) {
  let newContext = _extends({}, context, {
    statusCode: isRouteErrorResponse(error) ? error.status : 500,
    errors: {
      [context._deepestRenderedBoundaryId || routes[0].id]: error
    }
  });
  return newContext;
}
function throwStaticHandlerAbortedError(request, isRouteRequest, future) {
  if (future.v7_throwAbortReason && request.signal.reason !== undefined) {
    throw request.signal.reason;
  }
  let method = isRouteRequest ? "queryRoute" : "query";
  throw new Error(method + "() call aborted: " + request.method + " " + request.url);
}
function isSubmissionNavigation(opts) {
  return opts != null && ("formData" in opts && opts.formData != null || "body" in opts && opts.body !== undefined);
}
function normalizeTo(location, matches, basename, prependBasename, to, v7_relativeSplatPath, fromRouteId, relative) {
  let contextualMatches;
  let activeRouteMatch;
  if (fromRouteId) {
    // Grab matches up to the calling route so our route-relative logic is
    // relative to the correct source route
    contextualMatches = [];
    for (let match of matches) {
      contextualMatches.push(match);
      if (match.route.id === fromRouteId) {
        activeRouteMatch = match;
        break;
      }
    }
  } else {
    contextualMatches = matches;
    activeRouteMatch = matches[matches.length - 1];
  }
  // Resolve the relative path
  let path = resolveTo(to ? to : ".", getResolveToMatches(contextualMatches, v7_relativeSplatPath), stripBasename(location.pathname, basename) || location.pathname, relative === "path");
  // When `to` is not specified we inherit search/hash from the current
  // location, unlike when to="." and we just inherit the path.
  // See https://github.com/remix-run/remix/issues/927
  if (to == null) {
    path.search = location.search;
    path.hash = location.hash;
  }
  // Account for `?index` params when routing to the current location
  if ((to == null || to === "" || to === ".") && activeRouteMatch) {
    let nakedIndex = hasNakedIndexQuery(path.search);
    if (activeRouteMatch.route.index && !nakedIndex) {
      // Add one when we're targeting an index route
      path.search = path.search ? path.search.replace(/^\?/, "?index&") : "?index";
    } else if (!activeRouteMatch.route.index && nakedIndex) {
      // Remove existing ones when we're not
      let params = new URLSearchParams(path.search);
      let indexValues = params.getAll("index");
      params.delete("index");
      indexValues.filter(v => v).forEach(v => params.append("index", v));
      let qs = params.toString();
      path.search = qs ? "?" + qs : "";
    }
  }
  // If we're operating within a basename, prepend it to the pathname.  If
  // this is a root navigation, then just use the raw basename which allows
  // the basename to have full control over the presence of a trailing slash
  // on root actions
  if (prependBasename && basename !== "/") {
    path.pathname = path.pathname === "/" ? basename : joinPaths([basename, path.pathname]);
  }
  return createPath(path);
}
// Normalize navigation options by converting formMethod=GET formData objects to
// URLSearchParams so they behave identically to links with query params
function normalizeNavigateOptions(normalizeFormMethod, isFetcher, path, opts) {
  // Return location verbatim on non-submission navigations
  if (!opts || !isSubmissionNavigation(opts)) {
    return {
      path
    };
  }
  if (opts.formMethod && !isValidMethod(opts.formMethod)) {
    return {
      path,
      error: getInternalRouterError(405, {
        method: opts.formMethod
      })
    };
  }
  let getInvalidBodyError = () => ({
    path,
    error: getInternalRouterError(400, {
      type: "invalid-body"
    })
  });
  // Create a Submission on non-GET navigations
  let rawFormMethod = opts.formMethod || "get";
  let formMethod = normalizeFormMethod ? rawFormMethod.toUpperCase() : rawFormMethod.toLowerCase();
  let formAction = stripHashFromPath(path);
  if (opts.body !== undefined) {
    if (opts.formEncType === "text/plain") {
      // text only support POST/PUT/PATCH/DELETE submissions
      if (!isMutationMethod(formMethod)) {
        return getInvalidBodyError();
      }
      let text = typeof opts.body === "string" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ?
      // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data
      Array.from(opts.body.entries()).reduce((acc, _ref3) => {
        let [name, value] = _ref3;
        return "" + acc + name + "=" + value + "\n";
      }, "") : String(opts.body);
      return {
        path,
        submission: {
          formMethod,
          formAction,
          formEncType: opts.formEncType,
          formData: undefined,
          json: undefined,
          text
        }
      };
    } else if (opts.formEncType === "application/json") {
      // json only supports POST/PUT/PATCH/DELETE submissions
      if (!isMutationMethod(formMethod)) {
        return getInvalidBodyError();
      }
      try {
        let json = typeof opts.body === "string" ? JSON.parse(opts.body) : opts.body;
        return {
          path,
          submission: {
            formMethod,
            formAction,
            formEncType: opts.formEncType,
            formData: undefined,
            json,
            text: undefined
          }
        };
      } catch (e) {
        return getInvalidBodyError();
      }
    }
  }
  invariant(typeof FormData === "function", "FormData is not available in this environment");
  let searchParams;
  let formData;
  if (opts.formData) {
    searchParams = convertFormDataToSearchParams(opts.formData);
    formData = opts.formData;
  } else if (opts.body instanceof FormData) {
    searchParams = convertFormDataToSearchParams(opts.body);
    formData = opts.body;
  } else if (opts.body instanceof URLSearchParams) {
    searchParams = opts.body;
    formData = convertSearchParamsToFormData(searchParams);
  } else if (opts.body == null) {
    searchParams = new URLSearchParams();
    formData = new FormData();
  } else {
    try {
      searchParams = new URLSearchParams(opts.body);
      formData = convertSearchParamsToFormData(searchParams);
    } catch (e) {
      return getInvalidBodyError();
    }
  }
  let submission = {
    formMethod,
    formAction,
    formEncType: opts && opts.formEncType || "application/x-www-form-urlencoded",
    formData,
    json: undefined,
    text: undefined
  };
  if (isMutationMethod(submission.formMethod)) {
    return {
      path,
      submission
    };
  }
  // Flatten submission onto URLSearchParams for GET submissions
  let parsedPath = parsePath(path);
  // On GET navigation submissions we can drop the ?index param from the
  // resulting location since all loaders will run.  But fetcher GET submissions
  // only run a single loader so we need to preserve any incoming ?index params
  if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {
    searchParams.append("index", "");
  }
  parsedPath.search = "?" + searchParams;
  return {
    path: createPath(parsedPath),
    submission
  };
}
// Filter out all routes at/below any caught error as they aren't going to
// render so we don't need to load them
function getLoaderMatchesUntilBoundary(matches, boundaryId, includeBoundary) {
  if (includeBoundary === void 0) {
    includeBoundary = false;
  }
  let index = matches.findIndex(m => m.route.id === boundaryId);
  if (index >= 0) {
    return matches.slice(0, includeBoundary ? index + 1 : index);
  }
  return matches;
}
function getMatchesToLoad(history, state, matches, submission, location, initialHydration, skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult) {
  let actionResult = pendingActionResult ? isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : pendingActionResult[1].data : undefined;
  let currentUrl = history.createURL(state.location);
  let nextUrl = history.createURL(location);
  // Pick navigation matches that are net-new or qualify for revalidation
  let boundaryMatches = matches;
  if (initialHydration && state.errors) {
    // On initial hydration, only consider matches up to _and including_ the boundary.
    // This is inclusive to handle cases where a server loader ran successfully,
    // a child server loader bubbled up to this route, but this route has
    // `clientLoader.hydrate` so we want to still run the `clientLoader` so that
    // we have a complete version of `loaderData`
    boundaryMatches = getLoaderMatchesUntilBoundary(matches, Object.keys(state.errors)[0], true);
  } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {
    // If an action threw an error, we call loaders up to, but not including the
    // boundary
    boundaryMatches = getLoaderMatchesUntilBoundary(matches, pendingActionResult[0]);
  }
  // Don't revalidate loaders by default after action 4xx/5xx responses
  // when the flag is enabled.  They can still opt-into revalidation via
  // `shouldRevalidate` via `actionResult`
  let actionStatus = pendingActionResult ? pendingActionResult[1].statusCode : undefined;
  let shouldSkipRevalidation = skipActionErrorRevalidation && actionStatus && actionStatus >= 400;
  let navigationMatches = boundaryMatches.filter((match, index) => {
    let {
      route
    } = match;
    if (route.lazy) {
      // We haven't loaded this route yet so we don't know if it's got a loader!
      return true;
    }
    if (route.loader == null) {
      return false;
    }
    if (initialHydration) {
      return shouldLoadRouteOnHydration(route, state.loaderData, state.errors);
    }
    // Always call the loader on new route instances and pending defer cancellations
    if (isNewLoader(state.loaderData, state.matches[index], match) || cancelledDeferredRoutes.some(id => id === match.route.id)) {
      return true;
    }
    // This is the default implementation for when we revalidate.  If the route
    // provides it's own implementation, then we give them full control but
    // provide this value so they can leverage it if needed after they check
    // their own specific use cases
    let currentRouteMatch = state.matches[index];
    let nextRouteMatch = match;
    return shouldRevalidateLoader(match, _extends({
      currentUrl,
      currentParams: currentRouteMatch.params,
      nextUrl,
      nextParams: nextRouteMatch.params
    }, submission, {
      actionResult,
      actionStatus,
      defaultShouldRevalidate: shouldSkipRevalidation ? false :
      // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate
      isRevalidationRequired || currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search ||
      // Search params affect all loaders
      currentUrl.search !== nextUrl.search || isNewRouteInstance(currentRouteMatch, nextRouteMatch)
    }));
  });
  // Pick fetcher.loads that need to be revalidated
  let revalidatingFetchers = [];
  fetchLoadMatches.forEach((f, key) => {
    // Don't revalidate:
    //  - on initial hydration (shouldn't be any fetchers then anyway)
    //  - if fetcher won't be present in the subsequent render
    //    - no longer matches the URL (v7_fetcherPersist=false)
    //    - was unmounted but persisted due to v7_fetcherPersist=true
    if (initialHydration || !matches.some(m => m.route.id === f.routeId) || deletedFetchers.has(key)) {
      return;
    }
    let fetcherMatches = matchRoutes(routesToUse, f.path, basename);
    // If the fetcher path no longer matches, push it in with null matches so
    // we can trigger a 404 in callLoadersAndMaybeResolveData.  Note this is
    // currently only a use-case for Remix HMR where the route tree can change
    // at runtime and remove a route previously loaded via a fetcher
    if (!fetcherMatches) {
      revalidatingFetchers.push({
        key,
        routeId: f.routeId,
        path: f.path,
        matches: null,
        match: null,
        controller: null
      });
      return;
    }
    // Revalidating fetchers are decoupled from the route matches since they
    // load from a static href.  They revalidate based on explicit revalidation
    // (submission, useRevalidator, or X-Remix-Revalidate)
    let fetcher = state.fetchers.get(key);
    let fetcherMatch = getTargetMatch(fetcherMatches, f.path);
    let shouldRevalidate = false;
    if (fetchRedirectIds.has(key)) {
      // Never trigger a revalidation of an actively redirecting fetcher
      shouldRevalidate = false;
    } else if (cancelledFetcherLoads.has(key)) {
      // Always mark for revalidation if the fetcher was cancelled
      cancelledFetcherLoads.delete(key);
      shouldRevalidate = true;
    } else if (fetcher && fetcher.state !== "idle" && fetcher.data === undefined) {
      // If the fetcher hasn't ever completed loading yet, then this isn't a
      // revalidation, it would just be a brand new load if an explicit
      // revalidation is required
      shouldRevalidate = isRevalidationRequired;
    } else {
      // Otherwise fall back on any user-defined shouldRevalidate, defaulting
      // to explicit revalidations only
      shouldRevalidate = shouldRevalidateLoader(fetcherMatch, _extends({
        currentUrl,
        currentParams: state.matches[state.matches.length - 1].params,
        nextUrl,
        nextParams: matches[matches.length - 1].params
      }, submission, {
        actionResult,
        actionStatus,
        defaultShouldRevalidate: shouldSkipRevalidation ? false : isRevalidationRequired
      }));
    }
    if (shouldRevalidate) {
      revalidatingFetchers.push({
        key,
        routeId: f.routeId,
        path: f.path,
        matches: fetcherMatches,
        match: fetcherMatch,
        controller: new AbortController()
      });
    }
  });
  return [navigationMatches, revalidatingFetchers];
}
function shouldLoadRouteOnHydration(route, loaderData, errors) {
  // We dunno if we have a loader - gotta find out!
  if (route.lazy) {
    return true;
  }
  // No loader, nothing to initialize
  if (!route.loader) {
    return false;
  }
  let hasData = loaderData != null && loaderData[route.id] !== undefined;
  let hasError = errors != null && errors[route.id] !== undefined;
  // Don't run if we error'd during SSR
  if (!hasData && hasError) {
    return false;
  }
  // Explicitly opting-in to running on hydration
  if (typeof route.loader === "function" && route.loader.hydrate === true) {
    return true;
  }
  // Otherwise, run if we're not yet initialized with anything
  return !hasData && !hasError;
}
function isNewLoader(currentLoaderData, currentMatch, match) {
  let isNew =
  // [a] -> [a, b]
  !currentMatch ||
  // [a, b] -> [a, c]
  match.route.id !== currentMatch.route.id;
  // Handle the case that we don't have data for a re-used route, potentially
  // from a prior error or from a cancelled pending deferred
  let isMissingData = currentLoaderData[match.route.id] === undefined;
  // Always load if this is a net-new route or we don't yet have data
  return isNew || isMissingData;
}
function isNewRouteInstance(currentMatch, match) {
  let currentPath = currentMatch.route.path;
  return (
    // param change for this match, /users/123 -> /users/456
    currentMatch.pathname !== match.pathname ||
    // splat param changed, which is not present in match.path
    // e.g. /files/images/avatar.jpg -> files/finances.xls
    currentPath != null && currentPath.endsWith("*") && currentMatch.params["*"] !== match.params["*"]
  );
}
function shouldRevalidateLoader(loaderMatch, arg) {
  if (loaderMatch.route.shouldRevalidate) {
    let routeChoice = loaderMatch.route.shouldRevalidate(arg);
    if (typeof routeChoice === "boolean") {
      return routeChoice;
    }
  }
  return arg.defaultShouldRevalidate;
}
function patchRoutesImpl(routeId, children, routesToUse, manifest, mapRouteProperties) {
  var _childrenToPatch;
  let childrenToPatch;
  if (routeId) {
    let route = manifest[routeId];
    invariant(route, "No route found to patch children into: routeId = " + routeId);
    if (!route.children) {
      route.children = [];
    }
    childrenToPatch = route.children;
  } else {
    childrenToPatch = routesToUse;
  }
  // Don't patch in routes we already know about so that `patch` is idempotent
  // to simplify user-land code. This is useful because we re-call the
  // `patchRoutesOnNavigation` function for matched routes with params.
  let uniqueChildren = children.filter(newRoute => !childrenToPatch.some(existingRoute => isSameRoute(newRoute, existingRoute)));
  let newRoutes = convertRoutesToDataRoutes(uniqueChildren, mapRouteProperties, [routeId || "_", "patch", String(((_childrenToPatch = childrenToPatch) == null ? void 0 : _childrenToPatch.length) || "0")], manifest);
  childrenToPatch.push(...newRoutes);
}
function isSameRoute(newRoute, existingRoute) {
  // Most optimal check is by id
  if ("id" in newRoute && "id" in existingRoute && newRoute.id === existingRoute.id) {
    return true;
  }
  // Second is by pathing differences
  if (!(newRoute.index === existingRoute.index && newRoute.path === existingRoute.path && newRoute.caseSensitive === existingRoute.caseSensitive)) {
    return false;
  }
  // Pathless layout routes are trickier since we need to check children.
  // If they have no children then they're the same as far as we can tell
  if ((!newRoute.children || newRoute.children.length === 0) && (!existingRoute.children || existingRoute.children.length === 0)) {
    return true;
  }
  // Otherwise, we look to see if every child in the new route is already
  // represented in the existing route's children
  return newRoute.children.every((aChild, i) => {
    var _existingRoute$childr;
    return (_existingRoute$childr = existingRoute.children) == null ? void 0 : _existingRoute$childr.some(bChild => isSameRoute(aChild, bChild));
  });
}
/**
 * Execute route.lazy() methods to lazily load route modules (loader, action,
 * shouldRevalidate) and update the routeManifest in place which shares objects
 * with dataRoutes so those get updated as well.
 */
async function loadLazyRouteModule(route, mapRouteProperties, manifest) {
  if (!route.lazy) {
    return;
  }
  let lazyRoute = await route.lazy();
  // If the lazy route function was executed and removed by another parallel
  // call then we can return - first lazy() to finish wins because the return
  // value of lazy is expected to be static
  if (!route.lazy) {
    return;
  }
  let routeToUpdate = manifest[route.id];
  invariant(routeToUpdate, "No route found in manifest");
  // Update the route in place.  This should be safe because there's no way
  // we could yet be sitting on this route as we can't get there without
  // resolving lazy() first.
  //
  // This is different than the HMR "update" use-case where we may actively be
  // on the route being updated.  The main concern boils down to "does this
  // mutation affect any ongoing navigations or any current state.matches
  // values?".  If not, it should be safe to update in place.
  let routeUpdates = {};
  for (let lazyRouteProperty in lazyRoute) {
    let staticRouteValue = routeToUpdate[lazyRouteProperty];
    let isPropertyStaticallyDefined = staticRouteValue !== undefined &&
    // This property isn't static since it should always be updated based
    // on the route updates
    lazyRouteProperty !== "hasErrorBoundary";
    warning(!isPropertyStaticallyDefined, "Route \"" + routeToUpdate.id + "\" has a static property \"" + lazyRouteProperty + "\" " + "defined but its lazy function is also returning a value for this property. " + ("The lazy route property \"" + lazyRouteProperty + "\" will be ignored."));
    if (!isPropertyStaticallyDefined && !immutableRouteKeys.has(lazyRouteProperty)) {
      routeUpdates[lazyRouteProperty] = lazyRoute[lazyRouteProperty];
    }
  }
  // Mutate the route with the provided updates.  Do this first so we pass
  // the updated version to mapRouteProperties
  Object.assign(routeToUpdate, routeUpdates);
  // Mutate the `hasErrorBoundary` property on the route based on the route
  // updates and remove the `lazy` function so we don't resolve the lazy
  // route again.
  Object.assign(routeToUpdate, _extends({}, mapRouteProperties(routeToUpdate), {
    lazy: undefined
  }));
}
// Default implementation of `dataStrategy` which fetches all loaders in parallel
async function defaultDataStrategy(_ref4) {
  let {
    matches
  } = _ref4;
  let matchesToLoad = matches.filter(m => m.shouldLoad);
  let results = await Promise.all(matchesToLoad.map(m => m.resolve()));
  return results.reduce((acc, result, i) => Object.assign(acc, {
    [matchesToLoad[i].route.id]: result
  }), {});
}
async function callDataStrategyImpl(dataStrategyImpl, type, state, request, matchesToLoad, matches, fetcherKey, manifest, mapRouteProperties, requestContext) {
  let loadRouteDefinitionsPromises = matches.map(m => m.route.lazy ? loadLazyRouteModule(m.route, mapRouteProperties, manifest) : undefined);
  let dsMatches = matches.map((match, i) => {
    let loadRoutePromise = loadRouteDefinitionsPromises[i];
    let shouldLoad = matchesToLoad.some(m => m.route.id === match.route.id);
    // `resolve` encapsulates route.lazy(), executing the loader/action,
    // and mapping return values/thrown errors to a `DataStrategyResult`.  Users
    // can pass a callback to take fine-grained control over the execution
    // of the loader/action
    let resolve = async handlerOverride => {
      if (handlerOverride && request.method === "GET" && (match.route.lazy || match.route.loader)) {
        shouldLoad = true;
      }
      return shouldLoad ? callLoaderOrAction(type, request, match, loadRoutePromise, handlerOverride, requestContext) : Promise.resolve({
        type: ResultType.data,
        result: undefined
      });
    };
    return _extends({}, match, {
      shouldLoad,
      resolve
    });
  });
  // Send all matches here to allow for a middleware-type implementation.
  // handler will be a no-op for unneeded routes and we filter those results
  // back out below.
  let results = await dataStrategyImpl({
    matches: dsMatches,
    request,
    params: matches[0].params,
    fetcherKey,
    context: requestContext
  });
  // Wait for all routes to load here but 'swallow the error since we want
  // it to bubble up from the `await loadRoutePromise` in `callLoaderOrAction` -
  // called from `match.resolve()`
  try {
    await Promise.all(loadRouteDefinitionsPromises);
  } catch (e) {
    // No-op
  }
  return results;
}
// Default logic for calling a loader/action is the user has no specified a dataStrategy
async function callLoaderOrAction(type, request, match, loadRoutePromise, handlerOverride, staticContext) {
  let result;
  let onReject;
  let runHandler = handler => {
    // Setup a promise we can race against so that abort signals short circuit
    let reject;
    // This will never resolve so safe to type it as Promise<DataStrategyResult> to
    // satisfy the function return value
    let abortPromise = new Promise((_, r) => reject = r);
    onReject = () => reject();
    request.signal.addEventListener("abort", onReject);
    let actualHandler = ctx => {
      if (typeof handler !== "function") {
        return Promise.reject(new Error("You cannot call the handler for a route which defines a boolean " + ("\"" + type + "\" [routeId: " + match.route.id + "]")));
      }
      return handler({
        request,
        params: match.params,
        context: staticContext
      }, ...(ctx !== undefined ? [ctx] : []));
    };
    let handlerPromise = (async () => {
      try {
        let val = await (handlerOverride ? handlerOverride(ctx => actualHandler(ctx)) : actualHandler());
        return {
          type: "data",
          result: val
        };
      } catch (e) {
        return {
          type: "error",
          result: e
        };
      }
    })();
    return Promise.race([handlerPromise, abortPromise]);
  };
  try {
    let handler = match.route[type];
    // If we have a route.lazy promise, await that first
    if (loadRoutePromise) {
      if (handler) {
        // Run statically defined handler in parallel with lazy()
        let handlerError;
        let [value] = await Promise.all([
        // If the handler throws, don't let it immediately bubble out,
        // since we need to let the lazy() execution finish so we know if this
        // route has a boundary that can handle the error
        runHandler(handler).catch(e => {
          handlerError = e;
        }), loadRoutePromise]);
        if (handlerError !== undefined) {
          throw handlerError;
        }
        result = value;
      } else {
        // Load lazy route module, then run any returned handler
        await loadRoutePromise;
        handler = match.route[type];
        if (handler) {
          // Handler still runs even if we got interrupted to maintain consistency
          // with un-abortable behavior of handler execution on non-lazy or
          // previously-lazy-loaded routes
          result = await runHandler(handler);
        } else if (type === "action") {
          let url = new URL(request.url);
          let pathname = url.pathname + url.search;
          throw getInternalRouterError(405, {
            method: request.method,
            pathname,
            routeId: match.route.id
          });
        } else {
          // lazy() route has no loader to run.  Short circuit here so we don't
          // hit the invariant below that errors on returning undefined.
          return {
            type: ResultType.data,
            result: undefined
          };
        }
      }
    } else if (!handler) {
      let url = new URL(request.url);
      let pathname = url.pathname + url.search;
      throw getInternalRouterError(404, {
        pathname
      });
    } else {
      result = await runHandler(handler);
    }
    invariant(result.result !== undefined, "You defined " + (type === "action" ? "an action" : "a loader") + " for route " + ("\"" + match.route.id + "\" but didn't return anything from your `" + type + "` ") + "function. Please return a value or `null`.");
  } catch (e) {
    // We should already be catching and converting normal handler executions to
    // DataStrategyResults and returning them, so anything that throws here is an
    // unexpected error we still need to wrap
    return {
      type: ResultType.error,
      result: e
    };
  } finally {
    if (onReject) {
      request.signal.removeEventListener("abort", onReject);
    }
  }
  return result;
}
async function convertDataStrategyResultToDataResult(dataStrategyResult) {
  let {
    result,
    type
  } = dataStrategyResult;
  if (isResponse(result)) {
    let data;
    try {
      let contentType = result.headers.get("Content-Type");
      // Check between word boundaries instead of startsWith() due to the last
      // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type
      if (contentType && /\bapplication\/json\b/.test(contentType)) {
        if (result.body == null) {
          data = null;
        } else {
          data = await result.json();
        }
      } else {
        data = await result.text();
      }
    } catch (e) {
      return {
        type: ResultType.error,
        error: e
      };
    }
    if (type === ResultType.error) {
      return {
        type: ResultType.error,
        error: new ErrorResponseImpl(result.status, result.statusText, data),
        statusCode: result.status,
        headers: result.headers
      };
    }
    return {
      type: ResultType.data,
      data,
      statusCode: result.status,
      headers: result.headers
    };
  }
  if (type === ResultType.error) {
    if (isDataWithResponseInit(result)) {
      var _result$init2;
      if (result.data instanceof Error) {
        var _result$init;
        return {
          type: ResultType.error,
          error: result.data,
          statusCode: (_result$init = result.init) == null ? void 0 : _result$init.status
        };
      }
      // Convert thrown data() to ErrorResponse instances
      result = new ErrorResponseImpl(((_result$init2 = result.init) == null ? void 0 : _result$init2.status) || 500, undefined, result.data);
    }
    return {
      type: ResultType.error,
      error: result,
      statusCode: isRouteErrorResponse(result) ? result.status : undefined
    };
  }
  if (isDeferredData(result)) {
    var _result$init3, _result$init4;
    return {
      type: ResultType.deferred,
      deferredData: result,
      statusCode: (_result$init3 = result.init) == null ? void 0 : _result$init3.status,
      headers: ((_result$init4 = result.init) == null ? void 0 : _result$init4.headers) && new Headers(result.init.headers)
    };
  }
  if (isDataWithResponseInit(result)) {
    var _result$init5, _result$init6;
    return {
      type: ResultType.data,
      data: result.data,
      statusCode: (_result$init5 = result.init) == null ? void 0 : _result$init5.status,
      headers: (_result$init6 = result.init) != null && _result$init6.headers ? new Headers(result.init.headers) : undefined
    };
  }
  return {
    type: ResultType.data,
    data: result
  };
}
// Support relative routing in internal redirects
function normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename, v7_relativeSplatPath) {
  let location = response.headers.get("Location");
  invariant(location, "Redirects returned/thrown from loaders/actions must have a Location header");
  if (!ABSOLUTE_URL_REGEX.test(location)) {
    let trimmedMatches = matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1);
    location = normalizeTo(new URL(request.url), trimmedMatches, basename, true, location, v7_relativeSplatPath);
    response.headers.set("Location", location);
  }
  return response;
}
function normalizeRedirectLocation(location, currentUrl, basename) {
  if (ABSOLUTE_URL_REGEX.test(location)) {
    // Strip off the protocol+origin for same-origin + same-basename absolute redirects
    let normalizedLocation = location;
    let url = normalizedLocation.startsWith("//") ? new URL(currentUrl.protocol + normalizedLocation) : new URL(normalizedLocation);
    let isSameBasename = stripBasename(url.pathname, basename) != null;
    if (url.origin === currentUrl.origin && isSameBasename) {
      return url.pathname + url.search + url.hash;
    }
  }
  return location;
}
// Utility method for creating the Request instances for loaders/actions during
// client-side navigations and fetches.  During SSR we will always have a
// Request instance from the static handler (query/queryRoute)
function createClientSideRequest(history, location, signal, submission) {
  let url = history.createURL(stripHashFromPath(location)).toString();
  let init = {
    signal
  };
  if (submission && isMutationMethod(submission.formMethod)) {
    let {
      formMethod,
      formEncType
    } = submission;
    // Didn't think we needed this but it turns out unlike other methods, patch
    // won't be properly normalized to uppercase and results in a 405 error.
    // See: https://fetch.spec.whatwg.org/#concept-method
    init.method = formMethod.toUpperCase();
    if (formEncType === "application/json") {
      init.headers = new Headers({
        "Content-Type": formEncType
      });
      init.body = JSON.stringify(submission.json);
    } else if (formEncType === "text/plain") {
      // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)
      init.body = submission.text;
    } else if (formEncType === "application/x-www-form-urlencoded" && submission.formData) {
      // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)
      init.body = convertFormDataToSearchParams(submission.formData);
    } else {
      // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)
      init.body = submission.formData;
    }
  }
  return new Request(url, init);
}
function convertFormDataToSearchParams(formData) {
  let searchParams = new URLSearchParams();
  for (let [key, value] of formData.entries()) {
    // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs
    searchParams.append(key, typeof value === "string" ? value : value.name);
  }
  return searchParams;
}
function convertSearchParamsToFormData(searchParams) {
  let formData = new FormData();
  for (let [key, value] of searchParams.entries()) {
    formData.append(key, value);
  }
  return formData;
}
function processRouteLoaderData(matches, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling) {
  // Fill in loaderData/errors from our loaders
  let loaderData = {};
  let errors = null;
  let statusCode;
  let foundError = false;
  let loaderHeaders = {};
  let pendingError = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : undefined;
  // Process loader results into state.loaderData/state.errors
  matches.forEach(match => {
    if (!(match.route.id in results)) {
      return;
    }
    let id = match.route.id;
    let result = results[id];
    invariant(!isRedirectResult(result), "Cannot handle redirect results in processLoaderData");
    if (isErrorResult(result)) {
      let error = result.error;
      // If we have a pending action error, we report it at the highest-route
      // that throws a loader error, and then clear it out to indicate that
      // it was consumed
      if (pendingError !== undefined) {
        error = pendingError;
        pendingError = undefined;
      }
      errors = errors || {};
      if (skipLoaderErrorBubbling) {
        errors[id] = error;
      } else {
        // Look upwards from the matched route for the closest ancestor error
        // boundary, defaulting to the root match.  Prefer higher error values
        // if lower errors bubble to the same boundary
        let boundaryMatch = findNearestBoundary(matches, id);
        if (errors[boundaryMatch.route.id] == null) {
          errors[boundaryMatch.route.id] = error;
        }
      }
      // Clear our any prior loaderData for the throwing route
      loaderData[id] = undefined;
      // Once we find our first (highest) error, we set the status code and
      // prevent deeper status codes from overriding
      if (!foundError) {
        foundError = true;
        statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;
      }
      if (result.headers) {
        loaderHeaders[id] = result.headers;
      }
    } else {
      if (isDeferredResult(result)) {
        activeDeferreds.set(id, result.deferredData);
        loaderData[id] = result.deferredData.data;
        // Error status codes always override success status codes, but if all
        // loaders are successful we take the deepest status code.
        if (result.statusCode != null && result.statusCode !== 200 && !foundError) {
          statusCode = result.statusCode;
        }
        if (result.headers) {
          loaderHeaders[id] = result.headers;
        }
      } else {
        loaderData[id] = result.data;
        // Error status codes always override success status codes, but if all
        // loaders are successful we take the deepest status code.
        if (result.statusCode && result.statusCode !== 200 && !foundError) {
          statusCode = result.statusCode;
        }
        if (result.headers) {
          loaderHeaders[id] = result.headers;
        }
      }
    }
  });
  // If we didn't consume the pending action error (i.e., all loaders
  // resolved), then consume it here.  Also clear out any loaderData for the
  // throwing route
  if (pendingError !== undefined && pendingActionResult) {
    errors = {
      [pendingActionResult[0]]: pendingError
    };
    loaderData[pendingActionResult[0]] = undefined;
  }
  return {
    loaderData,
    errors,
    statusCode: statusCode || 200,
    loaderHeaders
  };
}
function processLoaderData(state, matches, results, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds) {
  let {
    loaderData,
    errors
  } = processRouteLoaderData(matches, results, pendingActionResult, activeDeferreds, false // This method is only called client side so we always want to bubble
  );
  // Process results from our revalidating fetchers
  revalidatingFetchers.forEach(rf => {
    let {
      key,
      match,
      controller
    } = rf;
    let result = fetcherResults[key];
    invariant(result, "Did not find corresponding fetcher result");
    // Process fetcher non-redirect errors
    if (controller && controller.signal.aborted) {
      // Nothing to do for aborted fetchers
      return;
    } else if (isErrorResult(result)) {
      let boundaryMatch = findNearestBoundary(state.matches, match == null ? void 0 : match.route.id);
      if (!(errors && errors[boundaryMatch.route.id])) {
        errors = _extends({}, errors, {
          [boundaryMatch.route.id]: result.error
        });
      }
      state.fetchers.delete(key);
    } else if (isRedirectResult(result)) {
      // Should never get here, redirects should get processed above, but we
      // keep this to type narrow to a success result in the else
      invariant(false, "Unhandled fetcher revalidation redirect");
    } else if (isDeferredResult(result)) {
      // Should never get here, deferred data should be awaited for fetchers
      // in resolveDeferredResults
      invariant(false, "Unhandled fetcher deferred data");
    } else {
      let doneFetcher = getDoneFetcher(result.data);
      state.fetchers.set(key, doneFetcher);
    }
  });
  return {
    loaderData,
    errors
  };
}
function mergeLoaderData(loaderData, newLoaderData, matches, errors) {
  let mergedLoaderData = _extends({}, newLoaderData);
  for (let match of matches) {
    let id = match.route.id;
    if (newLoaderData.hasOwnProperty(id)) {
      if (newLoaderData[id] !== undefined) {
        mergedLoaderData[id] = newLoaderData[id];
      }
    } else if (loaderData[id] !== undefined && match.route.loader) {
      // Preserve existing keys not included in newLoaderData and where a loader
      // wasn't removed by HMR
      mergedLoaderData[id] = loaderData[id];
    }
    if (errors && errors.hasOwnProperty(id)) {
      // Don't keep any loader data below the boundary
      break;
    }
  }
  return mergedLoaderData;
}
function getActionDataForCommit(pendingActionResult) {
  if (!pendingActionResult) {
    return {};
  }
  return isErrorResult(pendingActionResult[1]) ? {
    // Clear out prior actionData on errors
    actionData: {}
  } : {
    actionData: {
      [pendingActionResult[0]]: pendingActionResult[1].data
    }
  };
}
// Find the nearest error boundary, looking upwards from the leaf route (or the
// route specified by routeId) for the closest ancestor error boundary,
// defaulting to the root match
function findNearestBoundary(matches, routeId) {
  let eligibleMatches = routeId ? matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1) : [...matches];
  return eligibleMatches.reverse().find(m => m.route.hasErrorBoundary === true) || matches[0];
}
function getShortCircuitMatches(routes) {
  // Prefer a root layout route if present, otherwise shim in a route object
  let route = routes.length === 1 ? routes[0] : routes.find(r => r.index || !r.path || r.path === "/") || {
    id: "__shim-error-route__"
  };
  return {
    matches: [{
      params: {},
      pathname: "",
      pathnameBase: "",
      route
    }],
    route
  };
}
function getInternalRouterError(status, _temp5) {
  let {
    pathname,
    routeId,
    method,
    type,
    message
  } = _temp5 === void 0 ? {} : _temp5;
  let statusText = "Unknown Server Error";
  let errorMessage = "Unknown @remix-run/router error";
  if (status === 400) {
    statusText = "Bad Request";
    if (method && pathname && routeId) {
      errorMessage = "You made a " + method + " request to \"" + pathname + "\" but " + ("did not provide a `loader` for route \"" + routeId + "\", ") + "so there is no way to handle the request.";
    } else if (type === "defer-action") {
      errorMessage = "defer() is not supported in actions";
    } else if (type === "invalid-body") {
      errorMessage = "Unable to encode submission body";
    }
  } else if (status === 403) {
    statusText = "Forbidden";
    errorMessage = "Route \"" + routeId + "\" does not match URL \"" + pathname + "\"";
  } else if (status === 404) {
    statusText = "Not Found";
    errorMessage = "No route matches URL \"" + pathname + "\"";
  } else if (status === 405) {
    statusText = "Method Not Allowed";
    if (method && pathname && routeId) {
      errorMessage = "You made a " + method.toUpperCase() + " request to \"" + pathname + "\" but " + ("did not provide an `action` for route \"" + routeId + "\", ") + "so there is no way to handle the request.";
    } else if (method) {
      errorMessage = "Invalid request method \"" + method.toUpperCase() + "\"";
    }
  }
  return new ErrorResponseImpl(status || 500, statusText, new Error(errorMessage), true);
}
// Find any returned redirect errors, starting from the lowest match
function findRedirect(results) {
  let entries = Object.entries(results);
  for (let i = entries.length - 1; i >= 0; i--) {
    let [key, result] = entries[i];
    if (isRedirectResult(result)) {
      return {
        key,
        result
      };
    }
  }
}
function stripHashFromPath(path) {
  let parsedPath = typeof path === "string" ? parsePath(path) : path;
  return createPath(_extends({}, parsedPath, {
    hash: ""
  }));
}
function isHashChangeOnly(a, b) {
  if (a.pathname !== b.pathname || a.search !== b.search) {
    return false;
  }
  if (a.hash === "") {
    // /page -> /page#hash
    return b.hash !== "";
  } else if (a.hash === b.hash) {
    // /page#hash -> /page#hash
    return true;
  } else if (b.hash !== "") {
    // /page#hash -> /page#other
    return true;
  }
  // If the hash is removed the browser will re-perform a request to the server
  // /page#hash -> /page
  return false;
}
function isDataStrategyResult(result) {
  return result != null && typeof result === "object" && "type" in result && "result" in result && (result.type === ResultType.data || result.type === ResultType.error);
}
function isRedirectDataStrategyResultResult(result) {
  return isResponse(result.result) && redirectStatusCodes.has(result.result.status);
}
function isDeferredResult(result) {
  return result.type === ResultType.deferred;
}
function isErrorResult(result) {
  return result.type === ResultType.error;
}
function isRedirectResult(result) {
  return (result && result.type) === ResultType.redirect;
}
function isDataWithResponseInit(value) {
  return typeof value === "object" && value != null && "type" in value && "data" in value && "init" in value && value.type === "DataWithResponseInit";
}
function isDeferredData(value) {
  let deferred = value;
  return deferred && typeof deferred === "object" && typeof deferred.data === "object" && typeof deferred.subscribe === "function" && typeof deferred.cancel === "function" && typeof deferred.resolveData === "function";
}
function isResponse(value) {
  return value != null && typeof value.status === "number" && typeof value.statusText === "string" && typeof value.headers === "object" && typeof value.body !== "undefined";
}
function isRedirectResponse(result) {
  if (!isResponse(result)) {
    return false;
  }
  let status = result.status;
  let location = result.headers.get("Location");
  return status >= 300 && status <= 399 && location != null;
}
function isValidMethod(method) {
  return validRequestMethods.has(method.toLowerCase());
}
function isMutationMethod(method) {
  return validMutationMethods.has(method.toLowerCase());
}
async function resolveNavigationDeferredResults(matches, results, signal, currentMatches, currentLoaderData) {
  let entries = Object.entries(results);
  for (let index = 0; index < entries.length; index++) {
    let [routeId, result] = entries[index];
    let match = matches.find(m => (m == null ? void 0 : m.route.id) === routeId);
    // If we don't have a match, then we can have a deferred result to do
    // anything with.  This is for revalidating fetchers where the route was
    // removed during HMR
    if (!match) {
      continue;
    }
    let currentMatch = currentMatches.find(m => m.route.id === match.route.id);
    let isRevalidatingLoader = currentMatch != null && !isNewRouteInstance(currentMatch, match) && (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;
    if (isDeferredResult(result) && isRevalidatingLoader) {
      // Note: we do not have to touch activeDeferreds here since we race them
      // against the signal in resolveDeferredData and they'll get aborted
      // there if needed
      await resolveDeferredData(result, signal, false).then(result => {
        if (result) {
          results[routeId] = result;
        }
      });
    }
  }
}
async function resolveFetcherDeferredResults(matches, results, revalidatingFetchers) {
  for (let index = 0; index < revalidatingFetchers.length; index++) {
    let {
      key,
      routeId,
      controller
    } = revalidatingFetchers[index];
    let result = results[key];
    let match = matches.find(m => (m == null ? void 0 : m.route.id) === routeId);
    // If we don't have a match, then we can have a deferred result to do
    // anything with.  This is for revalidating fetchers where the route was
    // removed during HMR
    if (!match) {
      continue;
    }
    if (isDeferredResult(result)) {
      // Note: we do not have to touch activeDeferreds here since we race them
      // against the signal in resolveDeferredData and they'll get aborted
      // there if needed
      invariant(controller, "Expected an AbortController for revalidating fetcher deferred result");
      await resolveDeferredData(result, controller.signal, true).then(result => {
        if (result) {
          results[key] = result;
        }
      });
    }
  }
}
async function resolveDeferredData(result, signal, unwrap) {
  if (unwrap === void 0) {
    unwrap = false;
  }
  let aborted = await result.deferredData.resolveData(signal);
  if (aborted) {
    return;
  }
  if (unwrap) {
    try {
      return {
        type: ResultType.data,
        data: result.deferredData.unwrappedData
      };
    } catch (e) {
      // Handle any TrackedPromise._error values encountered while unwrapping
      return {
        type: ResultType.error,
        error: e
      };
    }
  }
  return {
    type: ResultType.data,
    data: result.deferredData.data
  };
}
function hasNakedIndexQuery(search) {
  return new URLSearchParams(search).getAll("index").some(v => v === "");
}
function getTargetMatch(matches, location) {
  let search = typeof location === "string" ? parsePath(location).search : location.search;
  if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || "")) {
    // Return the leaf index route when index is present
    return matches[matches.length - 1];
  }
  // Otherwise grab the deepest "path contributing" match (ignoring index and
  // pathless layout routes)
  let pathMatches = getPathContributingMatches(matches);
  return pathMatches[pathMatches.length - 1];
}
function getSubmissionFromNavigation(navigation) {
  let {
    formMethod,
    formAction,
    formEncType,
    text,
    formData,
    json
  } = navigation;
  if (!formMethod || !formAction || !formEncType) {
    return;
  }
  if (text != null) {
    return {
      formMethod,
      formAction,
      formEncType,
      formData: undefined,
      json: undefined,
      text
    };
  } else if (formData != null) {
    return {
      formMethod,
      formAction,
      formEncType,
      formData,
      json: undefined,
      text: undefined
    };
  } else if (json !== undefined) {
    return {
      formMethod,
      formAction,
      formEncType,
      formData: undefined,
      json,
      text: undefined
    };
  }
}
function getLoadingNavigation(location, submission) {
  if (submission) {
    let navigation = {
      state: "loading",
      location,
      formMethod: submission.formMethod,
      formAction: submission.formAction,
      formEncType: submission.formEncType,
      formData: submission.formData,
      json: submission.json,
      text: submission.text
    };
    return navigation;
  } else {
    let navigation = {
      state: "loading",
      location,
      formMethod: undefined,
      formAction: undefined,
      formEncType: undefined,
      formData: undefined,
      json: undefined,
      text: undefined
    };
    return navigation;
  }
}
function getSubmittingNavigation(location, submission) {
  let navigation = {
    state: "submitting",
    location,
    formMethod: submission.formMethod,
    formAction: submission.formAction,
    formEncType: submission.formEncType,
    formData: submission.formData,
    json: submission.json,
    text: submission.text
  };
  return navigation;
}
function getLoadingFetcher(submission, data) {
  if (submission) {
    let fetcher = {
      state: "loading",
      formMethod: submission.formMethod,
      formAction: submission.formAction,
      formEncType: submission.formEncType,
      formData: submission.formData,
      json: submission.json,
      text: submission.text,
      data
    };
    return fetcher;
  } else {
    let fetcher = {
      state: "loading",
      formMethod: undefined,
      formAction: undefined,
      formEncType: undefined,
      formData: undefined,
      json: undefined,
      text: undefined,
      data
    };
    return fetcher;
  }
}
function getSubmittingFetcher(submission, existingFetcher) {
  let fetcher = {
    state: "submitting",
    formMethod: submission.formMethod,
    formAction: submission.formAction,
    formEncType: submission.formEncType,
    formData: submission.formData,
    json: submission.json,
    text: submission.text,
    data: existingFetcher ? existingFetcher.data : undefined
  };
  return fetcher;
}
function getDoneFetcher(data) {
  let fetcher = {
    state: "idle",
    formMethod: undefined,
    formAction: undefined,
    formEncType: undefined,
    formData: undefined,
    json: undefined,
    text: undefined,
    data
  };
  return fetcher;
}
function restoreAppliedTransitions(_window, transitions) {
  try {
    let sessionPositions = _window.sessionStorage.getItem(TRANSITIONS_STORAGE_KEY);
    if (sessionPositions) {
      let json = JSON.parse(sessionPositions);
      for (let [k, v] of Object.entries(json || {})) {
        if (v && Array.isArray(v)) {
          transitions.set(k, new Set(v || []));
        }
      }
    }
  } catch (e) {
    // no-op, use default empty object
  }
}
function persistAppliedTransitions(_window, transitions) {
  if (transitions.size > 0) {
    let json = {};
    for (let [k, v] of transitions) {
      json[k] = [...v];
    }
    try {
      _window.sessionStorage.setItem(TRANSITIONS_STORAGE_KEY, JSON.stringify(json));
    } catch (error) {
      warning(false, "Failed to save applied view transitions in sessionStorage (" + error + ").");
    }
  }
}
//#endregion


//# sourceMappingURL=router.js.map


/***/ }),

/***/ "./assets/components/ProButton.js":
/*!****************************************!*\
  !*** ./assets/components/ProButton.js ***!
  \****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/api-fetch */ "@wordpress/api-fetch");
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dompurify */ "./node_modules/dompurify/dist/purify.es.mjs");
/* harmony import */ var _astra_utils_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @astra-utils/helpers */ "./assets/utils/helpers.js");






const ProButton = ({
  className,
  isLink = false,
  url = astra_admin.upgrade_url,
  children = (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_5__.getAstraProTitle)(),
  disableSpinner = false
}) => {
  const onGetAstraPro = e => {
    e.preventDefault();
    e.stopPropagation();
    if (!astra_admin.pro_installed_status) {
      window.open(url, "_blank");
    }
    e.target.innerHTML = dompurify__WEBPACK_IMPORTED_MODULE_4__["default"].sanitize((disableSpinner ? "" : (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_5__.getSpinner)()) + astra_admin.plugin_activating_text);
    e.target.disabled = true;
    const formData = new window.FormData();
    formData.append("action", "astra_recommended_plugin_activate");
    formData.append("security", astra_admin.plugin_manager_nonce);
    formData.append("init", "astra-addon/astra-addon.php");
    _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3___default()({
      url: astra_admin.ajax_url,
      method: "POST",
      body: formData
    }).then(data => {
      if (data.success) {
        window.open(astra_admin.astra_base_url, "_self");
      }
    }).catch(error => {
      e.target.innerText = (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("Activation failed. Please try again.", "astra");
      e.target.disabled = false;
      console.error("Error during API request:", error);
      // Optionally, notify the user about the error or handle it appropriately.
    });
  };
  const Tag = isLink ? "a" : "button";
  const linkProps = isLink && {
    role: "button",
    href: url,
    target: "_blank",
    rel: "noreferrer"
  };
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(Tag, (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
    className: (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_5__.classNames)("inline-flex items-center disabled:pointer-events-none", className),
    onClick: onGetAstraPro
  }, linkProps), children);
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProButton);

/***/ }),

/***/ "./assets/components/PromoCard.js":
/*!****************************************!*\
  !*** ./assets/components/PromoCard.js ***!
  \****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _astra_utils_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @astra-utils/helpers */ "./assets/utils/helpers.js");


const PromoCard = ({
  className = "",
  id,
  icon,
  title,
  description,
  linkHRef,
  linkText,
  children
}) => {
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("section", {
    "aria-labelledby": `section-${id}-title`
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h2", {
    className: "sr-only",
    id: `section-${id}-title`
  }, title), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_1__.classNames)("relative box-border rounded-md bg-white shadow-sm overflow-hidden transition hover:shadow-hover", className)
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "p-6"
  }, icon && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "inline-block mb-2"
  }, icon), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h3", {
    className: "relative flex items-center text-slate-800 text-base font-semibold pb-2"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "flex-1"
  }, title)), !children && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "text-slate-500 text-sm pb-5"
  }, description), children, linkText && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("a", {
    className: "text-sm text-astra focus:text-astra focus-visible:text-astra-hover active:text-astra-hover hover:text-astra-hover no-underline",
    href: linkHRef,
    target: "_blank",
    rel: "noreferrer"
  }, linkText))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PromoCard);

/***/ }),

/***/ "./assets/components/icons/Star.js":
/*!*****************************************!*\
  !*** ./assets/components/icons/Star.js ***!
  \*****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);

const Star = ({
  width = 20,
  height = 20,
  fill = "#000",
  className = ""
}) => {
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("svg", {
    className: className,
    width: width,
    height: height,
    viewBox: "0 0 20 20",
    fill: "none",
    xmlns: "http://www.w3.org/2000/svg"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("g", {
    clipPath: "url(#clip0_2358_55923)"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("path", {
    d: "M9.04894 2.92705C9.3483 2.00574 10.6517 2.00574 10.9511 2.92705L12.0206 6.21885C12.1545 6.63087 12.5385 6.90983 12.9717 6.90983H16.4329C17.4016 6.90983 17.8044 8.14945 17.0207 8.71885L14.2205 10.7533C13.87 11.0079 13.7234 11.4593 13.8572 11.8713L14.9268 15.1631C15.2261 16.0844 14.1717 16.8506 13.388 16.2812L10.5878 14.2467C10.2373 13.9921 9.7627 13.9921 9.41221 14.2467L6.61204 16.2812C5.82833 16.8506 4.77385 16.0844 5.0732 15.1631L6.14277 11.8713C6.27665 11.4593 6.12999 11.0079 5.7795 10.7533L2.97933 8.71885C2.19562 8.14945 2.59839 6.90983 3.56712 6.90983H7.02832C7.46154 6.90983 7.8455 6.63087 7.97937 6.21885L9.04894 2.92705Z",
    fill: fill
  })), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("defs", null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("clipPath", {
    id: "clip0_2358_55923"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("rect", {
    width: width,
    height: height,
    fill: "white"
  }))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Star);

/***/ }),

/***/ "./assets/components/icons/index.js":
/*!******************************************!*\
  !*** ./assets/components/icons/index.js ***!
  \******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Star: () => (/* reexport safe */ _Star__WEBPACK_IMPORTED_MODULE_0__["default"])
/* harmony export */ });
/* harmony import */ var _Star__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Star */ "./assets/components/icons/Star.js");



/***/ }),

/***/ "./assets/components/index.js":
/*!************************************!*\
  !*** ./assets/components/index.js ***!
  \************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   ProButton: () => (/* reexport safe */ _ProButton__WEBPACK_IMPORTED_MODULE_0__["default"]),
/* harmony export */   PromoCard: () => (/* reexport safe */ _PromoCard__WEBPACK_IMPORTED_MODULE_1__["default"])
/* harmony export */ });
/* harmony import */ var _ProButton__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ProButton */ "./assets/components/ProButton.js");
/* harmony import */ var _PromoCard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PromoCard */ "./assets/components/PromoCard.js");




/***/ }),

/***/ "./assets/hooks/index.js":
/*!*******************************!*\
  !*** ./assets/hooks/index.js ***!
  \*******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useDebounceEffect: () => (/* reexport safe */ _useDebounceEffect__WEBPACK_IMPORTED_MODULE_0__["default"])
/* harmony export */ });
/* harmony import */ var _useDebounceEffect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./useDebounceEffect */ "./assets/hooks/useDebounceEffect.js");



/***/ }),

/***/ "./assets/hooks/useDebounceEffect.js":
/*!*******************************************!*\
  !*** ./assets/hooks/useDebounceEffect.js ***!
  \*******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _astra_utils_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @astra-utils/helpers */ "./assets/utils/helpers.js");



/**
 * A hook that wraps a callback function with a debounce effect.
 *
 * This hook is designed to delay the execution of a function until after a specified delay.
 * It's particularly useful for handling events that occur rapidly, such as typing in a text input.
 *
 * @param {Function} callback - The function to debounce.
 * @param {number} delay - The delay in milliseconds before the function is executed.
 * @param {Array} dependencies - An array of dependencies that trigger the effect.
 */
function useDebounceEffect(callback, delay, dependencies) {
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
    const debouncedCallback = (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_1__.debounce)(callback, delay);
    debouncedCallback();

    // Cleanup on unmount or when dependencies change.
    return () => debouncedCallback.cancel && debouncedCallback.cancel();
  }, [callback, delay, ...dependencies]);
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useDebounceEffect);

/***/ }),

/***/ "./assets/src/common/block-icons.js":
/*!******************************************!*\
  !*** ./assets/src/common/block-icons.js ***!
  \******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/**
 * Admin Icons
 *
 * @package Astra
 */const Astra_Admin_Icons={'close':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:20,height:20,viewBox:'0 0 20 20',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M5 15L15 5M5 5L15 15',stroke:'#9CA3AF',strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})),'search':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:20,height:20,viewBox:'0 0 20 20',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M17.5 17.5L12.5 12.5M14.1667 8.33333C14.1667 11.555 11.555 14.1667 8.33333 14.1667C5.11167 14.1667 2.5 11.555 2.5 8.33333C2.5 5.11167 5.11167 2.5 8.33333 2.5C11.555 2.5 14.1667 5.11167 14.1667 8.33333Z',stroke:'#9CA3AF',strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})),'popupclose':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:44,height:44,viewBox:'0 0 44 44',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M16 28L28 16M16 16L28 28',stroke:'#334155',strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})),'support':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:32,height:32,viewBox:'0 0 32 32',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M27 16C27 22.0751 22.0751 27 16 27V29C23.1797 29 29 23.1797 29 16H27ZM16 27C9.92487 27 5 22.0751 5 16H3C3 23.1797 8.8203 29 16 29V27ZM5 16C5 9.92487 9.92487 5 16 5V3C8.8203 3 3 8.8203 3 16H5ZM16 5C22.0751 5 27 9.92487 27 16H29C29 8.8203 23.1797 3 16 3V5ZM20.3333 16C20.3333 18.3932 18.3932 20.3333 16 20.3333V22.3333C19.4978 22.3333 22.3333 19.4978 22.3333 16H20.3333ZM16 20.3333C13.6068 20.3333 11.6667 18.3932 11.6667 16H9.66667C9.66667 19.4978 12.5022 22.3333 16 22.3333V20.3333ZM11.6667 16C11.6667 13.6068 13.6068 11.6667 16 11.6667V9.66667C12.5022 9.66667 9.66667 12.5022 9.66667 16H11.6667ZM16 11.6667C18.3932 11.6667 20.3333 13.6068 20.3333 16H22.3333C22.3333 12.5022 19.4978 9.66667 16 9.66667V11.6667ZM23.7782 6.80761L19.0641 11.5217L20.4783 12.9359L25.1924 8.22183L23.7782 6.80761ZM19.0641 20.4783L23.7782 25.1924L25.1924 23.7782L20.4783 19.0641L19.0641 20.4783ZM12.9359 11.5217L8.22183 6.80761L6.80761 8.22183L11.5217 12.9359L12.9359 11.5217ZM11.5217 19.0641L6.80761 23.7782L8.22183 25.1924L12.9359 20.4783L11.5217 19.0641Z',fill:'#4B5563'})),'book':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:32,height:32,viewBox:'0 0 32 32',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M16 8.33639V25.6697M16 8.33639C14.4428 7.30183 12.3287 6.66602 10 6.66602C7.67134 6.66602 5.55719 7.30183 4 8.33639V25.6697C5.55719 24.6352 7.67134 23.9993 10 23.9993C12.3287 23.9993 14.4428 24.6352 16 25.6697M16 8.33639C17.5572 7.30183 19.6713 6.66602 22 6.66602C24.3287 6.66602 26.4428 7.30183 28 8.33639V25.6697C26.4428 24.6352 24.3287 23.9993 22 23.9993C19.6713 23.9993 17.5572 24.6352 16 25.6697',stroke:'#4B5563',strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})),'checkbadge':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:48,height:48,viewBox:'0 0 48 48',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M17.9993 23.9993L21.9993 27.9993L29.9993 19.9993M15.6687 9.39336C17.1038 9.27884 18.4662 8.71453 19.5619 7.78076C22.1189 5.60172 25.8797 5.60172 28.4366 7.78076C29.5324 8.71453 30.8947 9.27884 32.3298 9.39336C35.6787 9.6606 38.3379 12.3199 38.6052 15.6687C38.7197 17.1038 39.284 18.4662 40.2178 19.5619C42.3968 22.1189 42.3968 25.8797 40.2178 28.4366C39.284 29.5324 38.7197 30.8947 38.6052 32.3298C38.3379 35.6787 35.6787 38.3379 32.3298 38.6052C30.8947 38.7197 29.5324 39.284 28.4366 40.2178C25.8797 42.3968 22.1189 42.3968 19.5619 40.2178C18.4662 39.284 17.1038 38.7197 15.6687 38.6052C12.3199 38.3379 9.6606 35.6787 9.39336 32.3298C9.27884 30.8947 8.71453 29.5324 7.78076 28.4366C5.60172 25.8797 5.60172 22.1189 7.78076 19.5619C8.71453 18.4662 9.27884 17.1038 9.39336 15.6687C9.6606 12.3199 12.3199 9.6606 15.6687 9.39336Z',stroke:'#007ABD',strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})),'spectraBackgroundLogo':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:629,height:807,viewBox:'0 0 629 807',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M155.35 384.598C22.04 384.731 -50.5339 218.96 41.6946 124.989L370.474 -210.002L405.115 4.20929L235.903 176.068C222.848 189.37 232.348 212.283 250.911 212.265L473.541 212.041C606.852 211.907 679.425 377.679 587.197 471.65L258.418 806.641L223.777 592.429L392.988 420.571C406.044 407.269 396.544 384.356 377.981 384.374L155.35 384.598Z',fill:'url(#paint0_linear_3240_66110)',fillOpacity:0.48,fillRule:"evenodd",clipRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('linearGradient',{id:'paint0_linear_3240_66110',x1:'240.999',y1:'-289',x2:'252.522',y2:'770.375',gradientUnits:'userSpaceOnUse'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('stop',{stopColor:'#F4E3CC'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('stop',{offset:'1',stopColor:'#F4E3CC',stopOpacity:'0'}))),'redirect':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:20,height:20,viewBox:'0 0 20 20',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M8.33301 4.9987H4.99967C4.0792 4.9987 3.33301 5.74489 3.33301 6.66536V14.9987C3.33301 15.9192 4.0792 16.6654 4.99967 16.6654H13.333C14.2535 16.6654 14.9997 15.9192 14.9997 14.9987V11.6654M11.6663 3.33203H16.6663M16.6663 3.33203V8.33203M16.6663 3.33203L8.33301 11.6654',stroke:"currentColor",strokeWidth:1.6,strokeLinecap:"round",strokeLinejoin:"round"})),'download':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:20,height:20,viewBox:'0 0 20 20',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M3.8335 13.3346L3.8335 14.168C3.8335 15.5487 4.95278 16.668 6.3335 16.668L14.6668 16.668C16.0475 16.668 17.1668 15.5487 17.1668 14.168L17.1668 13.3346M13.8335 10.0013L10.5002 13.3346M10.5002 13.3346L7.16683 10.0013M10.5002 13.3346L10.5002 3.33464',stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})),'superfast':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:21,height:21,viewBox:'0 0 21 21',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M13 10V3L4 14H11L11 21L20 10L13 10Z',stroke:"#334155",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('circle',{cx:8,cy:8,r:8,fill:"#5733FF",fillOpacity:"0.24"})),'secure':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:22,height:22,viewBox:'0 0 22 22',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M9 12.001L11 14.001L15 10.001M20.6179 5.98531C20.4132 5.99569 20.2072 6.00095 20 6.00095C16.9265 6.00095 14.123 4.84551 11.9999 2.94531C9.87691 4.84544 7.07339 6.00083 4 6.00083C3.79277 6.00083 3.58678 5.99557 3.38213 5.98519C3.1327 6.94881 3 7.9594 3 9.00099C3 14.5925 6.82432 19.2908 12 20.6229C17.1757 19.2908 21 14.5925 21 9.00099C21 7.95944 20.8673 6.94889 20.6179 5.98531Z',stroke:"#334155",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('circle',{cx:8.33,cy:8,r:8,fill:"#5733FF",fillOpacity:"0.24"})),'nativewp':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:23,height:21,viewBox:'0 0 23 21',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M12 5H7C5.89543 5 5 5.89543 5 7V18C5 19.1046 5.89543 20 7 20H18C19.1046 20 20 19.1046 20 18V13M18.5858 3.58579C19.3668 2.80474 20.6332 2.80474 21.4142 3.58579C22.1953 4.36683 22.1953 5.63316 21.4142 6.41421L12.8284 15H10L10 12.1716L18.5858 3.58579Z',stroke:"#334155",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('circle',{cx:8.66,cy:8,r:8,fill:"#5733FF",fillOpacity:"0.24"})),'googlelove':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:22,height:22,viewBox:'0 0 22 22',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M4 4V3H3V4H4ZM20 4H21V3H20V4ZM6.29289 11.2929C5.90237 11.6834 5.90237 12.3166 6.29289 12.7071C6.68342 13.0976 7.31658 13.0976 7.70711 12.7071L6.29289 11.2929ZM10 9L10.7071 8.29289C10.3166 7.90237 9.68342 7.90237 9.29289 8.29289L10 9ZM13 12L12.2929 12.7071C12.6834 13.0976 13.3166 13.0976 13.7071 12.7071L13 12ZM17.7071 8.70711C18.0976 8.31658 18.0976 7.68342 17.7071 7.29289C17.3166 6.90237 16.6834 6.90237 16.2929 7.29289L17.7071 8.70711ZM7.29289 20.2929C6.90237 20.6834 6.90237 21.3166 7.29289 21.7071C7.68342 22.0976 8.31658 22.0976 8.70711 21.7071L7.29289 20.2929ZM12 17L12.7071 16.2929C12.3166 15.9024 11.6834 15.9024 11.2929 16.2929L12 17ZM15.2929 21.7071C15.6834 22.0976 16.3166 22.0976 16.7071 21.7071C17.0976 21.3166 17.0976 20.6834 16.7071 20.2929L15.2929 21.7071ZM3 3C2.44772 3 2 3.44772 2 4C2 4.55228 2.44772 5 3 5V3ZM21 5C21.5523 5 22 4.55228 22 4C22 3.44772 21.5523 3 21 3V5ZM4 5H20V3H4V5ZM19 4V16H21V4H19ZM19 16H5V18H19V16ZM5 16V4H3V16H5ZM5 16H3C3 17.1046 3.89543 18 5 18V16ZM19 16V18C20.1046 18 21 17.1046 21 16H19ZM7.70711 12.7071L10.7071 9.70711L9.29289 8.29289L6.29289 11.2929L7.70711 12.7071ZM9.29289 9.70711L12.2929 12.7071L13.7071 11.2929L10.7071 8.29289L9.29289 9.70711ZM13.7071 12.7071L17.7071 8.70711L16.2929 7.29289L12.2929 11.2929L13.7071 12.7071ZM8.70711 21.7071L12.7071 17.7071L11.2929 16.2929L7.29289 20.2929L8.70711 21.7071ZM11.2929 17.7071L15.2929 21.7071L16.7071 20.2929L12.7071 16.2929L11.2929 17.7071ZM3 5H21V3H3V5Z',fill:"#334155"}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('circle',{cx:8,cy:8,r:8,fill:"#5733FF",fillOpacity:"0.24"})),'zerobloat':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:21,height:22,viewBox:'0 0 21 22',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M12 3L12.4472 2.10557C12.1657 1.96481 11.8343 1.96481 11.5528 2.10557L12 3ZM20 7H21C21 6.62123 20.786 6.27496 20.4472 6.10557L20 7ZM4 7L3.55279 6.10557C3.214 6.27496 3 6.62123 3 7H4ZM20 17L20.4472 17.8944C20.786 17.725 21 17.3788 21 17H20ZM12 21L11.5528 21.8944C11.8343 22.0352 12.1657 22.0352 12.4472 21.8944L12 21ZM4 17H3C3 17.3788 3.214 17.725 3.55279 17.8944L4 17ZM11.5528 3.89443L19.5528 7.89443L20.4472 6.10557L12.4472 2.10557L11.5528 3.89443ZM19.5528 6.10557L11.5528 10.1056L12.4472 11.8944L20.4472 7.89443L19.5528 6.10557ZM12.4472 10.1056L4.44721 6.10557L3.55279 7.89443L11.5528 11.8944L12.4472 10.1056ZM4.44721 7.89443L12.4472 3.89443L11.5528 2.10557L3.55279 6.10557L4.44721 7.89443ZM19.5528 16.1056L11.5528 20.1056L12.4472 21.8944L20.4472 17.8944L19.5528 16.1056ZM12.4472 20.1056L4.44721 16.1056L3.55279 17.8944L11.5528 21.8944L12.4472 20.1056ZM5 17V7H3V17H5ZM21 17V7H19V17H21ZM11 11V21H13V11H11Z',fill:"#334155"}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('circle',{cx:8.33,cy:8,r:8,fill:"#5733FF",fillOpacity:"0.24"})),'compiler':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:23,height:22,viewBox:'0 0 23 22',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M13 8V12L16 15M22 12C22 16.9706 17.9706 21 13 21C8.02944 21 4 16.9706 4 12C4 7.02944 8.02944 3 13 3C17.9706 3 22 7.02944 22 12Z',stroke:"#334155",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('circle',{cx:8.66,cy:8,r:8,fill:"#5733FF",fillOpacity:"0.24"})),'check':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:24,height:24,viewBox:'0 0 24 24',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M18.3602 6.35938L10.2002 14.5194L6.84016 11.1594L5.16016 12.8394L10.2002 17.8794L20.0402 8.03937L18.3602 6.35938Z',fill:"#22C55E"})),'xclose':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:24,height:24,viewBox:'0 0 24 24',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M17.9396 7.75255L13.6916 12.0005L17.9396 16.2485L16.2476 17.9405L11.9996 13.7045L7.76357 17.9405L6.05957 16.2365L10.2956 12.0005L6.05957 7.76455L7.76357 6.06055L11.9996 10.2965L16.2476 6.06055L17.9396 7.75255Z',fill:'#F87171'})),'heart-logo':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:30,height:30,viewBox:'0 0 122.88 107.39',fill:'none',className:'inline-block'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M60.83,17.18c8-8.35,13.62-15.57,26-17C110-2.46,131.27,21.26,119.57,44.61c-3.33,6.65-10.11,14.56-17.61,22.32-8.23,8.52-17.34,16.87-23.72,23.2l-17.4,17.26L46.46,93.55C29.16,76.89,1,55.92,0,29.94-.63,11.74,13.73.08,30.25.29c14.76.2,21,7.54,30.58,16.89Z',fill:'#1e293b',fillRule:'evenodd'})),'astra-logo':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:40,height:40,viewBox:'0 0 40 40',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('rect',{width:40,height:40,fill:'url(#paint0_linear_2971_69719)',rx:'19.9999'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{id:'pattern0',fillRule:'evenodd',clipRule:'evenodd',fill:'white',d:'M21.4952 11.3394C20.9235 10.2236 20.3519 9.1077 19.7647 8C18.8281 9.91771 17.8915 11.8354 16.9549 13.7532C14.6364 18.5003 12.3178 23.2475 10 27.9951C10.5404 27.9966 11.0808 27.9959 11.6214 27.9952C12.475 27.9941 13.3286 27.993 14.182 28.0003C15.6282 25.1883 17.0646 22.3713 18.501 19.5543C19.698 17.2067 20.8951 14.8591 22.0979 12.5143C21.8965 12.1229 21.6959 11.7312 21.4952 11.3394ZM27.9861 23.9851C26.6931 21.4095 25.4001 18.8341 24.1035 16.2602C22.7358 19.0199 21.3667 21.7797 19.9945 24.5372C20.5591 24.5368 21.1236 24.5369 21.6881 24.537C22.4409 24.5371 23.1936 24.5373 23.9466 24.5364C24.1569 24.9967 24.3625 25.4589 24.568 25.9212C24.8774 26.6167 25.1867 27.3123 25.5118 28.0008C26.4201 27.9926 27.3285 27.9938 28.2368 27.995C28.8245 27.9958 29.4121 27.9966 29.9998 27.9948C29.3282 26.6584 28.6572 25.3217 27.9861 23.9851Z'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('linearGradient',{id:'paint0_linear_2971_69719',x1:'39.9998',y1:'-1.19212e-06',x2:'-0.0009992',y2:'39.9998',gradientUnits:'userSpaceOnUse'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('stop',{stopColor:'#E976FD'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('stop',{offset:'1',stopColor:'#583EDE'}))),'starter-canvas':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{viewBox:'0 0 1916 872',fill:'none',x:'0px',y:'0px',enableBackground:'new 0 0 1916 872'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('image',{href:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB3wAAANoCAMAAAAcVGsfAAAABGdBTUEAALGPC/xhBQAAACBjSFJN
			AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEXt7u/q6uvm5ufFx8rO
			z9Hw8PLV1tfy8vT19ff29vj39/l6iYxeXm10dYK4wcP19vvj4+FygYVkYXKytba+wsNnanlscYCI
			kJSXnJ+orLCDjZHc3d4eKjaMk5ckM0BLTlrl6OyfoZ9TVGFFS1GbqamSl5olOkiwv780PEyEhok6
			RFXQ1ttYWGfc5eU/SV31+fjf6Ojx9fT////09vX//v/+///9/f3n7fD+/Pf5/v799O4+RUdcYWD1
			04+UxczXlV5ip7zmvYRSkqPw/Pr36cWdaV1KUWfB3ea/lltkenz86t212eK6gWf24aq/1M2Ed2pJ
			c3rSroyFgnlxm6HY6O65sKSTsrTq0rTmxaCUjYKlz9bX49CimYxbX3XRuKCHucHCmHbB09bYzcKp
			vL3O4upVWnFbb22Mo6DR3d7TpXjksmKihGNsbGZPVWx8aFdPZWa4po7/wQebuLmXtraiursyMjI3
			ODgpLS8lKCobJycgISMZHB4qOTY0Pz9FTGKqqKFYNyxPKRtDIBI7GQ4xEgpQOBNtOx93ZTxnX1Vr
			VT1uSzJkURRYQx82LSILBwUMDQ0CAgJnVk4mDAcZCgYnGRE+NygXFhIoKB8OFRikubBePzRfDwlt
			HxBfTCpGJhxCPT1XU1ZRMCVANw8OHiEtQ09xWiZKRkdzd3LQN13rDFP+AVExLQtPSA4rMyWjOg7I
			uTTwmxmHeBGpnhvfexRqcSPQXg0OXgxMBxC6ShDt9fJ+UUUQJShRQzO90stSTVD8zAm3bSH6v8/O
			ETXtkKXbc21fRj2OIw+0ycDX4eFjTUZIPirBu7H3+fVzYw25zsUUM0Lj2M7Qw7bq5eDw9Op2eE5R
			TjsNLTGzzJ/A1LB0mk+DjWOJq2iZtnynwo6FnYpcflTM3MFJWltJYkWgs5qBfTV+p645TTEZNjId
			YGpYXSyMZEQER1KCZyaTdkqmnHGQTiOWdiuhhC2zfkiZi0r+2jf1ukPPjjiyIyGzUTfIakvYVjDj
			fj3zlHXtoj71x2wng5Gk69RSAAAAAWJLR0QyQNJMyAAAAAd0SU1FB+YKDgQPO5c8YJoAAIAASURB
			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
			gFHxrkavpXjYOZH02s75JqRm7nwX+5kmrCxx7CfJ4cv1csXhm0h6bed8E1Kzdb5ciyoOX66XKw7f
			RBJ3vokk7nwTShy+XC9XHL6JJO58E0nc+SaUOHy5Xq44fBNJ3PkmkrjzTShx+HK9XHH4JpK4800k
			ceebUOLw5Xq54vBNJHHnm0jizjehxOHL9XLF4ZtI4s43kcSdb0KJw5fr5YrDN5HEnW8iiTvfhBKH
			L9fLFYdvIok730QSd74JJQ5frpcrDt9EEne+iSTufBNKHL5cL1ccvokk7nwTSdz5JpQ4fLlerjh8
			E0nc+SaSuPNNKHH4cr1ccfgmkrjzTSRx55tQ4vDlerni8E0kceebSOLON6HE4csVJ6mS1yenmUxp
			2evfTnvOzTh8l4TmPVrc+b5EzXS0uPNdEor3rjD+4vB9pZSctXLlyiyd/Gf623H4LgXNf7S48315
			mvFocee7FBT3XWH8xeH7Ksm4MlZZqmlvyOG7BBSH0eLO96Vp5qPFne8SUPx3hfEXh++rpMIJ77iV
			hmlvyOG7BBSH0eLO96Vp5qPFne8SUPx3hfHXUoKvoBVftElFrTDDW76WSp/4jiuc9obxga9ZZxSm
			vkYep+kFb7zo6dd0NOMwWjN2voKKSZhyZPBaGgSd/vnjpjUkLfZWWyzNfLTi63yFTJ35RbcRtTi0
			ptf3o/Ss4r8rjL+WEnz1y6cPDshSLV+G70TNamPkIrPmhfd6bbTyZcLXnPfWm28W6GM/7UadfE61
			XP/cJyrmvBn9Lvq8cX+VRzcOozVj56t5k0k/5cjQtRsNoil3beZzn7LmreeP6yusmY9WPJ2vuL7g
			zTffytE+/1aq5TB+b2WppvwoCZqkxd52i6D47wrjryUEX8sM4Ktd/qbeYrLEwte4WrPYA71klEtv
			tG3y78KGncWc1dmC1rABxiOiwizZOGlfAN+ktavTle/zzx33V3l04zBas3G+mtXZYI+mgi98njQq
			lWFDtkl8gcmymF9bZzXz0Yqj8y3O2JCrErJXL3tBQGK5AcZ3bY4w1UfpRZ/FV1Px3xXGX0sIvpGv
			bRZdzkq92ZSUr4Odhj5DhPPp69m7T7V87Wodc74WY2H6OpXJmLNhmV7QGGCvka0X1Pk6Q5Y25g6v
			lyZmGaxc0IQrzcZkOBZzl6txw8NAZQv6N94pNJqEjPRcI37gzYaVeUZLZDxNGoNu1Tp254x3MlZT
			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
			ggAAAABJRU5ErkJggg==`})),'ottokit':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:40,height:45,viewBox:'0 0 137 141',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('g',{clipPath:'url(#clip0_94_39)'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('rect',{width:136,height:136,rx:36.6154,fill:'#D2F059'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('g',{filter:'url(#filter0_dddd_94_39)'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{fillRule:'evenodd',clipRule:'evenodd',d:'M67.9896 95.4199C83.1335 95.4199 95.4077 83.1441 95.4077 68.0011C95.4077 52.8581 83.1335 40.5822 67.9896 40.5822C52.8456 40.5822 40.5714 52.8581 40.5714 68.0011C40.5714 83.1441 52.8456 95.4199 67.9896 95.4199ZM67.9896 116.387C91.1203 116.387 110.46 100.156 115.241 78.4616H128.141V57.5385H115.241C110.459 35.8451 91.1195 19.6148 67.9896 19.6148C44.8596 19.6148 25.5201 35.8451 20.7384 57.5385H7.83594V78.4616H20.738C25.5189 100.156 44.8588 116.387 67.9896 116.387Z',fill:'url(#paint0_linear_94_39)'}))),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{fillRule:'evenodd',clipRule:'evenodd',d:'M196.46 91.2888C208.288 91.2888 217.876 81.7005 217.876 69.8728C217.876 58.045 208.288 48.4567 196.46 48.4567C184.632 48.4567 175.044 58.045 175.044 69.8728C175.044 81.7005 184.632 91.2888 196.46 91.2888ZM196.46 107.666C217.332 107.666 234.253 90.7452 234.253 69.8728C234.253 49.0003 217.332 32.0797 196.46 32.0797C175.587 32.0797 158.667 49.0003 158.667 69.8728C158.667 90.7452 175.587 107.666 196.46 107.666Z',fill:'#FEFEFE'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{fillRule:'evenodd',clipRule:'evenodd',d:'M243.079 80.4664C243.079 80.5443 243.081 80.6222 243.081 80.7001V75.933V80.0348C243.081 95.2752 255.42 107.634 270.653 107.666C270.658 107.666 270.665 107.666 270.67 107.666C270.684 107.666 270.699 107.666 270.713 107.666C270.727 107.666 270.741 107.666 270.755 107.666C270.761 107.666 270.768 107.666 270.773 107.666C276.29 107.654 281.428 106.025 285.739 103.228L278.076 90.6257C275.989 92.0801 273.45 92.9329 270.713 92.9329C263.59 92.9329 257.815 87.1582 257.815 80.0348V60.0664H281.614V45.3332H257.815V44.1999H257.813V22.6667H243.076V45.3332H235.146V60.0664H243.076L243.079 80.4664Z',fill:'#FEFEFE'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{fillRule:'evenodd',clipRule:'evenodd',d:'M292.966 80.4664C292.966 80.5443 292.966 80.6222 292.966 80.7001V75.933H292.968V80.0348C292.968 95.277 305.31 107.637 320.545 107.666C320.552 107.666 320.557 107.666 320.564 107.666C320.576 107.666 320.587 107.666 320.599 107.666C320.61 107.666 320.623 107.666 320.633 107.666C320.64 107.666 320.647 107.666 320.653 107.666C326.173 107.656 331.313 106.026 335.624 103.228L327.963 90.6257C325.875 92.0801 323.337 92.9329 320.599 92.9329C313.475 92.9329 307.7 87.1582 307.7 80.0348V60.0665H331.498V45.3332H307.7V44.2V22.6667H292.961V45.3332H285.033V60.0665H292.961L292.966 80.4664Z',fill:'#FEFEFE'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{fillRule:'evenodd',clipRule:'evenodd',d:'M372.348 91.2888C384.176 91.2888 393.763 81.7005 393.763 69.8728C393.763 58.045 384.176 48.4567 372.348 48.4567C360.519 48.4567 350.932 58.045 350.932 69.8728C350.932 81.7005 360.519 91.2888 372.348 91.2888ZM372.348 107.666C393.22 107.666 410.14 90.7452 410.14 69.8728C410.14 49.0003 393.22 32.0797 372.348 32.0797C351.476 32.0797 334.555 49.0003 334.555 69.8728C334.555 90.7452 351.476 107.666 372.348 107.666Z',fill:'#FEFEFE'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M415.406 107.585V22.7552H430.74V69.7553C434.364 68.9912 437.807 67.501 441.07 65.2847C444.333 62.9919 447.161 60.0496 449.553 56.4577C451.944 52.8658 453.032 50.0835 453.973 45.4217H470.286C469.125 50.3128 467.822 53.5154 465.212 57.7188C462.675 61.9221 459.703 65.5903 456.294 68.7236C452.886 71.857 449.335 74.1878 445.638 75.7164C448.466 76.557 451.293 78.009 454.12 80.0725C456.948 82.0594 459.593 84.505 462.057 87.4091C464.524 90.2367 466.625 93.37 468.365 96.8092C470.106 100.248 471.266 103.84 471.846 107.585H455.533C454.809 104.069 453.612 100.898 451.944 98.0701C450.277 95.166 448.32 92.644 446.072 90.5042C443.898 88.2879 441.469 86.492 438.786 85.1163C436.177 83.7407 433.495 82.9001 430.74 82.5945V107.585H415.406Z',fill:'#FEFEFE'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M476.262 22.6667H492.127V23.8C492.127 32.5629 485.024 39.6665 476.262 39.6665V22.6667Z',fill:'#FEFEFE'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M492.128 45.3333H476.261V107.666H492.128V45.3333Z',fill:'#FEFEFE'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{fillRule:'evenodd',clipRule:'evenodd',d:'M504.453 80.4664C504.453 80.5443 504.453 80.6222 504.453 80.7001V75.933V80.0348C504.453 95.2752 516.793 107.634 532.025 107.666C532.032 107.666 532.037 107.666 532.042 107.666C532.056 107.666 532.071 107.666 532.085 107.666C532.099 107.666 532.113 107.666 532.127 107.666C532.134 107.666 532.14 107.666 532.145 107.666C537.664 107.654 542.801 106.025 547.111 103.228L539.448 90.6257C537.361 92.0801 534.822 92.9329 532.085 92.9329C524.962 92.9329 519.187 87.1582 519.187 80.0348V60.0664H542.986V45.3332H519.187V44.1999H519.185V22.6667H504.448V45.3332H496.52V60.0664H504.448L504.453 80.4664Z',fill:'#FEFEFE'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('defs',null,(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('filter',{id:'filter0_dddd_94_39',x:-14.4962,y:12.1708,width:164.97,height:141.437,filterUnits:'userSpaceOnUse',colorInterpolationFilters:'sRGB'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feFlood',{floodOpacity:0,result:'BackgroundImageFix'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feColorMatrix',{in:'SourceAlpha',type:'matrix',values:'0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0',result:'hardAlpha'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feOffset',{dy:14.8881}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feGaussianBlur',{stdDeviation:11.1661}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feComposite',{in2:'hardAlpha',operator:'out'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feColorMatrix',{type:'matrix',values:'0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06 0'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feBlend',{mode:'normal',in2:'BackgroundImageFix',result:'effect1_dropShadow_94_39'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feColorMatrix',{in:'SourceAlpha',type:'matrix',values:'0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0',result:'hardAlpha'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feOffset',{dx:-3.34982,dy:11.1661}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feGaussianBlur',{stdDeviation:6.51353}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feComposite',{in2:'hardAlpha',operator:'out'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feColorMatrix',{type:'matrix',values:'0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04 0'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feBlend',{mode:'normal',in2:'effect1_dropShadow_94_39',result:'effect2_dropShadow_94_39'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feColorMatrix',{in:'SourceAlpha',type:'matrix',values:'0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0',result:'hardAlpha'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feOffset',{dy:3.72202}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feGaussianBlur',{stdDeviation:3.72202}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feComposite',{in2:'hardAlpha',operator:'out'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feColorMatrix',{type:'matrix',values:'0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03 0'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feBlend',{mode:'normal',in2:'effect2_dropShadow_94_39',result:'effect3_dropShadow_94_39'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feColorMatrix',{in:'SourceAlpha',type:'matrix',values:'0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0',result:'hardAlpha'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feOffset',{dy:3.72202}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feGaussianBlur',{stdDeviation:1.86101}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feComposite',{in2:'hardAlpha',operator:'out'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feColorMatrix',{type:'matrix',values:'0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08 0'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feBlend',{mode:'normal',in2:'effect3_dropShadow_94_39',result:'effect4_dropShadow_94_39'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('feBlend',{mode:'normal',in:'SourceGraphic',in2:'effect4_dropShadow_94_39',result:'shape'})),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('linearGradient',{id:'paint0_linear_94_39',x1:67.9887,y1:116.387,x2:67.9887,y2:19.6148,gradientUnits:'userSpaceOnUse'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('stop',{stopColor:'#072F50',stopOpacity:0.95}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('stop',{offset:1,stopColor:'#172A39',stopOpacity:0.75})),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('clipPath',{id:'clip0_94_39'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('rect',{width:136,height:136,rx:36.6154,fill:'white'})))),'sureforms':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:40,height:40,viewBox:'0 0 64 64',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('rect',{x:0,y:0,width:64,height:64,fill:'#D54407'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('g',{transform:'translate(2 2) scale(2.0)'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M9.14307 6.85645H22.8574V11.4279H11.4288L9.14307 13.7136V11.4279V6.85645Z',fill:'white'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M9.14307 13.7139H20.5716V18.2853H11.4288L9.14307 20.571V18.2853V13.7139Z',fill:'white'}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M9.14307 20.5713H16.0002V25.1427H9.14307V20.5713Z',fill:'white'}))),'custom-layout':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{viewBox:'0 0 1736 660',fill:'none',x:'0px',y:'0px',enableBackground:'new 0 0 1736 660'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('image',{href:`data:image/png;base64,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
			AAAAAAAAUKgQIAMAAAAAAAAAAEChQoAMAAAAAAAAAAAAhQoBMgAAAAAAAAAAABQqBMgAAAAAAAAA
			AABQqBAgAwAAAAAAAAAAQKFCgAwAAAAAAAAAAACFCgEyAAAAAAAAAAAAFCoEyAAAAAAAAAAAAFCo
			ECADAAAAAAAAAABAoUKADAAAAAAAAAAAAIUKATIAAAAAAAAAAAAUKgTIAAAAAAAAAAAAUKgQIAMA
			AAAAAAAAAEChQoAMAAAAAAAAAAAAhQoBMgAAAAAAAAAAABQqBMgAAAAAAAAAAABQqBAgAwAAAAAA
			AAAAQKFCgAwAAAAAAAAAAACFCgEyAAAAAAAAAAAAFCoEyAAAAAAAAAAAAFCoECADAAAAAAAAAABA
			oUKADAAAAAAAAAAAAIUKATIAAAAAAAAAAAAUKgTIAAAAAAAAAAAAUKgQIAMAAAAAAAAAAEChQoAM
			AAAAAAAAAAAAhQoBMgAAAAAAAAAAABQqBMgAAAAAAAAAAABQqBAgAwAAAAAAAAAAQKFCgAwAAAAA
			AAAAAACFijWvTmyaZl7XPccMw7hl6pJf0KbXjra7NrRb/pHdteA6FA5X6o8AAAAAAABAbsuzANmu
			3XsLxAsy0zRVL6TOLVGX/II2vXa03bWh3fKPK10LrsOtLyf9EQAAAAAAAMhteRYgk6SQurXzuv5X
			tHPXnhylK1O6VF4XtcAIO3M2R+lo08vRdteGdss/cnItuA63tpz2RwAAAAAAACA3sQYZAAAAAAAA
			AAAAChUCZAAAAAAAAAAAAChUCJABAAAAAAAAAACgUCFABgAAAAAAAAAAgEKFABkAAAAAAAAAAAAK
			FQJkAAAAAAAAAAAAKFQIkAEAAAAAAAAAAKBQIUAGAAAAAAAAAACAQoUAGQAAAAAAAAAAAAoVAmQA
			AAAAAAAAAAAoVAiQAQAAAAAAAAAAoFAhQAYAAAAAAAAAAIBC5dYMkDlsSkxMULLdTNkgW2KCEpPt
			Mq8r41uNKYfdJpvNQbsgb5gO2Ww22R3cgQAAAAAAAACAm6eABshM2ZMTlJiYoCR7Ji/WN3+u0qVL
			6/GZ51wbNunz0qVVeugMnbuq8+RmFRyy22yyZRoYMJ377LkduIpS6MT3NGL0Ih3O6/a4AUyHTTbb
			5R+CL1fmbDu7Mmsq02F3tmNuNOPhRRox+j19vT4qr5vgxjCdbXV5v04JRrs+V+jbKWmzbfOUZ0i6
			j72Q3u8Z2je17+ez4L9pymG3py9nrj/nAQAAAAAAAGTGmtcFuCbmMf08oKFeXGYoZNQKrXypYcGL
			9EVt0tefLNA/zR7VJ72rZNh5TLNH/6h1Fbvr9X81VUBel7WAODzvPX27XjIsFhlu2yv1eE7Dmpe8
			sSczHbI7HDIsVlmM688urznbrqL6DX9CLTI01YX1P+j9eSfUYvDb6lc9r0uan5m6uPVXfTD9kGzp
			+rUpe+R+zZsxT+uPx8vu4aWAWh31SL87Vc4zk5vHjNbmn8bpt4O27Ns85RliGLIYznw8ilZSgw6d
			1KNReflbb4EbM8eiFDrxC804YciwGM7+71lEVULaqXvnRqrkn/6ZkBdMh12xZ3Zq1V+h2nTsrOKS
			DUkeKlq2ofo/1kN1itz489kdhjysN77uuZk3AAAAAAAAcLMUyACZeXiF5i71ULnypbXzm1la9VRD
			tbvBLxdRUPmq8p0NVMErbUtAad8bfpb4I6v1y6KNKt1luHoRNIIkM+Gwliw8JFvG7XF79OsX07TD
			s4La3tNXpcNWaOa6eRoX76mRjzZQ8XQRBlNJB1ZpzkFbzk8cXEMtby8pyaYLB3Zqy5xJ2h8xWKO6
			31YIgxfBqnNXVQVIskUe0tat8/XlwQg9O7yrqnjkYbHMOB1d9JMmrDsneXjJv0oDtSzlI9mjdPxw
			jKKTJN3Qn2EJOrTiD83dUEq9R9ytG/uIys28AQAAAAAAgJunAAbIHNo+93v95TFMv3wsDXrwF63Y
			8JraFYIImWk65EidjsuQYbHIw234kulwyOE+pZhhkYeH21/4m6bsDrtM03W8xzWcx3TIZnc4R2mZ
			DjlMyfCwyiPfvIkP0h1tu142CirHbeRqJ4fDIYeZksq9DZxTpMWcOah9p2NVwm6TzebWBqYph8Nt
			qkL3/PN9212dnLSlabrSuLWHxWLJZtSds30dpiGLh4cznWu0XmoeFg9Z89uwPTNJBxbP1hbvYipy
			KVqX3OpzbvNybbP5qt3jQ9TjNkl3VJBP3Kf6YdtqbQ1voHal3LJJOKw5s3bIu4Sv4qPic3buKs3V
			p7trtFrX5lr21XgtWLtJuzrdpnpepkyHI920i4bFI91zQ6ZDdrf+bvGwyLTbZWa4ns5RQ2l9IvX6
			5CuV1bp719SgTZsVX+ujJaFat7eTqoRYc3DPmnLY3fq+xUMecrZfur6aXT+/jKmLW2dqwtpz8qjW
			Qc8OaKVy2fy4ulIZU66D4WGVxUy7JqnX1XTIbo/Vmf2HdDqmhHMaTllSR3tl93y/3rwBAAAAAACA
			gqTgBcgcG7Tom52yPv62Wnfw0bPWL/T51CV6oW0flbyF39CZDrvC9y7RjPlbdTTWJqtvgGq37qM+
			LcrL32JIitGxv5dr8drdOhJrkzy8FFCzjQb0bK7b/AxJDtnP7NC0uYu0/USyLEUD1aDb3Qoyr/I8
			hxdpxOQNqtS2p24/sULrTiSq8SNvqE+1vG6hHLRhcqyOb/1LC5bv0bE4u+ThpcAqd6p7z/aqG+CR
			FsSKOKA/Fy7VhmORSrBJHkUqqn6HTurRuLz8LVFa//14zTrhkCSt//kDbTSkux59S32rOo+dP2eB
			NvwTJ5vVW4E1WuuBns1Uyc8iowC33bW0pfNeWq45SzfraESSbPJQkUp1dHfnzmpWqWimwRUz+bzW
			Tv5Wc8+UUbtHH1b3Sl66sG+Zpi/ZoqMRic42bdhXz/WuoRs/LvBaG8OhmAOL9dumQHV7pIa2/bBY
			/6TuvKBDuyMkz2aqfVvKNh/Vql1L2rZTh08nqF0pH1c2cdq/aLY2BnTQ4Lq7NWn+iasviyVIlW6T
			dCZKMXHO8+9YuVBLNh9X+CWbZPVV5Tt6akC3mippdQY8Yg4t08/T1+voJYc8/aqq04C6Ov/dLIW6
			TfFqJsfq+PpF+n31QUXE22QtWlFNe/dVz1ol8nWAN7hCZUnnFBkTI8l6hWek5Eg+o/XTp2vBvkgl
			WXwUXK+Hegb/rUkLT6ZNd2leoZ9fdn+c0MqFh2Tza6zHBrZSuWxu3Jz0q5QpT5s//JJqHZmhPzaf
			UJzdSxVbDtDjnSvLL2qzvhu7SMcckrRZ/x2zVVITPTmmq6pe4fl+PXkXwMcYAAAAAAAACrkCtnSX
			qUurFuq/56x6onNTFfNprLuHWaWpf2pluHn92ecFh13JybYMH7scGeodsW6yPpu6Vcn1u2nwQwN1
			T0Nv7Vn0gyavj3SNBDivHRsvqWLb3hr80ED1bxqoi7v+1DcL9ipZknlxpyZ/O0tbzvirZvteeqRL
			HV1aPk1/nbna8zgdX71aSW2G6d2381uAx5TdlqEtTUnmJR2Y/62+nLtXMeVbqP9DA9W/9W3SsbX6
			YeJCHYhz1s4RsUFfj/9Nq074qH6Xfhrcv5vuDAjTltk/aPK6SJnyV63OA3Vf4xKSpOodB2rwQwPV
			tFTKsb9ro72+7nlooAb3aiCf/Yv1zf826Lxb4xWctnN+bPaMUdSctKXrXvp1nY75hKhX/4Ea2KOB
			As7s0PT//qq1EZf3V9MRp/3zf9Cck0XV8qGH1f02H+nEEo37eY1O+zd1tWlTBVyKVkJeN5V7m51b
			r8m/7lBQj75qHZTxbw4u6uxJSWUC5T6o0Vq0iDwlXYp3jRIz7Qpf96t+3BGoe+5trlLXGHQyHYmK
			vSTJKCJfb0mXjmjj0aK6s0t/DX6on3rW8NDR0KmasC5ckuQ4vlif/bBWx+xl1KxHP/VvW0K7fl2g
			zZlc7/HLzqhsm94a/FA/db3tgtb+PEkzDyfn9QXIrjGUGBcnyZBfEV9d6RkpM1qbf/le03fHyL96
			G/V/4G7Vj1uhn5ame0jmuJ+nOn9Chy5JRRo1UK3soro5fEal2D3vVy33uEMDerVRTf8kHV/5s2bv
			SZaK3q4uD/VUkwBJqqIuDw3U4IcaqtRVPN+vPm8AAAAAAACg4ClYI8jMKC2Z+rnOeTylzs2LSZLq
			t3hC1s+/08+LXlWfQVUK3jRPm37RG5szltpM97JSiXv155KT8mz6mP7VsYJzW9UeitzznRav263w
			u9qolCqr93OV5JAp0zSlaq79B0/qtOrIZ/Ny7bN5qfH9T2hAXeeIlVq1yujXj6amvQzP0XmcjPrd
			1ON2n7xuvUyc1Jxx72tu6vcKuuflx3VX8lbN2hgrrzsG6Ln7ajlHH9WsrpolpmjM9E36c3sL1Wzh
			r13L/tJxeyn1GPqE2rsqW6tuGXl/NEkrloTq0F09dHuV6qp2xk/SBQVXqK5a1SUpWTsW/KXjXk31
			9KPtVMkiSZV1X+RefbYsVNvONVenAtd2Lmb6cK3Cc9CWd57Rn0tOyl6mk14Z0krBFkmqroZlvDR6
			wlrNX3dUrfpUTeuvDmeA6IfNyarac4j6VHO2T8yZ04qTVLt+YzWo5iuLpZpqNcgvvdyUI/awZv6w
			ROcqddcrTUpIF3N4aIkAlXVr35gDC/XNn+Gq1PNpNQ+QIq+mGK4guxw2Xdg9V7N3WeRTq76qF5Hk
			01hPDGkkh+l8LlSraOqfnX9o29Gzim9TUgdDQxVjVFKfpx9X6wBJqquGVYrp4y+W6myG6121zxA9
			cIefJKXmE7r5kPpWr52PfpA4ZEu2KVmSLXKXpi/aI4t3Td1R1Ue6wjPytrNbtfigTUWbDNBzfau7
			7utaKjftU/2wLSX/ZOczIrt+XjpDkaIu6rSk24r5ZV/0nPSrFgGpyYs0uU/PtQuSJNUqFq+R/12v
			fSfOSHUrqlrNyjq7XNL5IFWqWd055WTiHs2+wvPdeq15AwAAAAAAAAVQ/nmvmQNm+Er9OVXSgGaq
			55WghATJq0EbPaLvNHn6ch19uIqqFrAxcQquoZY1AjJsjNSBNfvTXlCfOqZdNsm+4WeN2uSezipP
			XVKMpGCHXeGHNmrT3iM6+E+kYmOjFB0vybQpWbE6dThKUiM1qO0WmPEtrdvKSJtP5Pw8KQGyShVK
			59Obx1eV72yoCt4p34urlLcUc2CfwiU1rV8r3dR8/lVqqZKO6J+Ii5Iu6tAem1SmgRq4D4mwVFCt
			utKK9WcUHi3dnun6Ziedx9o3aOL7m9IFaj2tUlxs2veC03ZOyae3KfRI2npYMUdz0Jaue6lco7qu
			4JjLbdXVQGu1LixCF1RVKXd+zN45+vboSfk2HaTHmpVIy7P2Xbpz9SltnT1O766tpGatOqpNvdLy
			s+SDNY/sF7Tuf1MVqkYa0r+h/Ow2JdvszuC2K2hlsUqGa226dGIuKlxSaUnm+Q2a/L9N0p0P66FG
			fulG7TnsNiUnG7J6emRd35Qgu2HIMAx5BTXT4Hvryl+SaY9V2M5N+vvwCR06fVEJ0RcUJ0nx8YrX
			Gf1zSFKZWqrr/ggqVUHVpNTnT8r1Pj9vvEbNd0tntcozOk4xkkoqv9is78dskSFDhiEZnkFq+VBf
			NfR3TfmZ5TNSij9zUhckNa1T3e2+9lG5CmWkbSkPyRz084wBMh9PFZEUfSlJppTldcxRv1LahapW
			ISgtUUCgykn6J8mWddPk4Ple8lrzBgAAAAAAAAqg/PmePlOmji36Sf+TRR5/PKWQ6W67PCzSyu81
			Z8djerFhAYuQVWmuPt2qZNh4VDPcA2SmIbuksh0f19NNMwbTrPKVqfPrJ+uzeedUrundats1SKVK
			e2vPT99p0RlJsslwSJJF1nRvZ03n9IM5Pk9BEKQ72nZRiwxv7GMM1xpDjgyvqE3naD3DtT8lmJE+
			memKbzhfumfOkGGXVLqthj3RTIEZ9nr6SDqS121zbW0X+fdJhR5xWw8rJ21pGK51yMz0QQFXmpT9
			KXwDy8nn9En9c/asYpIry8fTFQDzr6UHXnpRrXdv0uKVoVo98zut3tRVw59oriCPPG6u6MPafsIh
			i7bov//ZklJB5/SorqDVXY8+o+KBkiKjFG1KAa5KJ1+MVrwMBRbz14VDe3TSYZE2/0/vpQzndI3a
			W//T+9pgNNGT73bLeqSOK8juG1BBlcqXV/VyJWS1SFKyDi78VhM2WFSzQwf1qR+kwIoXtPj/pmur
			JMkuW7ykAI/0I1btyUpy+2oznYVu0O8V9auRoQMY+e25EKw6LaopwDNQt1Uso9uqVVBJq/O6RGb7
			jJQSEhIlSRbD/Y415bC7TyOZg36eUamKqmORNm3aqqNt7lYVzyyCuzl8Rl2zHDzfr2rkIgAAAAAA
			AFDAFZxokuOoVkz/S/Jorkdfe1fvvuP2GdpVVmOXvl64IcPaXbeIss4XrKf3HlGM1VPePt7y8fWS
			t7envHytkqK0f/tJ2VRfXXs1UoMalVS6aJyiIlIyKKFSFb0k7dKeIzbZHQ6ZDodsF45o16mrOU/B
			5V+ukvwMafeu/YqxO+QwTTkcdsUcO6rjhkU1KgRJKqMq1SwyzuzVjnNp7WRPOqUDhySLfyWVL5aS
			o+tltt0uh8Mhh1lGVWpapDMHdSDGKi8fL/n4esvbx1Oe3t6ugMWtIUdtWbqSalgMnd65R+FJdjkc
			zjS240e0T4b8KpVNvyZXmWZ67KFm8j+5WJ9NXq/wZGfIxrTZZTOLqExIWz36zGt6vImPbP+sVGhY
			XreCJO9g1W/RTC3dP3dWUhHJGbRq0UxVigWpeq0iMi4d1IEwu+wOUw57nHbv3idZaqh2Fat8S9dJ
			n0eLZmpaxRl2KlW7mVq2qKTi2ZWjSnP16dZFdzerq1oVSrjdaye1a32sVL6F7mnXQDVvL6eAS3E6
			n3pgCZWtZEgn9+rABVfZHHbFHNyr3W7Zl6zgvN77Dv0jm7eXvH295ePjJS9vT3n75LfnQmW17tZF
			fTo1VsOaKcEx6crPSKlkcDl5Sdq+7x/Z7A45HA7ZkyK0c9dZt/yvoZ971VKL1sXlEROqn2bsUHiS
			TTa7XXbXx2ZzrpOYs2fUVTAkySG7qy7mjXy+Z8w7T685AAAAAAAAcG3y29vNLDl2zNb3Kw1ZBw3T
			26/1UDH3nQn1dGHuIn00eaFWvtBM7fO6sDdakVpq06KE9q9bqrETI9T9rloq6R2rsN07lNjkcfWs
			4qsifh6yGNu09K8KSipv09HQTdrrLck1K1a1+k1VMnSd1kyZpPjOzRXifV7r1hxUbICU+sb8iufJ
			64a4DhWaq2/IJv26fbq+jG2m9k0qSKc2acXfR+UT1EZdGjjXB2rYvo0WH1utRd99r3MdmimkSIJ2
			hS7Vlos+qt+/uWvNIalYsZLysJzQpsULVT7OV2aJjmraqplKHlyvhd9N0rkOzRVS0kcx53Zrc9Kd
			Gtalcl63wM1tS0tddWy/QodXLNPYSRHq3ryWfC7t15pl2xVdpK4GtqpwWba+1bromR5h+mTun/pm
			frBe7l1NyZt+0Y9hNdSqRgn5JkZo074kefjUUYWAayj3jVakslp3q5x+24UNOr7xH/3jPjL0rg6q
			ummh/vrpJyW3b66AMys1d49UsnVrNSwiZ4ArQ99KGbVXrVkX9bnmRZ485e1vkXFmvf5aV0IhRc9r
			69atbsuklVDd5jU17+QBzZjwkyLbN1fAxS1adeiiiklKnVSzQmN1rbpJM92ut39ilI7sPq2yPfup
			Sf6ZXzEbV35GqkqIWgVs1Ir1P2tcYke1rmro6IbVOmErIemCK5GPQq6hn1fqNFj3nPxWs3bP0cd7
			FimoWi1VK2GV4iN04KSX2j/+oO7K4TMqZ/xVPNBDlhPbNH9+abX2NlWyS6Mb9HzPLO+mrEUGAAAA
			AACAAqeAjGtJ0LoFk3XIp5KGP9AxfXBMknxaqdezd8on+lvNXRkjWazy8fGRl0fKlFQWWX185OPl
			kffrFqUwLLJ6esrTI7MSGfLw9JSnNWUqLquqdfmXht5dU8Gx+7RgznT9MnOFtl4qrSolJclHDXv3
			V7NyPjq9br5+m7dL3p36qnMpT3mmrF1UoZOef6SFqhaJ0va/5uu39TGq/0BftSrmluaK55FkeMjT
			01NWS75pybRW83DWJfOi+anh/cM0uH01+ZzdpDnTpmvOxggFN+qlZ55qlxr4UoV2eu6JXmpWKV67
			/5qvX+as0AFVU6dHhunhemkvqK2122tgwzLyPL9dcxYeUqKPZK3SRS8P7qC6QbHOY6fN0pLt8Spb
			qUSBbjvD4ix32q2as7as1OEJPXPPnap2yXkvzVhxUGb1Nhr83H1q6J964nRtUrJJX/Wq5qOEbX/o
			540X5Vu6nPwPr9CMadP1y5w1OlXqTvV/oqczsJQfZdavSzTWY090053+EQpdMF0L9koNegzRy50q
			ZJNNxjbP4bnSqaAOg+5WXf94bf9run5bG656fbuqvtuzxb9+Xz3To77K2k5pzYJZWnKylPo81FFV
			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
			zq1Wz7Sp2kybTTE2Q/6epmKSXAmUxXSNpl2XEkxZfaxu53BO8ZhoKYDTv5nnNOPHOWrXpoWmrdiu
			V+9slA/ml43U3BE99Venefq6d2BeF6ZAKoj9+DJ2m6KTdHk/NO26lGBXvCklJSUrOt5wTcOoy6Zs
			zKyfF7Waiks20+0DAAAAAAAAbn2mbDaHrJYs3ont+kUDxkgfTx8sj6kvaNTiJCnZ0CtPz5LRcbim
			PlpL9sQ4bf9xmP6zxvnGzrTdpX9/P0h3+HrK0D79POg9Jb82Qr5ffamFMpWc0ExvTH5IpZaP1fDf
			j0lmshKaP6/f/nWnvD1MJcdv05ShX2up1ZBkKrnNy5o+pG6Oa3Q18leALJ3aGjC8kToePyspWCkj
			SOze6Udjmcnxikm2uo08y549MUZxiZJXlmuCOUeBJaV+90pda8ktE0XHpaWQ1Uf+3g7FxLmOuxSj
			6GjXOSzJuhRjk6e/+yJ2Gc9hla/7fjPlGC/ZY9LSWX3Tj55JqUtqSXNpnbP4+Hh98MEHioyM1PHj
			x/XUU09d9nI9MTFR3377rdatW6fFixfr008/VZEiRW58YXLCtGvzthg92rS5AgPj1GbxSc04W00D
			yqS03TGNf/eQku6/QzXX7tKnkc5rckfTBvq4Y5CKWA2dX7VG7baV1NzOiXpoVpwzW5uvPh3RWM0y
			vpw/v08jxoarxXNt3c7hnOJxSqUmGte2ZN60w7U2X9g6Ld02QM/PriL1+VEzHrxDD5S7zqCBay2+
			1CCFryOTJPGKSfszg7T73UzWpZhYxdskW0KsoqO90vWF9P0gs76Udl5ZfXL8rLjVFLh+nJn9m9Xi
			Z+mX9zOMLju/X299E6ZVCZJ91hrN8/DUyKdbqVegXZdO7taIyee1yZBS+vmnnYLl46HUfv7fhtF6
			ca1Nd7VtqE/bFKz+CgAAAAAAAFwre+Jxhf59Qs07lLpi2hqPTtLUhpPVc2p5ffvB3SopSWaydk16
			Wh/4va5pU5wj06KWvKfBo5dowkfdFex6EfvnuF366JdJelQRWj76ZY0atEa+vV3HhC/XB899oikt
			/qehd0Ro+ZhPdGbQl5raNUhShJYvici1+uffeefsiTp0aJuKpg6dc65ZlHEtr/ML31TLEYt0PgdZ
			msnxWv9lT93d915N2pNVmp36uve96tbX+bm763itv5Qs0y2P6PXfqlNqmn7q9Poind/zo7r1Hanp
			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
			WyJT+x+/DaY1OR2yXDhqvpN/9oeb+fqY7Y1/9294Ts3GGGY++BDLGsyiv+npfzJ7zgNHTzLbiYm5
			jRfvKOK7N9xcX8rsZ+ceXW/PaCU85mhGGvrfzfJnYeIDDes1ixcXxNQOCP6CyRff1ejvhtkeTczn
			fzhuqYlZvLJg7nFBZCO28Oj6mZpm+6Kjv9PA6J+/w5O1garz3kZpVQxlZeXBsy/mWIFAgF279zJ+
			3OgzOm/tuo2UlZczacJYrFYrJpOpSef5/X48Hg/LVqwmOiqK0aOGn5/eExERERERERERkQtWzSyy
			mn+P/vnb9Q/NReT88+W+xw9vLuX+lT9Qyk85xspVa+nXtzdG47kdJNaqxnSPHjWcTz77ipWr19Gn
			dy9iops2G6y0rJw9e/fhcrkZfYmCYyIiIiIiIiIiInJ65yI9roicG2nzXiftzqcVHJPzplUFyACu
			vvIy1q7byNJlK6l0OJp0TkR4OD26d2Pa1MktXX0RERERERERERERETlD/e45cY1XkebU6gJkUDOT
			TGkSRUREREREREREREREpDloVV8RERERERERERERERFpUxQgExERERERERERERERkTZFATIRERER
			ERERERERERFpUxQgExERERERERERERERkTZFATIRERERERERERERERFpUxQgExERERERERERERER
			kTZFATIRERERERERERERERFpUxQgExERERERERERERERkTZFATIRERERERERERERERFpUxQgExER
			ERERERERERERkTbF3JyFe73elm6fiIiIiIiIiIiIiIiIXIAsFkuzld2sAbLNW7Y1Z/EiIiIiIiIi
			IiIiIiLyLTVq5PBmK7tZA2QDB/ZvzuJFREREREREREREREREzpjWIBMREREREREREREREZE2RQEy
			ERERERERERERERERaVMUIBMREREREREREREREZE2RQEyERERERERERERERERaVMUIBMRERERERER
			EREREZE2RQEyERERERERERERERERaVMUIBMREREREREREREREZE2RQEyERERERERERERERERaVMU
			IBMREREREREREREREZE2RQEyERERERERERERERERaVPMLV2Bxni9Xnw+P8FgsEnHGwwGzGYTFoul
			pasuIiIiIiIiIiIiIiIirVyrC5C53W42b95Gbm4eVc7qJp0TZg8lMbEzQ4cOwmaztXQTRERERERE
			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
			dJBmhIiIiIiISKunNchERERERERERERERESkTVGATERERERERERERERERNoUBchERERERERERERE
			RESkTVGATERERERERERERERERNoUBchERERERERERERERESkTVGATERERERERERERERERNoUBchE
			RERERERERERERESkTVGATERERERERERERERERNoUBchERERERERERERERESkTVGATERERERERERE
			RERERNoUBchERERERERERERERESkTVGATERERERERERERERERNoUc3MWbjAYWrp9IiIiIiIiIiIi
			IiIiIsdo1gBZiM3W0u0TEREREREREREREREROYZSLIqIiIiIiIiIiIiIiEibogCZiIiIiIiIiIiI
			iIiItCkKkImIiIiIiIiIiIiIiEibogCZiIiIiIiIiIiIiIiItCkKkImIiIiIiIiIiIiIiEibogCZ
			iIiIiIiIiIiIiIiItCkKkImIiIiIiIiIiIiIiEibogCZiIiIiIiIiIiIiIiItCkKkImIiIiIiIiI
			iIiIiEibogCZiIiIiIiIiIiIiIiItCkKkImIiIiIiIiIiIiIiEibYm7pCjTG7fbg83kJBIJNOt5o
			NGA2W7DZrC1ddREREREREREREREREWnlWl2ArLraycZNW8g5kEtVVTUYTnNCEMLCQklOSmT4sCGE
			htpbugknCLhcHHEFCQuzE2lp6dqIiIiIiIg0H7fbg9fnJdjEAY8i0vYYjAYsGugsIiIiLaxVBcjc
			bg9fzv2a2NgYJk0YS1hYKAbDqSNkwWCQqqpq9mdk8eXcr7ny8kub9QOW3+miwB0Eg5H4KBtNiXcV
			L1/G+Hlu7p59JQ8POM+dKiIiIiIicp5UVzvZvGUb2dm5OKqrWro6ItJKhdrtpCS33oHOIiIi0ja0
			qgDZqjXriI2NZvjQQZjNZgwGQ5MCZCEhIURFRbJx81ZWrVnHRZMnNFMN/WTNXcz0lT4MIbG8+9tx
			DA853RQ3ERERERGRbz+328NX8xbQs2c3Lrv0YkwmU0tXSURaqYqKSvbtT+eLr+Zx1RUzNZNMRERE
			WoSxpSvQ0P70THr36onNZsNqtZ7Rfzabjd69erI/PbP5Kug9xMKdPsLCzES7Snh/SzVKGiIiIiIi
			IgKrVq+jZ89upCQlKTgmIqcUGRnB8GFDiImJYdXqdS1dHREREWmjWlWAzOFwEB0dhdlsxmQyYTKZ
			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
			nDaDpoiIfKvEx8Zy+aUX8+W8RaRn5lBY/Cmjhw+hW9dkLrloEjm5eaRnZnEo/zBulxcIYjAYiI2N
			oWtyIv36pBIWFnrW9QgGgwQCAfx+P16vj8ysHNZu3EJ5eQVRUZHMnDGV+Nhvz2AjuXAoQCYiIiIi
			IiKtxrkNzkjL81CatZcDpgj6TL2KGT21Mtb51Y0Z9yp9oYhIW9alUwKzrr6MZSvWcPBgPnMXLKFD
			h3i6paTQKaEDI4YNwWo2U+104vP7sYeEYDHXhA38fj8VFZVnXQePz0d5eQWH8o+QmZ3NkSNF2KxW
			uqYkMmnCGAXHpMUoQCYiIiIiIiIizUQBGhERkZYWHxvLrKtmsmXbTrbt3E15eSUbNm2tT63YML1i
			czAYDBgMBkwmE2azifbt4xnUvy9DBvVv6a6RNk4BMhERERERERERERGRb7khg/ozZFB/0jOzOJCb
			R0FRMY7KKrw+X7Ne12I2Ex4RRvv4OJISO9OjW9eW7goRQAEyEREREREREREREZE2o0e3rgpSiQBa
			GldERERERERERERERETaFAXIRERERERE5KwZjfp6KSJnJhAI6G+HiIiItBh9ChEREREREZGzFh0V
			jdvtbulqiMgFpLi4hOio6JauhoiIiLRRCpCJiIiIiIjIWevfL5XM7Bx8zbzIu4hc+AKBAG63m737
			9tO/X2pLV0dERETaKHNLV0BEREREREQufCOGD+XzL+dhNpvo2L49BoOhpaskIq1UZWUV2QcOEAwG
			GTF8aEtXR0RERNooBchERERERETknLhi5gw2bNzMilXrcFQ5Wro6ItJKhYeF06N7ioJjIiIi0qIU
			IBMREREREZFzZsTwoXroLSIiIiIirZ7WIBMREREREREREREREZE2RQEyERERERERERERERERaVMU
			IBMREREREREREREREZE2RQEyERERERERERERERERaVMUIBMREREREREREREREZE2RQEyERERERER
			ERERERERaVMUIBMREREREREREREREZE2RQEyERERERERERERERERaVMUIBMREREREREREREREZE2
			RQEyERERERERERERERERaVMUIBMREREREREREREREZE2RQEyERERERERERERERERaVPMzVl4MBhs
			6faJiIiIiIiIiIiIiIjIBchgMDRb2c0aIHO53c1ZvIiIiIiIiIiIiIiIiHxL2UNCmq1spVgUERER
			ERERERERERGRNkUBMhEREREREREREREREWlTFCATERERERERERERERGRNkUBMhERERERERERERER
			EWlTFCATERERERERERERERGRNkUBMhEREREREREREREREWlTFCATERERERERERERERGRNkUBMhER
			EREREREREREREWlTFCATERERERERERERERGRNkUBMhEREREREREREREREWlTFCATERERERERERER
			ERGRNsXc0hVojNvtxuv1EggEm3S80WjAYrFgs9lauuoiIiIiIiIiIiIiIiLSyrW6AFlVdTXbt+0k
			79BhnE5nk86x2+107tSRgYP6ExYa2tJNaCZeykt8VJpMJERZMbV0dURERERERBpxpgMeRaTt0UBn
			ERERaQ1aVYDM7XazaPFy2sfHMXniWEJD7RgMhlOeEwwGqa52kp6RxaLFy5k+bcq5/4DlcXPQESDE
			biPeflxWSr+HonI/LquZLuGWZuydXF75Wzqvt0tg6QMDiG/GK4mIiIiIiHwTxwx4dDVtwKOItD32
			kLYw0FlERERau1YVIFu/fhPxcTEMHTIQs9mMwWBoUoAsJCSEoZERbNy8lfXrNzFhwthzW7H0rcx4
			s5wJFw/nxYtij91XksZvns5nRf8e7LylW0t3oYiIiIiISItwu90sXbqSmNhoJk8cR2RkREtXSURa
			qYqKSvZlZLBo0TKmX3KRZpKJiIhIizCefRHnTmZWDr179cRms2G1Ws/oP5vNRu9ePcnMymnpZoiI
			iIiIiLQ569dvomfPbgwfMljBMRE5pcjICIYPGUxsbAzr129q6eqIiIhIG9WqZpBVVVcTHR2F2WzG
			aDSedvZYnWAwiMFgIDo6iqrq6pZuBhDA6/RQ6griCdbk1g4PtRJprYlHBv1eHFU+HD7wc+J+gIDX
			Q1mVn+pAzf7I8OAZX8fvdJHvDBJhNxN0+3AEDMREhRCmBcxEREREROQcy8zKYfiwIS1dDRG5gPTu
			1ZMv53597jMBiYiIiDRBqwqQAZhMpvrUik0NkAEYDAZMptYQ+QniqShh9Yp9vL7DRU4AbAYzF03s
			zfdHtCPKasCVt5+35hUwryRIuT+AMWhh+pTe3Du6PeEmwOska8tunllUwkafiTh7CNfOiMJxhtcp
			XbOWGQs9zBrTmbDcEpZUW/npd0cxI/abtUxERERERORkqqqrW8l3MhG5UERGRrSSgc4iIiLSFrW6
			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
			B+Xh7gqIiIiIiIjIz9+gQf1ZsmQ5JpOJyIhOGAwGd1dJRNqpyspKMg5kgaOeQYP6u7s6IiIi0kEp
			IBMREREREZEzYsqUCWzduoPVa9dTVV3l7uqISDvl7+dPbPdohWMiIiLiVgrIRERERERE5IwZNKi/
			LnqLiIiIiEi7pznIREREREREREREREREpENRQCYiIiIiIiIiIiIiIiIdigIyERERERERERERERER
			6VAUkImIiIiIiIiIiIiIiEiHooBMREREREREREREREREOhQFZCIiIiIiIiIiIiIiItKhKCATERER
			ERERERERERGRDkUBmYiIiIiIiIiIiIiIiHQoCshERERERERERERERESkQ1FAJiIiIiIiIiIiIiIi
			Ih2KAjIRERERERERERERERHpUBSQiYiIiIiIiIiIiIiISIfi0ZaFGwwGd7dPRERERERERERERERE
			pJk2Dch8vL3d3T4RERERERERERERERGRZjTEooiIiIiIiIiIiIiIiHQoCshERERERERERERERESk
			Q1FAJiIiIiIiIiIiIiIiIh2KAjIRERERERERERERERHpUBSQiYiIiIiIiIiIiIiISIeigExERERE
			REREREREREQ6FAVkIiIiIiIiIiIiIiIi0qEoIBMREREREREREREREZEORQGZiIiIiIiIiIiIiIiI
			dCgKyERERERERERERERERKRD8XB3BVpisViora3D7nC0an2T0YiXlye+vr7urrqIiIiIiIiIiIiI
			iIi0c+0uIKuoqGTzlm1kZ+dSZanGcIL16wF/Xz+iorowZPBAAgMD3N0EERERERERERERERERacfa
			VUBmsVj4btFSIsLDOH/sSPz8fDEYjh+R1dfXU11tIX1fJt8tWsol06eqJ5mIiIiIiIibWCwWamrr
			cLRyRBAR6XiMRiPeGglIRERE3KxdBWRr1q4nPCyUwYP64+HhgcFgaFVA5uPjQ1BQIJu3bGfN2vVM
			njT+zFasppr0shZ+3Jk8iA3zweTuAyciIiIiItIOlFdUsGPHLg5k5VBdXe3u6ohIO+Xj40O3qC4M
			HjyAoMBAd1dHREREOqh2FZClpWdw6cUX4u3tjclkanVAVl9fj8lkIqlnAl//7/szH5Dt3cTUt0rw
			9DAS4NGkPhFRfPe7QYSfwV05aiwUVtrxDAjA7H1mmyEiIiIiItJWqi0WlixdTmJCDy68YCImk24l
			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
			IiIiInKOmz24E7MHd2JZainrD1SQUmAhv7IOS5399As/Dl9PE50CPEmK8GV4TCCTEkPcfShEAAVk
			IiIiIiIiIiIiIiIdxqTEEIVUIoCmxhUREREREREREREREZEORQGZiIiIiIiInDajUT8vReTk2O0O
			/d8hIiIibqNvISIiIiIiInLaQs1mrFaru6shIj8jhYWFhJrN7q6GiIiIdFAKyEREREREROS09evb
			i32ZmdTW1rq7KiLSztntDqotFvampdOvby93V0dEREQ6KA93V0BERERERER+/oYOGcTC7xaTeSCL
			iPAwDBjcXSURaacqq6rIOpiN0Whk6JBB7q6OiIiIdFAKyEREREREROSMmH7RBWzavI0NG7dSVV3l
			7uqISDvl7+dPj7juDB0y0N1VERERkQ5MAZmIiIiIiIicMUOHDNRFbxERERERafc0B5mIiIiIiIiI
			iIiIiIh0KArIREREREREREREREREpENRQCYiIiIiIiIiIiIiIiIdigIyERERERERERERERER6VAU
			kImIiIiIiIiIiIiIiEiHooBMREREREREREREREREOhQFZCIiIiIiIiIiIiIiItKhKCATERERERER
			ERERERGRDkUBmYiIiIiIiIiIiIiIiHQoCshERERERERERERERESkQ1FAJiIiIiIiIiIiIiIiIh2K
			AjIRERERERERERERERHpUDzasvDq6mp3t09ERERERERERERERER+hvz8/Nqs7DYNyJJT0tqyeBER
			ERERERERERERETlHDRk8oM3KbtOArC0rLiIiIiIiIiIiIiIiInIqNAeZiIiIiIiIiIiIiIiIdCgK
			yERERERERERERERERKRDUUAmIiIiIiIiIiIiIiIiHYoCMhEREREREREREREREelQFJCJiIiIiIiI
			iIiIiIhIh6KATERERERERERERERERDoUBWQiIiIiIiIiIiIiIiLSoSggExERERERERERERERkQ5F
			AZmIiIiIiIiIiIiIiIh0KB7urkBLqqqqqamtwWF3tGp9o8mIt5c3/v5+7q66iIiIiIiIiIiIiIiI
			tHPtLiArKytn67Yd5OTmYbFYWrWNr68vXbt0ZtDA/gQHB7m7CSIiIiIiIiIiIiIiItKOtauArKqq
			msVLfyAiIpzzx4zAz88Pg8Fw3G3q6+uprq4mPWM/i5f+wLQLL1BPMhERERERERERERERETmmdjUH
			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
			tIyNG7cQF9udwMCAVm1XUVFJRuZ+TEaTwjERERERERERERFplaQ57/HZHHfXQkQA9m9cTuXNjysc
			k7OmXQVkABdOncTmLdvYun0nVVVVrdrG39+fuNgYhWMiIiIiIiIiIiIiIj9DSXPe4zN3V0I6lHYX
			kIGzJ5nCLhEREREREREREREREWkLZ3bARhEREREREREREREREZF2TgGZiIiIiIiIiIiIiIiIdCgK
			yERERERERERERERERKRDUUAmIiIiIiIiIiIiIiIiHYoCMhEREREREREREREREelQFJCJiIiIiIiI
			iIiIiIhIh6KATERERERERERERERERDoUBWQiIiIiIiIiIiIiIiLSoSggExERERERERERERERkQ7F
			oy0Lr6qqdnf7RERERERERERERERERJpps4DM29uL3XuS3d0+ERERERERERERERER+Zny9vZqk3IN
			paVl9We6UIfDgc1mo77e0eYHRkRERERERERERERERM5NBoMRDw8PjMYzO2tYm/QgMxqdlRURERER
			ERERERERERE5HWc6HIM2HGKxLSorIiIiIiIiIiIiIiIicrqUYomIiIiIiIiIiIiIiEiHooBMRERE
			REREREREREREOhQFZCIiIiIiIiIiIiIiItKhKCATERERERERERERERGRDkUBmYiIiIiIiIiIiIiI
			iHQoCshERERERERERERERESkQ1FAJiIiIiIiIiIiIiIiIh2KAjIRERERERERERERERHpUBSQiYiI
			iIiIiIiIiIiISIfi0dY7sFqtWK012B0Od7dV2gmT0YiPjzc+Pj4nXLekuo6Sqjrq7Of2+8fTZMTs
			74nZz9PdVREREREREREREREROee1aUBmtVrZvWcvBYWF1NTUuLut0k54e3sTER5On949jxuSlVTX
			8dH6g2w9UE651ebuarepIB8PBsUEcc3wbgrJRERERERERERERETamKG0tKy+rQrfuGkr1ZZqxowe
			Sag5xN1tlXaiuKSU1WvW4efrx3lDBx1zvZeW7SOrtIZ7LkggNtzf3dVuU5mFVfxrcRrRId7cNamH
			u6sjIiIiIiIiIiIiInJOa9M5yFLT9ykck6OEmkMYM3okqen7jrve11sPdYhwDCA23J97Lkjg662H
			3F0VEREREREREREREZFzXpsGZFVVVQrHpEWh5hCqqqqOu05+RU2HCMcaxIb7k1+hoUhFRERERERE
			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
			GcmJljWI57K/P310mUcMvxY382lud/372GWdee0mIPMI7kbvmtU8/9TqwwsvfpqPZx8OjULG384f
			Lvkt/35qruv5P/Lm/SXcvj64sSG+EUn0bowjPQiJTjocHCXN4s37c7n9tbk8XvXHZmUDEDqOu+/f
			xO0vz2UFABfx1NzrWfrnwwFnyPjf8SbPN1kHBv/yn66eX8FMmnU9//7zyzy+Ei7949tcHxFMdK9u
			h+cGCx3HQy/D3Huc6+Daz3Pvzzo8JJ/HEdu00BbfiAzmNxwHYPAvX+KhhsCto+rRj09+c+yne140
			kk8A2OdaEsX1v4ni+uMU2WnYUD4Z1tIzzm2bsVaRaTEwbmDXVvcEFBERERERERERERGRs89QWlpW
			31aFv/7We9z3f3e5u43STj33wkvcdvOx46khf1rOzqentsGe9/Hsw2lw3VTu79PyGoXLljNhWxjL
			f9ef8BMVZ7OQlV9H5b5d3LPRiz/cOLR5T7ST0O/hRWx+fEIbtFlERERERERERERERBq0mx5kImdP
			S8MjNucRGEjvTr6t+4BUZPPe54Vs4fTCMREREREREREREREROTsUkEkH1MLwiEcIOebQii0wJ/Dw
			bxLc3SgREREREREREREREWklo7srICIiIiIiIiIiIiIiInI2KSATERERERERERERERGRDkUBmYiI
			iIiIiIiIiIiIiHQobRqQmUwmbDabu9so7ZDNZsNkMh13HU+TEWud3d1VPWusdXY8TcqsRURERERE
			RERERETaWptejQ8LDWX/gYMKyaQZm83G/gMHCQsNPe56SZ39WZde3CFCMmudnXXpxSR19nd3VURE
			REREREREREREznkebVl4395JbNm6HYfDQXBQoLvbKu1EWXkF27bvpG/vpOOuN3tENxasO4DN7iDK
			7Ovuarep7BILn244yOwR3dxdFRERERERERERERGRc56htLSsvi13kJ6ewb6M/VRVV7m7rdJO+Pv5
			0yOuO/HxcSdc99sdh/h+Zz75FbXurnab6hToxYX9OjGtf6S7qyIiIiIiIiIiIiIics5r84BMRERE
			REREREREREREpD1p0znIRERERERERERERERERNobBWQiIiIiIiIiIiIiIiLSoSggExERERERERER
			ERERkQ5FAZmIiIiIiIiIiIiIiIh0KArIREREREREREREREREpENRQCYiIiIiIiIiIiIiIiIdyv8D
			w4q4ff0hPhQAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMTAtMDNUMDk6NDA6MTMrMDA6MDCkbUOv
			AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTEwLTAzVDA5OjQwOjEzKzAwOjAw1TD7EwAAACh0RVh0
			ZGF0ZTp0aW1lc3RhbXAAMjAyMi0xMC0wM1QwOTo0MDoxMyswMDowMIIl2swAAAAASUVORK5CYII=`})),'bookmark':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:24,height:24,viewBox:'0 0 24 24',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M5 5C5 3.89543 5.89543 3 7 3H17C18.1046 3 19 3.89543 19 5V21L12 17.5L5 21V5Z',stroke:'#4B5563',strokeWidth:'2',strokeLinecap:'round',strokeLinejoin:'round'})),'caret':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('svg',{width:20,height:20,viewBox:'0 0 20 20',fill:'none'},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)('path',{d:'M8 6L14 10.03L8 14V6Z',fill:'#9CA3AF'})),'star':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("path",{d:"M13.9539 6.51343C13.9015 6.34266 13.8041 6.19076 13.6727 6.07517C13.5413 5.95959 13.3813 5.885 13.2111 5.85997L10.1805 5.40055L8.82517 2.53574C8.74921 2.37495 8.63162 2.23954 8.48572 2.14486C8.33981 2.05018 8.17141 2 7.99958 2C7.82774 2 7.65934 2.05018 7.51343 2.14486C7.36753 2.23954 7.24994 2.37495 7.17398 2.53574L5.8186 5.40055L2.78804 5.85997C2.61811 5.88583 2.4585 5.96074 2.32723 6.07624C2.19595 6.19173 2.09825 6.34321 2.04514 6.51357C1.99204 6.68394 1.98565 6.8664 2.0267 7.04035C2.06775 7.2143 2.1546 7.37281 2.27744 7.49799L4.47102 9.72813L3.95322 12.8765C3.9237 13.0532 3.94229 13.235 4.00687 13.4012C4.07145 13.5675 4.17943 13.7115 4.31854 13.8169C4.45766 13.9223 4.62233 13.9849 4.79384 13.9976C4.96536 14.0103 5.13684 13.9725 5.28881 13.8886L7.99958 12.402L10.7103 13.8886C10.8624 13.9717 11.0337 14.0089 11.2049 13.9959C11.3761 13.9829 11.5404 13.9202 11.6793 13.815C11.8182 13.7097 11.9261 13.5661 11.9909 13.4003C12.0557 13.2344 12.0747 13.053 12.0459 12.8765L11.5281 9.72813L13.7217 7.49737C13.8452 7.37272 13.9324 7.21429 13.9735 7.04025C14.0146 6.86621 14.0078 6.68362 13.9539 6.51343Z",fill:"#F59E0B"})),'chart':(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("path",{d:"M2.70588 9.33331C2.31553 9.33331 2 9.63198 2 9.99998V13.3333C2 13.7013 2.31553 14 2.70588 14C3.09624 14 3.41176 13.7013 3.41176 13.3333V9.99998C3.41176 9.63198 3.09624 9.33331 2.70588 9.33331Z",fill:"#94A3B8"}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("path",{d:"M6.23529 6.66663C5.84494 6.66663 5.52941 6.9653 5.52941 7.3333V13.3333C5.52941 13.7013 5.84494 14 6.23529 14C6.62565 14 6.94118 13.7013 6.94118 13.3333V7.3333C6.94118 6.9653 6.62565 6.66663 6.23529 6.66663Z",fill:"#94A3B8"}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("path",{d:"M9.76471 9.33331C9.37435 9.33331 9.05882 9.63198 9.05882 9.99998V13.3333C9.05882 13.7013 9.37435 14 9.76471 14C10.1551 14 10.4706 13.7013 10.4706 13.3333V9.99998C10.4706 9.63198 10.1551 9.33331 9.76471 9.33331Z",fill:"#94A3B8"}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("path",{d:"M13.2941 6.66663C12.9038 6.66663 12.5882 6.9653 12.5882 7.3333V13.3333C12.5882 13.7013 12.9038 14 13.2941 14C13.6845 14 14 13.7013 14 13.3333V7.3333C14 6.9653 13.6845 6.66663 13.2941 6.66663Z",fill:"#94A3B8"}),(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("path",{d:"M2.70518 7.3333C2.90776 7.3333 3.10824 7.2513 3.24871 7.0933L6.23529 3.70795L9.22188 7.0933C9.49082 7.3973 10.0379 7.3973 10.3068 7.0933L13.8362 3.09328C14.0861 2.81061 14.0452 2.38994 13.7459 2.15461C13.4452 1.91861 13.0012 1.95727 12.7513 2.23994L9.76471 5.62529L6.77812 2.23994C6.50918 1.93594 5.96212 1.93594 5.69318 2.23994L2.16376 6.23996C1.91388 6.52263 1.95482 6.9433 2.25412 7.17863C2.38612 7.28263 2.54565 7.3333 2.70518 7.3333Z",fill:"#94A3B8"}))};/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Astra_Admin_Icons);

/***/ }),

/***/ "./assets/src/common/common.js":
/*!*************************************!*\
  !*** ./assets/src/common/common.js ***!
  \*************************************/
/***/ (() => {

window.astWpMenuClassChange = function (path) {
  const pageSlug = astra_admin.home_slug;
  const pathMap = {
    "custom-layouts": "custom-layouts",
    spectra: "spectra",
    woocommerce: "woocommerce"
  };
  const queryPath = pathMap[path] ? `&path=${pathMap[path]}` : "";
  const pageUrl = `admin.php?page=${pageSlug}${queryPath}`;
  const bodyClasses = {
    settings: "ast-admin-settings-page",
    woocommerce: "ast-admin-extensions-page",
    "starter-templates": "ast-admin-starter-page"
  };

  // Remove all possible classes.
  document.body.classList.remove(...Object.values(bodyClasses));

  // Add the appropriate class if it exists in the map.
  if (bodyClasses[path]) {
    document.body.classList.add(bodyClasses[path]);
  }

  // Remove 'current' class from all items.
  document.querySelectorAll(".wp-submenu .current").forEach(item => item.classList.remove("current"));

  // Add 'current' class to matching items.
  document.querySelectorAll(`.wp-submenu-wrap li > a[href$="${pageUrl}"]`).forEach(item => item.parentElement.classList.add("current"));
};

/***/ }),

/***/ "./assets/src/common/skeleton/Rectangle.js":
/*!*************************************************!*\
  !*** ./assets/src/common/skeleton/Rectangle.js ***!
  \*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _Rectangle_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Rectangle.scss */ "./assets/src/common/skeleton/Rectangle.scss");



function RectSkeleton(props) {
  const {
    width,
    height,
    style
  } = props;
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "ast-skeleton ast-skeleton--rect ast-skeleton--wave",
    style: {
      width,
      height,
      ...style
    }
  });
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RectSkeleton);

/***/ }),

/***/ "./assets/src/common/skeleton/Skeleton.js":
/*!************************************************!*\
  !*** ./assets/src/common/skeleton/Skeleton.js ***!
  \************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _Skeleton_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Skeleton.scss */ "./assets/src/common/skeleton/Skeleton.scss");



function Skeleton() {
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "ast-skeleton ast-skeleton--wave"
  });
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Skeleton);

/***/ }),

/***/ "./assets/src/common/skeleton/Spacer.js":
/*!**********************************************!*\
  !*** ./assets/src/common/skeleton/Spacer.js ***!
  \**********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _Spacer_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Spacer.scss */ "./assets/src/common/skeleton/Spacer.scss");



function SpacerSkeleton(props) {
  const {
    height,
    style
  } = props;
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "ast-skeleton-base ast-skeleton--spacer",
    style: {
      height,
      ...style
    }
  });
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SpacerSkeleton);

/***/ }),

/***/ "./assets/src/common/skeleton/Text.js":
/*!********************************************!*\
  !*** ./assets/src/common/skeleton/Text.js ***!
  \********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _Text_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Text.scss */ "./assets/src/common/skeleton/Text.scss");



function TextSkeleton(props) {
  const {
    fontSize,
    width,
    style
  } = props;
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "ast-skeleton ast-skeleton--text ast-skeleton--wave",
    style: {
      fontSize,
      width,
      ...style
    }
  });
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TextSkeleton);

/***/ }),

/***/ "./assets/src/common/skeleton/index.js":
/*!*********************************************!*\
  !*** ./assets/src/common/skeleton/index.js ***!
  \*********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   RectSkeleton: () => (/* reexport safe */ _Skeleton_Rectangle__WEBPACK_IMPORTED_MODULE_4__["default"]),
/* harmony export */   SpacerSkeleton: () => (/* reexport safe */ _Skeleton_Spacer__WEBPACK_IMPORTED_MODULE_3__["default"]),
/* harmony export */   TextSkeleton: () => (/* reexport safe */ _Skeleton_Text__WEBPACK_IMPORTED_MODULE_2__["default"]),
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _Skeleton_Common_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Skeleton/Common.scss */ "./assets/src/common/skeleton/Common.scss");
/* harmony import */ var _Skeleton_Skeleton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Skeleton/Skeleton */ "./assets/src/common/skeleton/Skeleton.js");
/* harmony import */ var _Skeleton_Text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Skeleton/Text */ "./assets/src/common/skeleton/Text.js");
/* harmony import */ var _Skeleton_Spacer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Skeleton/Spacer */ "./assets/src/common/skeleton/Spacer.js");
/* harmony import */ var _Skeleton_Rectangle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Skeleton/Rectangle */ "./assets/src/common/skeleton/Rectangle.js");





/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_Skeleton_Skeleton__WEBPACK_IMPORTED_MODULE_1__["default"]);


/***/ }),

/***/ "./assets/src/dashboard-app/DocsPopup.js":
/*!***********************************************!*\
  !*** ./assets/src/dashboard-app/DocsPopup.js ***!
  \***********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _headlessui_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @headlessui/react */ "./node_modules/@headlessui/react/dist/components/transitions/transition.js");
/* harmony import */ var _headlessui_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @headlessui/react */ "./node_modules/@headlessui/react/dist/components/dialog/dialog.js");
/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _DashboardApp_pages__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @DashboardApp/pages */ "./assets/src/dashboard-app/pages/index.js");






const DocsPopup = () => {
  const [open, setOpen] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);
  const kbData = astra_admin.astra_docs_data && astra_admin.astra_docs_data?.categories;
  const docsTrigger = () => {
    if (kbData) {
      setOpen(true);
    } else {
      window.open(astra_admin.astraWebsite?.docsUrl, '_blank');
    }
  };
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.Tooltip, {
    text: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Knowledge Base', 'astra'),
    delay: 50
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "w-8 sm:w-10 h-8 sm:h-10 flex items-center whitespace-nowrap justify-center cursor-pointer rounded-full border border-slate-200"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("a", {
    onClick: docsTrigger,
    className: "text-xs sm:text-sm font-medium sm:leading-[0.875rem] text-slate-600 doc-icon"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("svg", {
    width: "30",
    height: "30",
    viewBox: "0 0 32 32",
    fill: "none",
    xmlns: "http://www.w3.org/2000/svg",
    "aria-hidden": "true"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("rect", {
    x: "0.5",
    y: "0.5",
    width: "31",
    height: "31",
    rx: "15.5",
    fill: "white"
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("path", {
    d: "M16 11.0347C14.6731 9.84713 12.9209 9.125 11 9.125C10.1234 9.125 9.28195 9.27539 8.5 9.55176V21.4268C9.28195 21.1504 10.1234 21 11 21C12.9209 21 14.6731 21.7221 16 22.9097M16 11.0347C17.3269 9.84713 19.0791 9.125 21 9.125C21.8766 9.125 22.7181 9.27539 23.5 9.55176V21.4268C22.7181 21.1504 21.8766 21 21 21C19.0791 21 17.3269 21.7221 16 22.9097M16 11.0347V22.9097",
    stroke: "#475569",
    strokeWidth: "1.4",
    strokeLinecap: "round",
    strokeLinejoin: "round"
  })), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "sr-only"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Knowledge Base', 'astra'))))), kbData && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_headlessui_react__WEBPACK_IMPORTED_MODULE_5__.Transition.Root, {
    show: open,
    as: react__WEBPACK_IMPORTED_MODULE_1__.Fragment
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_headlessui_react__WEBPACK_IMPORTED_MODULE_6__.Dialog, {
    as: "div",
    className: "relative z-10",
    onClose: setOpen
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "fixed inset-0 top-8 z-10 overflow-y-auto ast-kb-section"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex min-h-screen h-full items-end justify-center p-4 text-center sm:items-center sm:p-0 ast-kb-inner-wrap"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_headlessui_react__WEBPACK_IMPORTED_MODULE_5__.Transition.Child, {
    as: react__WEBPACK_IMPORTED_MODULE_1__.Fragment,
    enter: "ease-out duration-300",
    enterFrom: "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95",
    enterTo: "opacity-100 translate-y-0 sm:scale-100",
    leave: "ease-in duration-200",
    leaveFrom: "opacity-100 translate-y-0 sm:scale-100",
    leaveTo: "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_headlessui_react__WEBPACK_IMPORTED_MODULE_6__.Dialog.Panel, {
    className: "relative transform bg-white text-left transition-all min-h-screen w-full h-full lg:ml-40"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_DashboardApp_pages__WEBPACK_IMPORTED_MODULE_4__.Docs, {
    setOpen: setOpen
  }))))))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DocsPopup);

/***/ }),

/***/ "./assets/src/dashboard-app/MainNav.js":
/*!*********************************************!*\
  !*** ./assets/src/dashboard-app/MainNav.js ***!
  \*********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ MainNav)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _headlessui_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @headlessui/react */ "./node_modules/@headlessui/react/dist/components/disclosure/disclosure.js");
/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router/dist/index.js");
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/dist/index.js");
/* harmony import */ var _DocsPopup__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DocsPopup */ "./assets/src/dashboard-app/DocsPopup.js");
/* harmony import */ var _whats_new_library_useWhatsNewRSS__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./whats-new-library/useWhatsNewRSS */ "./assets/src/dashboard-app/whats-new-library/useWhatsNewRSS.js");








const CoreVersion = () => (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_3__.Fragment, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
  className: "flex items-center"
}, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", null, astra_admin.version), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
  className: "ml-1 sm:ml-2 text-[0.625rem] leading-[1rem] font-medium border border-slate-400 rounded-[0.1875rem] relative inline-flex flex-shrink-0 py-[0rem] px-1.5"
}, " ", (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("CORE", "astra"), " ")), astra_admin.pro_available && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
  className: "flex items-center pl-3"
}, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", null, astra_admin.plugin_ver), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
  className: "ml-1 sm:ml-2 text-[0.625rem] leading-[1rem] font-medium text-white border border-slate-800 bg-slate-800 rounded-[0.1875rem] relative inline-flex flex-shrink-0 py-[0rem] px-1.5"
}, " ", (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("PRO", "astra"), " ")), wp.hooks.applyFilters("astra_dashboard.after_navigation_version", (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", null)));
function MainNav() {
  // Initialize our library hook.
  (0,_whats_new_library_useWhatsNewRSS__WEBPACK_IMPORTED_MODULE_5__["default"])({
    rssFeedURL: astra_admin.astraWebsite?.whatsNewFeedUrl,
    selector: "#astra-whats-new",
    triggerButton: {
      beforeBtn: '<div class="w-8 sm:w-10 h-8 sm:h-10 flex items-center whitespace-nowrap justify-center cursor-pointer rounded-full border border-slate-200">',
      icon: '<svg width="18" height="18" viewBox="0 0 18 18" fill="none"><path d="M8.16667 3.90182V15.0335C8.16667 15.8434 7.51008 16.5 6.70015 16.5C6.08038 16.5 5.52752 16.1104 5.31907 15.5267L3.53039 10.4024M14 9.83333C15.3807 9.83333 16.5 8.71404 16.5 7.33333C16.5 5.95262 15.3807 4.83333 14 4.83333M3.53039 10.4024C2.33691 9.89508 1.5 8.71194 1.5 7.33333C1.5 5.49238 2.99238 4 4.83333 4H6.36007C9.77727 4 12.7141 2.97159 14 1.5L14 13.1667C12.7141 11.6951 9.77727 10.6667 6.36007 10.6667L4.83331 10.6667C4.37098 10.6667 3.93064 10.5725 3.53039 10.4024Z" stroke="#475569" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"></path></svg>',
      afterBtn: '</div>'
    },
    flyout: {
      title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("What's New?", "astra"),
      formatDate: (/** @type Date */date) => {
        const dayOfWeek = date.toLocaleDateString('en-US', {
          weekday: 'long'
        });
        const month = date.toLocaleDateString('en-US', {
          month: 'long'
        });
        const day = date.getDate();
        const year = date.getFullYear();

        // Format the date string
        const formattedDate = `${dayOfWeek} ${month} ${day}, ${year}`;
        return formattedDate;
      }
    }
  });
  const navMenus = [{
    name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("Welcome", "astra"),
    slug: astra_admin.home_slug,
    path: ""
  }, {
    name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("Settings", "astra"),
    slug: astra_admin.home_slug,
    path: "settings"
  }, {
    name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("Free vs Pro", "astra"),
    slug: astra_admin.home_slug,
    path: "free-vs-pro"
  }];

  // insert starter templates menu if not white labeled and if promotion enabled.
  if (!astra_admin.is_whitelabel && astra_admin?.starter_templates_data?.is_promoting) {
    navMenus.splice(2, 0, {
      name: astra_admin.starter_templates_data.title,
      slug: astra_admin.home_slug,
      path: "starter-templates"
    });
  }
  const redirectUpgradeAstraProPurchase = () => {
    window.open(astra_admin.astra_cta_btn_url, '_blank');
  };
  const menus = wp.hooks.applyFilters('astra_dashboard.main_navigation', navMenus);
  const query = new URLSearchParams((0,react_router_dom__WEBPACK_IMPORTED_MODULE_6__.useLocation)()?.search);
  const activePage = query.get("page") || astra_admin.home_slug;
  const activePath = query.get("path") || "";
  if (activePath === 'spectra') {
    return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_3__.Fragment, null);
  }
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_headlessui_react__WEBPACK_IMPORTED_MODULE_7__.Disclosure, {
    as: "nav",
    className: "bg-white border-b border-slate-200"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "max-w-3xl mx-auto px-3 sm:px-6 lg:max-w-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "relative flex flex-col lg:flex-row justify-between h-28 lg:h-16 py-3 lg:py-0"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "lg:flex-1 flex items-start justify-center sm:items-stretch sm:justify-start"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("a", {
    href: astra_admin.astra_base_url,
    className: "flex-shrink-0 flex items-center"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", {
    className: "lg:block h-[2.6rem] w-auto",
    src: astra_admin.logo_url,
    alt: "Workflow"
  })), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "ml-4 sm:ml-8 sm:flex gap-y-4 gap-x-8"
  }, menus.map((menu, key) => (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_3__.Fragment, {
    key: `?page=${menu.slug}&path=${menu.path}`
  }, menu.path === 'starter-templates' && astra_admin.starter_templates_data.is_available ? (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("a", {
    index: key,
    href: astra_admin.starter_templates_data.redirection,
    target: "_self",
    className: `${activePage === menu.slug && activePath === menu.path ? 'mb-4 sm:mb-0 border-astra text-astra active:text-astra focus:text-astra focus-visible:text-astra-hover hover:text-astra-hover inline-flex items-center px-1 border-b-2 text-sm leading-[0.875rem] font-medium' : 'mb-4 sm:mb-0 border-transparent text-slate-500 active:text-astra focus-visible:border-slate-300 focus-visible:text-slate-800 hover:border-slate-300 hover:text-slate-800 inline-flex items-center px-1 border-b-2 text-sm leading-[0.875rem] font-medium'}`
  }, menu.name) : (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(react_router_dom__WEBPACK_IMPORTED_MODULE_8__.Link, {
    index: key,
    to: {
      search: `?page=${menu.slug}${'' !== menu.path ? '&path=' + menu.path : ''}`
    },
    className: `${activePage === menu.slug && activePath === menu.path ? 'mb-4 sm:mb-0 border-astra text-astra active:text-astra focus:text-astra focus-visible:text-astra-hover hover:text-astra-hover inline-flex items-center px-1 border-b-2 text-sm leading-[0.875rem] font-medium' : 'mb-4 sm:mb-0 border-transparent text-slate-600 active:text-astra focus-visible:border-slate-300 focus-visible:text-slate-800 hover:border-slate-300 hover:text-slate-800 inline-flex items-center px-1 border-b-2 text-sm leading-[0.875rem] font-medium'}`
  }, menu.name))))), astra_admin.show_self_branding && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "absolute bottom-2 lg:inset-y-0 right-0 flex items-center pr-2 sm:static sm:inset-auto ml-auto lg:ml-6 sm:pr-0"
  }, !astra_admin.pro_available && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "text-sm font-medium text-slate-600 pr-3 tablet:pr-2 border-r hover:text-[#1E293B] hover:svg-hover-color"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
    onClick: redirectUpgradeAstraProPurchase,
    className: "inline-flex items-center text-[#046BD2] hover:text-[#1E293B] focus-visible:text-[#1E293B]"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("svg", {
    width: "16",
    height: "12",
    viewBox: "0 0 16 12",
    fill: "none",
    xmlns: "http://www.w3.org/2000/svg",
    className: "mr-2 svg-focusable"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("path", {
    d: "M3.3335 11.3337H12.6668M1.3335 0.666992L3.3335 8.66699H12.6668L14.6668 0.666992L10.6668 5.33366L8.00016 0.666992L5.3335 5.33366L1.3335 0.666992Z",
    stroke: "#046BD2",
    strokeLinecap: "round",
    strokeLinejoin: "round",
    className: "svg-path"
  })), (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Unlock Pro Features', 'astra'))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex items-center text-[0.625rem] sm:text-sm font-medium leading-[1.375rem] text-slate-400 mr-1 sm:mr-3 divide-x divide-slate-200 gap-3 pl-1 sm:pl-3 border-r"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(CoreVersion, null)), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "text-sm font-medium leading-6 text-slate-600 pr-3 tablet:pr-2"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_DocsPopup__WEBPACK_IMPORTED_MODULE_4__["default"], null)), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__.Tooltip, {
    text: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("Whats's New", "astra"),
    delay: 50
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    id: "astra-whats-new"
  }))), !astra_admin.show_self_branding && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "absolute inset-y-0 right-0 flex items-center pr-2 sm:static sm:inset-auto sm:ml-6 sm:pr-0"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex items-center whitespace-nowrap text-sm font-medium leading-[1.375rem] text-slate-400 mr-4 divide-x divide-slate-200 gap-3"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(CoreVersion, null))))));
}

/***/ }),

/***/ "./assets/src/dashboard-app/SettingsRoute.js":
/*!***************************************************!*\
  !*** ./assets/src/dashboard-app/SettingsRoute.js ***!
  \***************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router/dist/index.js");
/* harmony import */ var _DashboardApp_pages__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @DashboardApp/pages */ "./assets/src/dashboard-app/pages/index.js");





// Define a mapping of paths to components.
const ROUTE_MAP = {
  "getting-started": _DashboardApp_pages__WEBPACK_IMPORTED_MODULE_2__.Welcome,
  "starter-templates": _DashboardApp_pages__WEBPACK_IMPORTED_MODULE_2__.StarterTemplates,
  settings: _DashboardApp_pages__WEBPACK_IMPORTED_MODULE_2__.Settings,
  "free-vs-pro": _DashboardApp_pages__WEBPACK_IMPORTED_MODULE_2__.FreeVsPro,
  "custom-layouts": _DashboardApp_pages__WEBPACK_IMPORTED_MODULE_2__.CustomLayouts,
  spectra: _DashboardApp_pages__WEBPACK_IMPORTED_MODULE_2__.SpectraScreen,
  woocommerce: _DashboardApp_pages__WEBPACK_IMPORTED_MODULE_2__.ExtensionScreen,
  docs: _DashboardApp_pages__WEBPACK_IMPORTED_MODULE_2__.Docs
};
function SettingsRoute() {
  const {
    search
  } = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_3__.useLocation)();
  const query = new URLSearchParams(search);
  const page = query.get("page");
  const path = query.get("path");
  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
    if (typeof astWpMenuClassChange === "function") {
      astWpMenuClassChange(path);
    }
  }, [path]);
  if (astra_admin.home_slug !== page) {
    return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", null, "Fallback Route Page");
  }
  const Component = ROUTE_MAP[path] || _DashboardApp_pages__WEBPACK_IMPORTED_MODULE_2__.Welcome;
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(Component, null);
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SettingsRoute);

/***/ }),

/***/ "./assets/src/dashboard-app/SettingsSavedNotification.js":
/*!***************************************************************!*\
  !*** ./assets/src/dashboard-app/SettingsSavedNotification.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ SettingsSavedNotification)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _headlessui_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @headlessui/react */ "./node_modules/@headlessui/react/dist/components/transitions/transition.js");
/* harmony import */ var _heroicons_react_outline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @heroicons/react/outline */ "./node_modules/@heroicons/react/outline/esm/CheckCircleIcon.js");
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router/dist/index.js");
/* harmony import */ var _heroicons_react_solid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @heroicons/react/solid */ "./node_modules/@heroicons/react/solid/esm/XIcon.js");
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);








function SettingsSavedNotification() {
  const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useDispatch)();
  const settingsSavedNotification = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useSelector)(state => state.settingsSavedNotification);
  const query = new URLSearchParams((0,react_router_dom__WEBPACK_IMPORTED_MODULE_4__.useLocation)()?.search);
  const status = query.get("status") ? query.get("status") : "";
  if ('' !== status && 'imported' === status) {
    dispatch({
      type: 'UPDATE_SETTINGS_SAVED_NOTIFICATION',
      payload: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Successfully imported!', 'astra')
    });
    setTimeout(() => {
      window.location = astra_admin.astra_base_url;
    }, 1000);
  }
  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
    if (settingsSavedNotification !== '') {
      const timer = setTimeout(() => {
        dispatch({
          type: 'UPDATE_SETTINGS_SAVED_NOTIFICATION',
          payload: ''
        });
      }, 2000);

      // Cleanup function to clear the timeout if the component unmounts or notification changes.
      return () => clearTimeout(timer);
    }
  }, [settingsSavedNotification]);
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    "aria-live": "assertive",
    className: "fixed inset-10 z-10 flex px-4 py-6 pointer-events-none sm:p-6 sm:items-start"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "w-full flex flex-col items-center space-y-4 sm:items-end"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_headlessui_react__WEBPACK_IMPORTED_MODULE_5__.Transition, {
    show: '' === settingsSavedNotification ? false : true,
    as: react__WEBPACK_IMPORTED_MODULE_1__.Fragment,
    enter: "transform ease-out duration-300 transition",
    enterFrom: "translate-y-2 opacity-0 sm:translate-y-0 sm:translate-x-2",
    enterTo: "translate-y-0 opacity-100 sm:translate-x-0",
    leave: "transition ease-in duration-100",
    leaveFrom: "opacity-100",
    leaveTo: "opacity-0"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "max-w-sm w-full bg-white shadow-lg rounded-lg pointer-events-auto ring-1 ring-black ring-opacity-5 overflow-hidden"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "p-4"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex items-start"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex-shrink-0"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_heroicons_react_outline__WEBPACK_IMPORTED_MODULE_6__["default"], {
    className: "h-6 w-6 text-green-400",
    "aria-hidden": "true"
  })), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "ml-3 w-0 flex-1 pt-0.5"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "text-sm font-medium text-gray-900"
  }, settingsSavedNotification)), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "ml-4 flex-shrink-0 flex"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
    className: "bg-white rounded-md inline-flex text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500",
    onClick: () => {
      dispatch({
        type: 'UPDATE_SETTINGS_SAVED_NOTIFICATION',
        payload: ''
      });
    }
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "sr-only"
  }, " ", (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Close ', 'astra'), " "), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_heroicons_react_solid__WEBPACK_IMPORTED_MODULE_7__["default"], {
    className: "h-5 w-5",
    "aria-hidden": "true"
  }))))))))));
}

/***/ }),

/***/ "./assets/src/dashboard-app/SettingsWrap.js":
/*!**************************************************!*\
  !*** ./assets/src/dashboard-app/SettingsWrap.js ***!
  \**************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _MainNav__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./MainNav */ "./assets/src/dashboard-app/MainNav.js");
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/dist/index.js");
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router/dist/index.js");
/* harmony import */ var _SettingsRoute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./SettingsRoute */ "./assets/src/dashboard-app/SettingsRoute.js");
/* harmony import */ var _SettingsSavedNotification__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./SettingsSavedNotification */ "./assets/src/dashboard-app/SettingsSavedNotification.js");






const SettingsWrap = () => {
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(react_router_dom__WEBPACK_IMPORTED_MODULE_5__.BrowserRouter, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_MainNav__WEBPACK_IMPORTED_MODULE_2__["default"], null), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_SettingsSavedNotification__WEBPACK_IMPORTED_MODULE_4__["default"], null), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(react_router_dom__WEBPACK_IMPORTED_MODULE_6__.Routes, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(react_router_dom__WEBPACK_IMPORTED_MODULE_6__.Route, {
    path: "*",
    element: (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_SettingsRoute__WEBPACK_IMPORTED_MODULE_3__["default"], null)
  })));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SettingsWrap);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/Welcome/AstraIntegration.js":
/*!********************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/Welcome/AstraIntegration.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Common/block-icons */ "./assets/src/common/block-icons.js");
/* harmony import */ var _Utils_extensions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Utils/extensions */ "./assets/src/utils/extensions.js");




const classNames = (...classes) => classes.filter(Boolean).join(" ");
const AstraIntegration = () => {
  const handlePluginActionTrigger = e => (0,_Utils_extensions__WEBPACK_IMPORTED_MODULE_3__.triggerAction)(e);
  const getStatusClass = value => {
    if (value === "activated") {
      return "text-[#4AB866] pointer-events-none";
    } else {
      return "text-astra bg-slate-50 px-[0.8125rem]";
    }
  };
  const renderBlockCards = astra_admin.integrations.map((plugin, index) => {
    return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      key: index,
      className: classNames(plugin.isPro ? "bg-slate-50" : "bg-white", "box-border relative border rounded-md px-5 py-4 flex items-start gap-x-4 snap-start")
    }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      className: "flex flex-col"
    }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      className: "flex justify-between"
    }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, plugin.logoPath.internal_icon && _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__["default"][plugin.logoPath.icon_path], !plugin.logoPath.internal_icon && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", {
      src: plugin.logoPath.icon_path,
      width: "40px",
      height: "40px"
    })), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, plugin.isPro ? (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Pro', 'astra')) : (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
      className: "text-astra uppercase text-[0.625rem] leading-[0.0625rem] font-semibold bg-blue-50 px-1 pt-0.5 pb-[0.1875rem] rounded-[0.1875rem]"
    }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Free', 'astra')))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      className: "mt-2"
    }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      className: "text-base leading-[1.625rem] font-medium text-slate-800"
    }, plugin.title), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
      className: "text-sm leading-[1.375rem] text-slate-400 mt-[0.1875rem]"
    }, plugin.subtitle), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
      "data-type": "button",
      "data-slug": plugin.slug,
      "data-redirection": plugin.redirection,
      "data-action": (0,_Utils_extensions__WEBPACK_IMPORTED_MODULE_3__.getAction)(plugin.status),
      "data-init": plugin.path,
      onClick: handlePluginActionTrigger,
      className: ` ${getStatusClass(plugin.status)} inline-flex items-center capitalize mt-3 text-sm leading-[0.875rem] font-medium rounded-md py-[0.5625rem]`
    }, 'installed' == plugin.status ? astra_admin.plugin_activate_text : plugin.status))));
  });
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "grid grid-flow-row auto-rows-min grid-cols-1 gap-4 sm:grid-cols-3 pt-6"
  }, renderBlockCards);
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AstraIntegration);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/Welcome/BulkExtensionController.js":
/*!***************************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/Welcome/BulkExtensionController.js ***!
  \***************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/api-fetch */ "@wordpress/api-fetch");
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");




const BulkExtensionController = () => {
  const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useDispatch)();
  const blocksStatuses = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useSelector)(state => state.blocksStatuses);
  const handleBulkTrigger = action => {
    const value = {
      ...blocksStatuses
    };
    for (const block in blocksStatuses) {
      value[block] = action === "activate" ? block : "";
    }
    dispatch({
      type: "UPDATE_BLOCK_STATUSES",
      payload: value
    });
    const formData = new window.FormData();
    formData.append("action", `astra_addon_bulk_${action}_modules`);
    formData.append("security", astra_addon_admin.update_nonce);
    _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_2___default()({
      url: astra_admin.ajax_url,
      method: "POST",
      body: formData
    }).then(data => {
      if (data.success) {
        dispatch({
          type: "UPDATE_SETTINGS_SAVED_NOTIFICATION",
          payload: action === "activate" ? (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Successfully Activated!", "astra") : (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Successfully Deactivated!", "astra")
        });
        refreshCache();
      }
    }).catch(error => {
      console.error(`Error during ${action}:`, error);
    });
  };
  const refreshCache = () => {
    const reFormData = new window.FormData();
    reFormData.append("action", "astra_refresh_assets_files");
    reFormData.append("security", astra_addon_admin.update_nonce);
    _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_2___default()({
      url: astra_admin.ajax_url,
      method: "POST",
      body: reFormData
    }).then(() => {
      dispatch({
        type: "UPDATE_SETTINGS_SAVED_NOTIFICATION",
        payload: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Cache Cleared!", "astra")
      });
      location.reload();
    }).catch(error => {
      console.error("Error during cache refresh:", error);
      // Handle the error, possibly showing a notification to the user.
    });
  };
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "z-0 flex shadow-sm rounded-[0.2rem] sm:justify-center w-fit sm:w-auto"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
    type: "button",
    className: "focus:bg-indigo-50 focus:text-slate-500 focus-visible:text-astra hover:bg-indigo-50 hover:text-astra -ml-px relative inline-flex items-center px-4 py-2 border border-slate-200 bg-white text-sm font-medium text-slate-500 focus:z-10 focus:outline-none rounded-l-md transition",
    onClick: () => handleBulkTrigger("activate")
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Activate all", "astra")), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
    type: "button",
    className: "focus:bg-indigo-50 focus:text-slate-500 focus-visible:text-astra hover:bg-indigo-50 hover:text-astra -ml-px relative inline-flex items-center px-4 py-2 border border-slate-200 bg-white text-sm font-medium text-slate-500 focus:z-10 focus:outline-none rounded-r-md transition",
    onClick: () => handleBulkTrigger("deactivate")
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Deactivate all", "astra")));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BulkExtensionController);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/Welcome/ProModules.js":
/*!**************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/Welcome/ProModules.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _DashboardApp_pages_welcome_ExtensionCard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @DashboardApp/pages/welcome/ExtensionCard */ "./assets/src/dashboard-app/pages/welcome/ExtensionCard.js");



const ProModules = () => {
  const astraExtensions = astra_admin.extensions;
  const renderBlockCards = Object.entries(astraExtensions).map(([index, module]) => {
    return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_DashboardApp_pages_welcome_ExtensionCard__WEBPACK_IMPORTED_MODULE_2__["default"], {
      key: index,
      slug: index,
      moduleInfo: module
    });
  });
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "grid grid-flow-row auto-rows-min grid-cols-1 gap-4 sm:grid-cols-2 pt-6"
  }, renderBlockCards);
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProModules);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/Welcome/QuickSettings.js":
/*!*****************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/Welcome/QuickSettings.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Common/block-icons */ "./assets/src/common/block-icons.js");


const classNames = (...classes) => classes.filter(Boolean).join(' ');

const QuickSettings = () => {
  const allQuickLinks = astra_admin.quick_settings;
  const onQuickSettingTrigger = sectionLink => {
    window.open(sectionLink, '_blank');
  };
  const renderQuickLinks = Object.entries(allQuickLinks).map(([index, block]) => {
    return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      key: index,
      "data-redirection": block.quick_url,
      onClick: () => onQuickSettingTrigger(block.quick_url),
      className: classNames(block.isPro ? 'bg-slate-50' : 'bg-white', 'box-border relative border rounded-md cursor-pointer h-20 px-3 py-3 flex items-start gap-x-4 snap-start hover:shadow-md transition astra-icon-transition group')
    }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      className: "flex-1 min-w-0"
    }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      className: "text-base font-medium text-slate-800 leading-7"
    }, block.title), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("a", {
      className: classNames(block.isPro ? 'pointer-events-none' : '', 'focus:text-slate-400 text-slate-400 text-base truncate leading-[1.625rem] focus-visible:text-slate-400-hover active:text-astra-hover group-hover:text-astra-hover'),
      href: block.quick_url,
      rel: "noreferrer",
      target: "_blank"
    }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Customize', 'astra'))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      className: "relative inline-flex flex-shrink-0 py-0.5 px-1 text-[0.625rem] leading-[0.7rem] text-gray-50 rounded-[0.1875rem] group-hover:text-slate-300"
    }, _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__["default"]["customize"]));
  });
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "grid grid-flow-row auto-rows-min grid-cols-1 gap-4 sm:grid-cols-3 pt-6"
  }, renderQuickLinks);
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (QuickSettings);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/Welcome/UsefulPlugins.js":
/*!*****************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/Welcome/UsefulPlugins.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Common/block-icons */ "./assets/src/common/block-icons.js");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _Utils_extensions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Utils/extensions */ "./assets/src/utils/extensions.js");





const UsefulPlugins = () => {
  const handlePluginActionTrigger = e => (0,_Utils_extensions__WEBPACK_IMPORTED_MODULE_4__.triggerAction)(e);
  const getStatusClass = value => {
    if (value === "activated") {
      return "text-[#4AB866] pointer-events-none";
    } else {
      return "text-astra";
    }
  };
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, astra_admin.useful_plugins.map((plugin, key) => (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: `${plugin.status === 'activated' ? '' : 'hover:bg-[#F8FAFC] hover:shadow-hover'} flex justify-between items-start p-4 border-t border-slate-200 bg-white transition `,
    key: key
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex flex-grow"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, plugin.logoPath.internal_icon && _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__["default"][plugin.logoPath.icon_path], !plugin.logoPath.internal_icon && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", {
    src: plugin.logoPath.icon_path,
    width: "40px",
    height: "40px"
  })), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "ml-2.5 flex-grow"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex gap-1 justify-between"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "text-sm leading-[1.375rem] font-medium text-slate-800"
  }, plugin.title), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
    "data-slug": plugin.slug,
    "data-init": plugin.path,
    "data-redirection": plugin.redirection,
    "data-action": (0,_Utils_extensions__WEBPACK_IMPORTED_MODULE_4__.getAction)(plugin.status),
    className: ` ${getStatusClass(plugin.status)} p-0 m-0 inline-flex items-center capitalize text-sm leading-4 font-medium cursor-pointer`,
    onClick: handlePluginActionTrigger
  }, 'installed' == plugin.status ? astra_admin.plugin_activate_text : plugin.status)), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "text-sm leading-[1.375rem] text-slate-400"
  }, plugin.subtitle))))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (UsefulPlugins);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/custom-layouts/CustomLayouts.js":
/*!************************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/custom-layouts/CustomLayouts.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router/dist/index.js");
/* harmony import */ var _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Common/block-icons */ "./assets/src/common/block-icons.js");
/* harmony import */ var _astra_components__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @astra-components */ "./assets/components/index.js");





const CustomLayouts = () => {
  const query = new URLSearchParams((0,react_router_dom__WEBPACK_IMPORTED_MODULE_4__.useLocation)()?.search);
  const allowAutoPlay = '1' === query.get('astra-activation-redirect') ? 1 : 0;
  const videoID = 'FWRkzJQwcKU';
  const onFreeVsProClick = () => {
    window.open(astra_admin.free_vs_pro_link, '_self');
  };
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("main", {
    className: "relative"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "w-full absolute inset-0 blur-md"
  }, _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__["default"]['custom-layout']), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "relative z-10 pt-[4rem]"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "max-w-[39rem] h-max bg-white m-auto shadow-overlay-modal text-center rounded-lg p-8"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mx-auto flex items-center justify-center"
  }, _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__["default"]["astra-logo"]), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mt-3 text-center sm:mt-5"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h4", {
    className: "text-2xl font-semibold leading-7 text-slate-800",
    id: "modal-title"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Site Builder', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mt-2"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "text-sm leading-[1.375rem] text-slate-500 text-center"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Upgrade to Astra Pro to get access to the Site Builder, which allow you to create a unique header, footer, 404 pages, and custom content.', 'astra'))), astra_admin.show_banner_video && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "relative pb-[17.5rem] mt-5"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("iframe", {
    className: "absolute inset-0 w-full h-full rounded-md",
    src: `https://www.youtube-nocookie.com/embed/${videoID}?showinfo=0&autoplay=${allowAutoPlay}&mute=${allowAutoPlay}&rel=0`,
    allow: "autoplay",
    title: "YouTube video player",
    frameBorder: "0",
    allowFullScreen: true
  })))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "text-center mt-5"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_astra_components__WEBPACK_IMPORTED_MODULE_3__.ProButton, {
    className: "w-auto justify-center rounded-md border border-transparent bg-astra px-[2.9375rem] py-[0.6875rem] text-base leading-4 font-medium text-white shadow-sm hover:bg-astra-hover focus:outline-none focus:ring-2 focus:ring-astra-hover focus:ring-offset-2"
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
    className: "w-auto justify-center mt-4 text-base leading-4 text-astra font-medium",
    onClick: onFreeVsProClick
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Free vs Pro', 'astra')))))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CustomLayouts);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/docs/Docs.js":
/*!*****************************************************!*\
  !*** ./assets/src/dashboard-app/pages/docs/Docs.js ***!
  \*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _SubSection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./SubSection */ "./assets/src/dashboard-app/pages/docs/SubSection.js");
/* harmony import */ var _UpgradeToPro__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./UpgradeToPro */ "./assets/src/dashboard-app/pages/docs/UpgradeToPro.js");
/* harmony import */ var _Common_block_icons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Common/block-icons */ "./assets/src/common/block-icons.js");
/* harmony import */ var _SearchResults__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./SearchResults */ "./assets/src/dashboard-app/pages/docs/SearchResults.js");
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/dist/index.js");
/* harmony import */ var _astra_components__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @astra-components */ "./assets/components/index.js");
/* harmony import */ var _astra_hooks__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @astra-hooks */ "./assets/hooks/index.js");










const Docs = ({
  setOpen
}) => {
  const [searchKeyword, setSearchKeyword] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)("");
  const [searchResults, setSearchResults] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);

  // Debounced filtering of docs based on the search keyword, updating results only after typing pauses.
  (0,_astra_hooks__WEBPACK_IMPORTED_MODULE_8__.useDebounceEffect)(() => {
    if (searchKeyword === "") {
      setSearchResults(null);
    } else {
      const data = astra_admin.astra_docs_data.docs.filter(item => item.title.toLowerCase().includes(searchKeyword));
      setSearchResults(data);
    }
  }, 300, [searchKeyword]);
  const is404 = astra_admin.astra_docs_data?.data?.status === 404;
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("main", {
    className: "bg-white"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: ""
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h1", {
    className: "sr-only"
  }, " ", (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("Welcome to KB Docs", "astra"), " "), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "w-full flex justify-between items-center bg-gray-50 py-5 px-6"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("a", {
    href: astra_admin.astra_base_url,
    className: "flex-shrink-0 flex items-center ast-box-shadow-none"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", {
    className: "lg:block mr-3 h-[2.6rem] w-auto ast-box-shadow-none",
    src: astra_admin.logo_url,
    alt: "Workflow"
  })), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "max-w-5xl mx-auto w-full relative"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("input", {
    type: "search",
    placeholder: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("Search", "astra"),
    className: "w-full ast-docs-search-fields text-base",
    onChange: e => setSearchKeyword(e.target.value)
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "absolute top-1/2 -translate-y-1/2 left-4"
  }, searchKeyword ? _Common_block_icons__WEBPACK_IMPORTED_MODULE_5__["default"]['close'] : _Common_block_icons__WEBPACK_IMPORTED_MODULE_5__["default"]['search'])), setOpen && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
    onClick: () => setOpen(false)
  }, _Common_block_icons__WEBPACK_IMPORTED_MODULE_5__["default"]["popupclose"]))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "sm:max-w-5xl mx-auto w-full flex flex-col"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex flex-col lg:flex-row gap-8 pt-10"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "w-full px-6 lg:px-0 lg:w-2/3 mb-5 self-center"
  }, is404 && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex items-center justify-center"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "text-center"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h2", {
    className: "text-4xl font-bold text-gray-800 mb-4"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("404", "astra")), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "text-xl text-gray-600 mb-8"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("Oops! Documentation not found.", "astra")), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "text-lg text-gray-600 mb-8"
  }, astra_admin.astra_docs_data?.message), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(react_router_dom__WEBPACK_IMPORTED_MODULE_9__.Link, {
    role: "button",
    to: astra_admin.astra_base_url,
    className: "sm:inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-astra focus-visible:bg-astra-hover hover:text-white hover:bg-astra-hover focus:outline-none mr-4 mb-2 sm:mb-0"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("Go to Dashboard", "astra")))), !is404 && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, searchResults && searchResults.length > 0 && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mb-8"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_SearchResults__WEBPACK_IMPORTED_MODULE_6__["default"], {
    data: searchResults
  })), Object.entries(astra_admin.astra_docs_data.categories).map((item, key) => (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_SubSection__WEBPACK_IMPORTED_MODULE_3__["default"], {
    item: item,
    key: key
  })), !astra_admin.pro_available && astra_admin.upgrade_notice && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mt-10"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_UpgradeToPro__WEBPACK_IMPORTED_MODULE_4__["default"], null)))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "w-full px-6 lg:px-0 lg:w-1/3"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_astra_components__WEBPACK_IMPORTED_MODULE_7__.PromoCard, {
    id: "vip-priority-support",
    className: "border border-sky-500 mb-5",
    icon: _Common_block_icons__WEBPACK_IMPORTED_MODULE_5__["default"]["support"],
    title: (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
      className: "font-medium"
    }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("VIP Priority Support", "astra")),
    description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("Faster and exclusive support service designed for VIP assistance and benefits.", "astra"),
    linkHRef: astra_admin.astraWebsite?.vipPrioritySupportUrl,
    linkText: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("Know More →", "astra")
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_astra_components__WEBPACK_IMPORTED_MODULE_7__.PromoCard, {
    id: "view-documentation",
    className: "border border-slate-200 mb-5",
    icon: _Common_block_icons__WEBPACK_IMPORTED_MODULE_5__["default"]["book"],
    title: (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
      className: "font-medium"
    }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("View Documentation", "astra")),
    description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)(`Browse documentation, reference material, and tutorials for ${astra_admin.theme_name} Theme.`, "astra"),
    linkHRef: astra_admin.astraWebsite?.docsUrl,
    linkText: (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
      className: "inline-flex items-center gap-2"
    }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("View All Documentation", "astra"), _Common_block_icons__WEBPACK_IMPORTED_MODULE_5__["default"]["redirect"])
  }))))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Docs);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/docs/SearchResults.js":
/*!**************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/docs/SearchResults.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _Common_block_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Common/block-icons */ "./assets/src/common/block-icons.js");
/* harmony import */ var react_html_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-html-parser */ "./node_modules/react-html-parser/lib/index.js");



const SearchResults = ({
  data
}) => {
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, data && data.map((item, key) => (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("a", {
    href: item.url + '?utm_source=free-theme&utm_medium=dashboard&utm_campaign=knowledge',
    target: "blank",
    className: "flex items-center justify-between text-slate-800 rounded-md p-2 pl-0 hover:bg-gray-50 group cursor-pointer",
    key: key
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex items-center ast-kb-caret"
  }, _Common_block_icons__WEBPACK_IMPORTED_MODULE_1__["default"]["caret"], (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "text-base leading-[1.625rem] text-slate-800 ml-2"
  }, (0,react_html_parser__WEBPACK_IMPORTED_MODULE_2__["default"])(item.title))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "text-slate-600 invisible group-hover:visible"
  }, _Common_block_icons__WEBPACK_IMPORTED_MODULE_1__["default"]["redirect"]))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SearchResults);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/docs/SubSection.js":
/*!***********************************************************!*\
  !*** ./assets/src/dashboard-app/pages/docs/SubSection.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _Common_block_icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Common/block-icons */ "./assets/src/common/block-icons.js");
/* harmony import */ var react_html_parser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-html-parser */ "./node_modules/react-html-parser/lib/index.js");





const SubSection = ({
  item
}) => {
  const [categorySlug, category] = item;
  const [open, setOpen] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);

  // Subcategories.
  const subcategories = Object.entries(category.subcategories);

  // Docs.
  const docs = astra_admin.astra_docs_data.docs.filter(doc => doc.category?.toString() === categorySlug);
  const docsCount = docs.length;
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "py-5 border-t border-slate-200"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
    onClick: () => setOpen(!open),
    className: "w-full flex justify-between items-center"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex items-center"
  }, _Common_block_icons__WEBPACK_IMPORTED_MODULE_3__["default"]["bookmark"], (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h4", {
    className: "text-base font-medium leading-[1.625rem] text-slate-800 ml-2"
  }, (0,react_html_parser__WEBPACK_IMPORTED_MODULE_4__["default"])(category.name))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: ` ${open ? "rotate-0" : "-rotate-90"} transition-rotate duration-300 ease-in-out`
  }, _Common_block_icons__WEBPACK_IMPORTED_MODULE_3__["default"]["expand"])), open && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mt-5"
  }, !!subcategories.length && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "ml-2"
  }, subcategories.map((subItem, key) => (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(SubSection, {
    item: subItem,
    key: key
  }))), !!docs.length && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "space-y-1 mb-5"
  }, docs.splice(0, 5).map((doc, key) => (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("a", {
    href: doc.url + "?utm_source=free-theme&utm_medium=dashboard&utm_campaign=knowledge",
    target: "_blank",
    className: "flex items-center justify-between text-slate-800 rounded-md p-2 pl-0 hover:bg-gray-50 group cursor-pointer focus:outline-0",
    key: key
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex items-center ast-kb-caret"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", null, _Common_block_icons__WEBPACK_IMPORTED_MODULE_3__["default"]["caret"]), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "text-base leading-[1.625rem] text-slate-800 ml-2"
  }, (0,react_html_parser__WEBPACK_IMPORTED_MODULE_4__["default"])(doc.title))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "text-slate-600 invisible group-hover:visible"
  }, _Common_block_icons__WEBPACK_IMPORTED_MODULE_3__["default"]["redirect"])))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("a", {
    href: astra_admin.websiteUrl?.docsCategoryDynamicUrl?.replace('#category#', categorySlug),
    target: "_blank",
    className: "text-base font-medium leading-4 text-astra flex items-center"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "mr-2"
  }, `View all ${(0,react_html_parser__WEBPACK_IMPORTED_MODULE_4__["default"])(category.name)} docs`), _Common_block_icons__WEBPACK_IMPORTED_MODULE_3__["default"]["redirect"])), !docsCount && !subcategories.length && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("No docs found!", "astra"))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SubSection);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/docs/UpgradeToPro.js":
/*!*************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/docs/UpgradeToPro.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Common/block-icons */ "./assets/src/common/block-icons.js");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _astra_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @astra-components */ "./assets/components/index.js");





const UpgradeToPro = () => {
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "relative flex bg-blue-50 py-5 pl-4 pr-10 border border-sky-500 rounded-md"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mr-3"
  }, _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__["default"]['checkbadge']), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h4", {
    className: "text-base font-semibold leading-5 text-slate-800 mb-1.5"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Upgrade to Astra Pro', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "text-sm text-slate-600 mb-3"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Get access to powerful features for painless WordPress designing, without the high costs. With all the time you will save, it’s a product that pays for itself!', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_astra_components__WEBPACK_IMPORTED_MODULE_4__.ProButton, {
    className: "text-sm text-astra text-medium"
  })), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "absolute top-4 right-4 leading-[1rem] font-medium text-[0.625rem] text-white bg-slate-800 rounded-[0.1875rem] py-[0rem] px-1.5"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('PRO', 'astra')));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (UpgradeToPro);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/free-vs-pro/FreeVsPro.js":
/*!*****************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/free-vs-pro/FreeVsPro.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./data */ "./assets/src/dashboard-app/pages/free-vs-pro/data.js");
/* harmony import */ var _Common_block_icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Common/block-icons */ "./assets/src/common/block-icons.js");
/* harmony import */ var _astra_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @astra-components */ "./assets/components/index.js");





const FreeVsPro = () => {
  const checkStatus = value => {
    if (value === "yes") {
      return _Common_block_icons__WEBPACK_IMPORTED_MODULE_3__["default"]['check'];
    } else if (value === "no") {
      return _Common_block_icons__WEBPACK_IMPORTED_MODULE_3__["default"]['xclose'];
    } else {
      return value;
    }
  };
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("main", {
    className: "py-[2.43rem]"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "max-w-3xl mx-auto px-6 lg:max-w-7xl"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h1", {
    className: "sr-only"
  }, " ", (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Astra Free Vs Pro", "astra"), " "), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex flex-row justify-between items-center"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h2", {
    className: "text-lg sm:text-2xl font-semibold capitalize"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Astra Free vs Pro', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_astra_components__WEBPACK_IMPORTED_MODULE_4__.ProButton, {
    className: "inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-astra focus-visible:bg-astra-hover hover:bg-astra-hover focus:outline-none"
  })), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mt-8 flex flex-col"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "-my-2 -mx-4 overflow-x-auto sm:-mx-6 lg:-mx-8"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "inline-block min-w-full py-2 align-middle md:px-6 lg:px-8"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "overflow-hidden shadow-overlay-light md:rounded-lg"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("table", {
    className: "min-w-full divide-y divide-slate-200"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("thead", {
    className: "bg-white"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("tr", null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("th", {
    scope: "col",
    className: "py-3.5 pl-4 pr-3 text-left text-base font-medium text-slate-800 sm:pl-8"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Features", "astra")), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("th", {
    scope: "col",
    className: "px-3 py-3.5 text-center text-base font-medium text-slate-800"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Free", "astra")), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("th", {
    scope: "col",
    className: "px-3 py-3.5 text-center text-base font-medium text-slate-800"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Pro", "astra")))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("tbody", {
    className: "divide-y divide-slate-200 bg-white"
  }, _data__WEBPACK_IMPORTED_MODULE_2__.features.map((feature, key) => (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("tr", {
    key: key
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("td", {
    className: "whitespace-nowrap py-4 pl-4 pr-3 text-base text-slate-600 sm:pl-8"
  }, feature.name), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("td", {
    className: "whitespace-nowrap capitalize px-3 py-4 text-base text-center text-slate-600"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex justify-center font-medium"
  }, checkStatus(feature.free))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("td", {
    className: "whitespace-nowrap capitalize px-3 py-4 text-base text-center text-slate-600"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex justify-center font-medium"
  }, checkStatus(feature.pro))))))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex items-center justify-center text-astra hover:text-astra-hover text-base font-medium text-center bg-white py-4 border-t border-t-slate-200"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_astra_components__WEBPACK_IMPORTED_MODULE_4__.ProButton, {
    className: "flex items-center justify-center",
    disableSpinner: true
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "mr-2"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("See all Astra Pro features", "astra")), _Common_block_icons__WEBPACK_IMPORTED_MODULE_3__["default"]['redirect'])))))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("section", {
    className: "mt-6 py-10 flex flex-col bg-slate-200 items-center justify-center shadow-overlay-light rounded-md"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mb-3"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "ml-1 sm:ml-2 text-[0.625rem] leading-[1rem] font-medium text-white border border-slate-800 bg-slate-800 rounded-[0.1875rem] relative inline-flex flex-shrink-0 py-[0rem] px-1.5"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("PRO", "astra"))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h4", {
    className: "text-2xl font-semibold text-slate-800 mb-3"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Do More with Astra Pro", "astra")), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "max-w-2xl text-center text-base text-slate-600 mb-7"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Get access to powerful features for painless WordPress designing, without the high costs. With all the time you will save, it’s a product that pays for itself!", "astra")), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_astra_components__WEBPACK_IMPORTED_MODULE_4__.ProButton, {
    className: "inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-astra focus-visible:bg-astra-hover hover:bg-astra-hover focus:outline-none"
  }))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FreeVsPro);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/free-vs-pro/data.js":
/*!************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/free-vs-pro/data.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   features: () => (/* binding */ features)
/* harmony export */ });
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__);

const features = [{
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('24/7 Premium Support', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Access To Pro Updates', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('CSS File Generation For Speed Optimization', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('White Label', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Page Background Styling', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Sidebar Designing Styles', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Colors and Backgrounds', 'astra'),
  free: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Limited Features', 'astra'),
  pro: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('All Features', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Typography', 'astra'),
  free: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Limited Features', 'astra'),
  pro: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('All Features', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Spacing', 'astra'),
  free: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Limited Features', 'astra'),
  pro: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('All Features', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Full Width Site Layout', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Max Width Site Layout', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Padded Site Layout', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Fluid Site Layout', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Multiple Page Headers', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Custom Header', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Custom Footer', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Custom 404 Page', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Hooks Support to Add Custom Code', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Sticky When Scroll Up', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Shrink When Scroll Up', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Hide Sticky When Scroll Down', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Sticky Header Animations', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Mega Menu', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Multiple HTML Elements', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Multiple Button Elements', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Divider Elements', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Color & Typography Options', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Archive Page - Post Content Layouts', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Archive Page - Post Grid Control', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Archive Page - Post Readtime Meta Option', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Single Post Page - Post Readtime Meta Option', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Single Post Page - Author Info Box', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Single Post Page - Post Navigation Visibility Control', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Breadcrumbs Shortcode', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Search Box Shortcode', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('WooCommerce Mini-Cart Shortcode', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('EDD Mini-Cart Shortcode', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('WooCommerce', 'astra'),
  free: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Limited Features', 'astra'),
  pro: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('All Features', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('LifterLMS', 'astra'),
  free: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Limited Features', 'astra'),
  pro: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('All Features', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('LearnDash', 'astra'),
  free: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Limited Features', 'astra'),
  pro: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('All Features', 'astra')
}, {
  name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Easy Digital Downloads', 'astra'),
  free: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('Limited Features', 'astra'),
  pro: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('All Features', 'astra')
}].map(feature => ({
  ...feature,
  free: feature.free || 'no',
  pro: feature.pro || 'yes'
}));

/***/ }),

/***/ "./assets/src/dashboard-app/pages/index.js":
/*!*************************************************!*\
  !*** ./assets/src/dashboard-app/pages/index.js ***!
  \*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   CustomLayouts: () => (/* reexport safe */ _custom_layouts_CustomLayouts__WEBPACK_IMPORTED_MODULE_4__["default"]),
/* harmony export */   Docs: () => (/* reexport safe */ _docs_Docs__WEBPACK_IMPORTED_MODULE_7__["default"]),
/* harmony export */   ExtensionScreen: () => (/* reexport safe */ _woocommerce_ExtensionScreen__WEBPACK_IMPORTED_MODULE_6__["default"]),
/* harmony export */   FreeVsPro: () => (/* reexport safe */ _free_vs_pro_FreeVsPro__WEBPACK_IMPORTED_MODULE_1__["default"]),
/* harmony export */   Settings: () => (/* reexport safe */ _settings_Settings__WEBPACK_IMPORTED_MODULE_2__["default"]),
/* harmony export */   SpectraScreen: () => (/* reexport safe */ _spectra_SpectraScreen__WEBPACK_IMPORTED_MODULE_5__["default"]),
/* harmony export */   StarterTemplates: () => (/* reexport safe */ _starter_templates_StarterTemplates__WEBPACK_IMPORTED_MODULE_3__["default"]),
/* harmony export */   Welcome: () => (/* reexport safe */ _welcome_Welcome__WEBPACK_IMPORTED_MODULE_0__["default"])
/* harmony export */ });
/* harmony import */ var _welcome_Welcome__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./welcome/Welcome */ "./assets/src/dashboard-app/pages/welcome/Welcome.js");
/* harmony import */ var _free_vs_pro_FreeVsPro__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./free-vs-pro/FreeVsPro */ "./assets/src/dashboard-app/pages/free-vs-pro/FreeVsPro.js");
/* harmony import */ var _settings_Settings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settings/Settings */ "./assets/src/dashboard-app/pages/settings/Settings.js");
/* harmony import */ var _starter_templates_StarterTemplates__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./starter-templates/StarterTemplates */ "./assets/src/dashboard-app/pages/starter-templates/StarterTemplates.js");
/* harmony import */ var _custom_layouts_CustomLayouts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./custom-layouts/CustomLayouts */ "./assets/src/dashboard-app/pages/custom-layouts/CustomLayouts.js");
/* harmony import */ var _spectra_SpectraScreen__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./spectra/SpectraScreen */ "./assets/src/dashboard-app/pages/spectra/SpectraScreen.js");
/* harmony import */ var _woocommerce_ExtensionScreen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./woocommerce/ExtensionScreen */ "./assets/src/dashboard-app/pages/woocommerce/ExtensionScreen.js");
/* harmony import */ var _docs_Docs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./docs/Docs */ "./assets/src/dashboard-app/pages/docs/Docs.js");










/***/ }),

/***/ "./assets/src/dashboard-app/pages/settings/ContainerSettings.js":
/*!**********************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/settings/ContainerSettings.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
/* harmony import */ var _DashboardApp_pages_settings_LoadFontsLocally__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @DashboardApp/pages/settings/LoadFontsLocally */ "./assets/src/dashboard-app/pages/settings/LoadFontsLocally.js");
/* harmony import */ var _DashboardApp_pages_settings_PreloadLocalFonts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @DashboardApp/pages/settings/PreloadLocalFonts */ "./assets/src/dashboard-app/pages/settings/PreloadLocalFonts.js");
/* harmony import */ var _DashboardApp_pages_settings_FlushLocalFonts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @DashboardApp/pages/settings/FlushLocalFonts */ "./assets/src/dashboard-app/pages/settings/FlushLocalFonts.js");
/* harmony import */ var _DashboardApp_pages_settings_OldHeaderFooter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @DashboardApp/pages/settings/OldHeaderFooter */ "./assets/src/dashboard-app/pages/settings/OldHeaderFooter.js");
/* harmony import */ var _DashboardApp_pages_settings_UpgradeNotices__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @DashboardApp/pages/settings/UpgradeNotices */ "./assets/src/dashboard-app/pages/settings/UpgradeNotices.js");








function SettingsWrapper({
  state
}) {
  const wrappers = wp.hooks.applyFilters('astra_dashboard.settings_tab_wrappers', {
    'global-settings': (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, " ", (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_DashboardApp_pages_settings_OldHeaderFooter__WEBPACK_IMPORTED_MODULE_6__["default"], null), " ", (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_DashboardApp_pages_settings_UpgradeNotices__WEBPACK_IMPORTED_MODULE_7__["default"], null), " "),
    'fonts-performance': (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, " ", (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_DashboardApp_pages_settings_LoadFontsLocally__WEBPACK_IMPORTED_MODULE_3__["default"], null), " ", (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_DashboardApp_pages_settings_PreloadLocalFonts__WEBPACK_IMPORTED_MODULE_4__["default"], null), " ", (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_DashboardApp_pages_settings_FlushLocalFonts__WEBPACK_IMPORTED_MODULE_5__["default"], null), " ")
  });
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, wrappers[state]);
}
const ContainerSettings = () => {
  const activeSettingsNavigationTab = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useSelector)(state => state.activeSettingsNavigationTab);

  // Parent Div is Required to add Padding to the Entire Structure for Smaller Windows.
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "lg:col-span-9 border-l"
  }, wp.hooks.applyFilters(`astra_dashboard.settings_screen_before_${activeSettingsNavigationTab}`, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", null)), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(SettingsWrapper, {
    state: activeSettingsNavigationTab
  }), wp.hooks.applyFilters(`astra_dashboard.settings_screen_after_${activeSettingsNavigationTab}`, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", null))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ContainerSettings);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/settings/FlushLocalFonts.js":
/*!********************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/settings/FlushLocalFonts.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/api-fetch */ "@wordpress/api-fetch");
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");





const FlushLocalFonts = () => {
  const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_4__.useDispatch)();
  const enableLoadFontsLocally = (0,react_redux__WEBPACK_IMPORTED_MODULE_4__.useSelector)(state => state.enableLoadFontsLocally);
  const [regenerateAssetsState, setRegenerateAssetsState] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);
  const regenerateLocalFontAssets = () => {
    setRegenerateAssetsState('loading');
    const formData = new window.FormData();
    formData.append('action', 'astra_regenerate_fonts_folder');
    formData.append('security', astra_admin.update_nonce);
    _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3___default()({
      url: astra_admin.ajax_url,
      method: 'POST',
      body: formData
    }).then(data => {
      if (data.success) {
        dispatch({
          type: 'UPDATE_SETTINGS_SAVED_NOTIFICATION',
          payload: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Assets Regenerated!', 'astra')
        });
      } else {
        dispatch({
          type: 'UPDATE_SETTINGS_SAVED_NOTIFICATION',
          payload: data.data.message
        });
      }
      setRegenerateAssetsState(false);
    }).catch(error => {
      console.error('Error during assets regeneration:', error);
      dispatch({
        type: 'UPDATE_SETTINGS_SAVED_NOTIFICATION',
        payload: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('An error occurred while regenerating assets.', 'astra')
      });
      setRegenerateAssetsState(false);
    });
  };
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("section", {
    className: `astra-dep-field-${enableLoadFontsLocally} block border-b border-solid border-slate-200 px-8 py-8 justify-between`
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "w-full flex flex-col sm:flex-row justify-between"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h3", {
    className: "p-0 text-xl leading-6 font-semibold text-slate-800"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("Flush Local Fonts Cache", "astra")), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "mt-2 text-sm text-slate-600"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Click the button to reset the local fonts cache.', 'astra'))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mt-2 sm:mt-0"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
    type: "button",
    className: "inline-flex px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-astra focus-visible:bg-astra-hover hover:bg-astra-hover focus:outline-none",
    onClick: regenerateLocalFontAssets
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("Flush Local Font Files", "astra"), 'loading' === regenerateAssetsState && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("svg", {
    className: "animate-spin -mr-1 ml-3 h-5 w-5 text-white",
    xmlns: "http://www.w3.org/2000/svg",
    fill: "none",
    viewBox: "0 0 24 24"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("circle", {
    className: "opacity-25",
    cx: "12",
    cy: "12",
    r: "10",
    stroke: "currentColor",
    strokeWidth: "4"
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("path", {
    className: "opacity-75",
    fill: "currentColor",
    d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
  }))))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FlushLocalFonts);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/settings/LoadFontsLocally.js":
/*!*********************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/settings/LoadFontsLocally.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
/* harmony import */ var _headlessui_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @headlessui/react */ "./node_modules/@headlessui/react/dist/components/switch/switch.js");
/* harmony import */ var _astra_utils_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @astra-utils/helpers */ "./assets/utils/helpers.js");






const LoadFontsLocally = () => {
  const abortControllerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)({});
  const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useDispatch)();
  const enableLoadFontsLocally = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useSelector)(state => state.enableLoadFontsLocally);
  const enableLoadFontsLocallyStatus = false === enableLoadFontsLocally ? false : true;
  const updateLoadFontsLocallyStatus = () => {
    const assetStatus = !enableLoadFontsLocally;
    dispatch({
      type: 'UPDATE_ENABLE_LOAD_FONTS_LOCALLY',
      payload: assetStatus
    });
    (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_4__.saveSetting)('self_hosted_gfonts', assetStatus, dispatch, abortControllerRef);
  };
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("section", {
    className: "block border-b border-solid border-slate-200 px-8 py-8 justify-between"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mr-16 w-full flex items-center"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h3", {
    className: "p-0 flex-1 justify-right inline-flex text-xl leading-6 font-semibold text-slate-800"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Load Google Fonts Locally', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_headlessui_react__WEBPACK_IMPORTED_MODULE_5__.Switch, {
    checked: enableLoadFontsLocallyStatus,
    onChange: updateLoadFontsLocallyStatus,
    className: (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_4__.classNames)(enableLoadFontsLocallyStatus ? 'bg-astra' : 'bg-slate-200', 'group relative inline-flex h-4 w-9 flex-shrink-0 cursor-pointer items-center justify-center rounded-full focus:outline-none focus:ring-2 focus:ring-astra focus:ring-offset-2')
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    "aria-hidden": "true",
    className: "pointer-events-none absolute h-full w-full rounded-md bg-white"
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    "aria-hidden": "true",
    className: (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_4__.classNames)(enableLoadFontsLocallyStatus ? 'bg-astra' : 'bg-gray-200', 'pointer-events-none absolute mx-auto h-4 w-9 rounded-full transition-colors duration-200 ease-in-out')
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    "aria-hidden": "true",
    className: (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_4__.classNames)(enableLoadFontsLocallyStatus ? 'translate-x-5' : 'translate-x-0', 'toggle-bubble pointer-events-none absolute left-0 inline-block h-5 w-5 transform rounded-full border border-gray-200 bg-white shadow ring-0 transition-transform duration-200 ease-in-out')
  }))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "mt-2 w-9/12 text-sm text-slate-500 tablet:w-full"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Enable this option to download Google fonts and save them on your server. This can be great for improving speed of your website and to comply with GDPR laws.', 'astra')));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LoadFontsLocally);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/settings/OldHeaderFooter.js":
/*!********************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/settings/OldHeaderFooter.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
/* harmony import */ var _headlessui_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @headlessui/react */ "./node_modules/@headlessui/react/dist/components/switch/switch.js");
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/api-fetch */ "@wordpress/api-fetch");
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _astra_utils_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @astra-utils/helpers */ "./assets/utils/helpers.js");






const OldHeaderFooter = () => {
  if (astra_admin.show_builder_migration) {
    return '';
  }
  const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useDispatch)();
  const useOldHeaderFooter = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useSelector)(state => state.useOldHeaderFooter);
  const useOldHeaderFooterStatus = false === useOldHeaderFooter ? false : true;
  const updateHeaderFooterVersion = () => {
    let assetStatus;
    if (useOldHeaderFooter === false) {
      assetStatus = true;
    } else {
      assetStatus = false;
    }
    dispatch({
      type: 'USE_OLD_HEADER_FOOTER',
      payload: assetStatus
    });
    const formData = new window.FormData();
    formData.append('action', 'ast_migrate_to_builder');
    formData.append('security', astra_admin.update_nonce);
    formData.append('status', assetStatus);
    _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3___default()({
      url: astra_admin.ajax_url,
      method: 'POST',
      body: formData
    }).then(() => {
      dispatch({
        type: 'UPDATE_SETTINGS_SAVED_NOTIFICATION',
        payload: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Successfully saved!', 'astra')
      });
    }).catch(error => {
      console.error('Error during API request:', error);
      dispatch({
        type: 'UPDATE_SETTINGS_SAVED_NOTIFICATION',
        payload: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('An error occurred while saving.', 'astra')
      });
    });
  };
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("section", {
    className: (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_4__.classNames)(astra_admin.pro_available ? 'border-t' : '', 'block border-b border-solid border-slate-200 px-8 py-8 justify-between')
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mr-16 w-full flex items-center"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h3", {
    className: "p-0 flex-1 justify-right inline-flex text-xl leading-8 font-semibold text-slate-800"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Use New Header/Footer Builder', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_headlessui_react__WEBPACK_IMPORTED_MODULE_5__.Switch, {
    checked: useOldHeaderFooterStatus,
    onChange: updateHeaderFooterVersion,
    className: (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_4__.classNames)(useOldHeaderFooterStatus ? 'bg-astra' : 'bg-slate-200', 'group relative inline-flex h-4 w-9 flex-shrink-0 cursor-pointer items-center justify-center rounded-full focus:outline-none focus:ring-2 focus:ring-astra focus:ring-offset-2')
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    "aria-hidden": "true",
    className: "pointer-events-none absolute h-full w-full rounded-md bg-white"
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    "aria-hidden": "true",
    className: (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_4__.classNames)(useOldHeaderFooterStatus ? 'bg-astra' : 'bg-gray-200', 'pointer-events-none absolute mx-auto h-4 w-9 rounded-full transition-colors duration-200 ease-in-out')
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    "aria-hidden": "true",
    className: (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_4__.classNames)(useOldHeaderFooterStatus ? 'translate-x-5' : 'translate-x-0', 'toggle-bubble pointer-events-none absolute left-0 inline-block h-5 w-5 transform rounded-full border border-gray-200 bg-white shadow ring-0 transition-transform duration-200 ease-in-out')
  }))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "mt-2 w-11/12 text-sm text-slate-500"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)(`${astra_admin.theme_name} Header/Footer Builder is a new and powerful way to design header and footer for your website. With this, you can give a creative look to your header/footer with less effort. Activating this feature will add advanced options to ${astra_admin.theme_name} customizer where you can create awesome new designs.`, "astra")), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "mt-2 w-full text-sm text-slate-500"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)(`After years of evolution and updates, the old header footer builder is at the point where it can no longer handle all of the new features. We recommend that you upgrade to the new header footer builder which has an assortment of new features and provides a more seamless experience.`, "astra")));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OldHeaderFooter);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/settings/PreloadLocalFonts.js":
/*!**********************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/settings/PreloadLocalFonts.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
/* harmony import */ var _headlessui_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @headlessui/react */ "./node_modules/@headlessui/react/dist/components/switch/switch.js");
/* harmony import */ var _astra_utils_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @astra-utils/helpers */ "./assets/utils/helpers.js");






const PreloadLocalFonts = () => {
  const abortControllerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)({});
  const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useDispatch)();
  const enableLoadFontsLocally = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useSelector)(state => state.enableLoadFontsLocally);
  const enablePreloadLocalFonts = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useSelector)(state => state.enablePreloadLocalFonts);
  const enablePreloadLocalFontsStatus = false === enablePreloadLocalFonts ? false : true;
  const updatePreloadLocalFontsStatus = () => {
    const assetStatus = !enablePreloadLocalFonts;
    dispatch({
      type: 'UPDATE_ENABLE_PRELOAD_LOCAL_FONTS',
      payload: assetStatus
    });
    (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_4__.saveSetting)('preload_local_fonts', assetStatus, dispatch, abortControllerRef);
  };
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("section", {
    className: `astra-dep-field-${enableLoadFontsLocally} block border-b border-solid border-slate-200 px-8 py-8 justify-between`
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mr-16 w-full flex items-center"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h3", {
    className: "p-0 flex-1 justify-right inline-flex text-xl leading-6 font-semibold text-slate-800"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Preload Local Fonts', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_headlessui_react__WEBPACK_IMPORTED_MODULE_5__.Switch, {
    checked: enablePreloadLocalFontsStatus,
    onChange: updatePreloadLocalFontsStatus,
    className: (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_4__.classNames)(enablePreloadLocalFontsStatus ? 'bg-astra' : 'bg-slate-200', 'group relative inline-flex h-4 w-9 flex-shrink-0 cursor-pointer items-center justify-center rounded-full focus:outline-none focus:ring-2 focus:ring-astra focus:ring-offset-2')
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    "aria-hidden": "true",
    className: "pointer-events-none absolute h-full w-full rounded-md bg-white"
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    "aria-hidden": "true",
    className: (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_4__.classNames)(enablePreloadLocalFontsStatus ? 'bg-astra' : 'bg-gray-200', 'pointer-events-none absolute mx-auto h-4 w-9 rounded-full transition-colors duration-200 ease-in-out')
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    "aria-hidden": "true",
    className: (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_4__.classNames)(enablePreloadLocalFontsStatus ? 'translate-x-5' : 'translate-x-0', 'toggle-bubble pointer-events-none absolute left-0 inline-block h-5 w-5 transform rounded-full border border-gray-200 bg-white shadow ring-0 transition-transform duration-200 ease-in-out')
  }))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "mt-2 w-9/12 text-sm text-slate-500 tablet:w-full"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('This option will load the font files right away on page load. Preloading Local Fonts can speeds up your website even further.', 'astra')));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PreloadLocalFonts);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/settings/Settings.js":
/*!*************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/settings/Settings.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router/dist/index.js");
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/dist/index.js");
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
/* harmony import */ var _DashboardApp_pages_settings_ContainerSettings__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @DashboardApp/pages/settings/ContainerSettings */ "./assets/src/dashboard-app/pages/settings/ContainerSettings.js");
/* harmony import */ var _DashboardApp_pages_settings_SettingsSkeleton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @DashboardApp/pages/settings/SettingsSkeleton */ "./assets/src/dashboard-app/pages/settings/SettingsSkeleton.js");
/* harmony import */ var _astra_utils_helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @astra-utils/helpers */ "./assets/utils/helpers.js");
/* harmony import */ var _SettingsIcons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./SettingsIcons */ "./assets/src/dashboard-app/pages/settings/SettingsIcons.js");









const Settings = () => {
  const query = new URLSearchParams((0,react_router_dom__WEBPACK_IMPORTED_MODULE_8__.useLocation)()?.search);
  const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useDispatch)();
  const activeSettingsNavigationTab = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useSelector)(state => state.activeSettingsNavigationTab);
  const initialStateSetFlag = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useSelector)(state => state.initialStateSetFlag);
  const navigation = wp.hooks.applyFilters('astra_dashboard.settings_navigation', [{
    name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('General', 'astra'),
    slug: 'global-settings',
    icon: _SettingsIcons__WEBPACK_IMPORTED_MODULE_7__["default"]['global-settings']
  }, {
    name: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Performance', 'astra'),
    slug: 'fonts-performance',
    icon: _SettingsIcons__WEBPACK_IMPORTED_MODULE_7__["default"]['fonts-performance']
  }]);
  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {
    // Activate Setting Active Tab from "settingsTab" Hash in the URl is present.
    const activePath = query.get('path');
    const activeHash = query.get('settings');
    const activeSettingsTabFromHash = activeHash && 'settings' === activePath ? activeHash : 'global-settings';
    dispatch({
      type: 'UPDATE_SETTINGS_ACTIVE_NAVIGATION_TAB',
      payload: activeSettingsTabFromHash
    });
  }, [initialStateSetFlag]);
  if (!initialStateSetFlag) {
    return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_DashboardApp_pages_settings_SettingsSkeleton__WEBPACK_IMPORTED_MODULE_5__["default"], null);
  }

  // Parent div is Required to add Padding to the Entire Structure for Smaller Windows.
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "px-6 w-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mx-auto mt-10 mb-8 font-semibold text-2xl lg:max-w-[80rem]"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Settings', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("main", {
    className: "mx-auto my-[2.43rem] bg-white rounded-md shadow overflow-hidden min-h-[36rem] lg:max-w-[80rem]"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "lg:grid lg:grid-cols-12 min-h-[36rem] h-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("aside", {
    className: "py-6 sm:px-6 lg:py-6 lg:px-0 lg:col-span-3"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("nav", {
    className: "space-y-1"
  }, navigation.map(item => (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(react_router_dom__WEBPACK_IMPORTED_MODULE_9__.Link // eslint-disable-line
  , {
    to: {
      search: `?page=${astra_admin.home_slug}&path=settings&settings=${item.slug}`
    },
    key: item.name,
    className: (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_6__.classNames)(activeSettingsNavigationTab === item.slug ? 'border-astra text-astra focus:text-astra-hover active:text-astra hover:text-astra-hover stroke-astra fill-astra focus:stroke-astra focus:fill-astra hover:stroke-astra hover:fill-astra' : 'border-white text-slate-800 stroke-slate-800 fill-slate-800 focus:text-slate-900 focus:border-slate-200 focus:stroke-slate-900 focus:fill-slate-900 hover:text-slate-900 hover:border-slate-200 hover:stroke-slate-900 hover:fill-slate-900', 'border-l-4 group cursor-pointer py-3 pl-5 flex items-center text-base font-medium'),
    onClick: () => {
      dispatch({
        type: 'UPDATE_SETTINGS_ACTIVE_NAVIGATION_TAB',
        payload: item.slug
      });
    }
  }, item.icon, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "truncate"
  }, item.name))))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_DashboardApp_pages_settings_ContainerSettings__WEBPACK_IMPORTED_MODULE_4__["default"], null))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Settings);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/settings/SettingsIcons.js":
/*!******************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/settings/SettingsIcons.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);

const SettingsIcons = {
  'fonts-performance': (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("svg", {
    className: "flex-shrink-0 mr-4 stroke-inherit",
    width: "18",
    height: "18",
    viewBox: "0 0 18 18",
    fill: "none",
    xmlns: "http://www.w3.org/2000/svg"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("path", {
    d: "M9 3V1M9 3C7.89543 3 7 3.89543 7 5C7 6.10457 7.89543 7 9 7M9 3C10.1046 3 11 3.89543 11 5C11 6.10457 10.1046 7 9 7M3 15C4.10457 15 5 14.1046 5 13C5 11.8954 4.10457 11 3 11M3 15C1.89543 15 1 14.1046 1 13C1 11.8954 1.89543 11 3 11M3 15V17M3 11V1M9 7V17M15 15C16.1046 15 17 14.1046 17 13C17 11.8954 16.1046 11 15 11M15 15C13.8954 15 13 14.1046 13 13C13 11.8954 13.8954 11 15 11M15 15V17M15 11V1",
    strokeWidth: "2",
    strokeLinecap: "round",
    strokeLinejoin: "round"
  })),
  'global-settings': (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("svg", {
    className: "flex-shrink-0 mr-4 stroke-inherit",
    fill: "none",
    width: "20",
    height: "20",
    viewBox: "0 0 20 20",
    xmlns: "http://www.w3.org/2000/svg"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("path", {
    d: "M8.32463 2.31731C8.75103 0.560897 11.249 0.560897 11.6754 2.31731C11.9508 3.45193 13.2507 3.99038 14.2478 3.38285C15.7913 2.44239 17.5576 4.2087 16.6172 5.75218C16.0096 6.74925 16.5481 8.04918 17.6827 8.32463C19.4391 8.75103 19.4391 11.249 17.6827 11.6754C16.5481 11.9508 16.0096 13.2507 16.6172 14.2478C17.5576 15.7913 15.7913 17.5576 14.2478 16.6172C13.2507 16.0096 11.9508 16.5481 11.6754 17.6827C11.249 19.4391 8.75103 19.4391 8.32463 17.6827C8.04918 16.5481 6.74926 16.0096 5.75219 16.6172C4.2087 17.5576 2.44239 15.7913 3.38285 14.2478C3.99038 13.2507 3.45193 11.9508 2.31731 11.6754C0.560897 11.249 0.560897 8.75103 2.31731 8.32463C3.45193 8.04918 3.99037 6.74926 3.38285 5.75218C2.44239 4.2087 4.2087 2.44239 5.75219 3.38285C6.74926 3.99037 8.04918 3.45193 8.32463 2.31731Z",
    strokeWidth: "2",
    strokeLinecap: "round",
    strokeLinejoin: "round"
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("path", {
    d: "M13 10C13 11.6569 11.6569 13 10 13C8.34315 13 7 11.6569 7 10C7 8.34315 8.34315 7 10 7C11.6569 7 13 8.34315 13 10Z",
    strokeWidth: "2",
    strokeLinecap: "round",
    strokeLinejoin: "round"
  }))
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SettingsIcons);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/settings/SettingsSkeleton.js":
/*!*********************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/settings/SettingsSkeleton.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _Skeleton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Skeleton */ "./assets/src/common/skeleton/index.js");


const SettingsSkeleton = () => {
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "px-6 w-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "max-w-3xl mx-auto lg:max-w-[80rem] mt-10 mb-8 font-semibold text-2xl"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_Skeleton__WEBPACK_IMPORTED_MODULE_1__.RectSkeleton, {
    width: "100px",
    height: "32px"
  })), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("main", {
    className: "max-w-[80rem] mx-auto my-[2.43rem] bg-white rounded-md shadow overflow-hidden h-[36rem]"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "lg:grid lg:grid-cols-12 h-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("aside", {
    className: "py-6 sm:px-6 lg:py-6 lg:px-5 lg:col-span-3"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("nav", {
    className: "space-y-1"
  }, Array(7).fill().map((i, index) => {
    return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      key: `setting${index}`,
      className: "flex justify-left items-center py-3 space-x-3"
    }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_Skeleton__WEBPACK_IMPORTED_MODULE_1__.RectSkeleton, {
      key: `icon${index}`,
      width: "24px",
      height: "24px"
    }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_Skeleton__WEBPACK_IMPORTED_MODULE_1__.TextSkeleton, {
      key: index,
      width: "120px",
      fontSize: "16px"
    }));
  }))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "border-l lg:col-span-9 p-8"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_Skeleton__WEBPACK_IMPORTED_MODULE_1__.TextSkeleton, {
    fontSize: "35px",
    width: "225px"
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_Skeleton__WEBPACK_IMPORTED_MODULE_1__.TextSkeleton, {
    width: "80%"
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "h-8"
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_Skeleton__WEBPACK_IMPORTED_MODULE_1__.TextSkeleton, {
    fontSize: "35px",
    width: "300px"
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_Skeleton__WEBPACK_IMPORTED_MODULE_1__.TextSkeleton, {
    width: "60%"
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "h-8"
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_Skeleton__WEBPACK_IMPORTED_MODULE_1__.TextSkeleton, {
    fontSize: "35px",
    width: "210px"
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_Skeleton__WEBPACK_IMPORTED_MODULE_1__.TextSkeleton, {
    width: "65%"
  })))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SettingsSkeleton);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/settings/UpgradeNotices.js":
/*!*******************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/settings/UpgradeNotices.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/api-fetch */ "@wordpress/api-fetch");
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _astra_components__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @astra-components */ "./assets/components/index.js");






const UpgradeNotices = () => {
  if (astra_admin.pro_available) {
    return '';
  }
  const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useDispatch)();
  const useUpgradeNotices = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useSelector)(state => state.useUpgradeNotices);
  const [upgradeNoticesState, setUpgradeNoticesState] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);
  const updateUpgradeNoticesVisibility = () => {
    setUpgradeNoticesState('updating');
    let assetStatus;
    if (useUpgradeNotices === false) {
      assetStatus = true;
    } else {
      assetStatus = false;
    }
    dispatch({
      type: 'UPGRADE_NOTICES',
      payload: assetStatus
    });
    const formData = new window.FormData();
    formData.append('action', 'ast_disable_pro_notices');
    formData.append('security', astra_admin.update_nonce);
    formData.append('status', assetStatus);
    _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_4___default()({
      url: astra_admin.ajax_url,
      method: 'POST',
      body: formData
    }).then(data => {
      if (data.success) {
        let payloadStatus = (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Deactivated!', 'astra');
        if (assetStatus) {
          payloadStatus = (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Activated!', 'astra');
        }
        dispatch({
          type: 'UPDATE_SETTINGS_SAVED_NOTIFICATION',
          payload: payloadStatus
        });
        setUpgradeNoticesState(false);
      }
    }).catch(error => {
      console.error('Error during activation/deactivation:', error);
    });
  };
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("section", {
    className: "block px-8 py-8 justify-between"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mr-16 w-full flex flex-col sm:flex-row sm:items-center"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h3", {
    className: "p-0 flex-1 justify-right inline-flex text-xl leading-8 font-semibold text-slate-800"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Build Better Websites with Astra Pro', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_astra_components__WEBPACK_IMPORTED_MODULE_5__.ProButton, {
    className: "inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-astra transition focus:bg-astra-hover hover:bg-astra-hover focus:outline-none h-9"
  })), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "mt-2 w-full md:w-9/12 text-sm text-slate-500 tablet:w-full"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)(`Access powerful features for painless WordPress design without the high costs. Powerful tools, premium support, limitless opportunity with Pro! Toggle upgrade notices on or off `, "astra"), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    onClick: updateUpgradeNoticesVisibility,
    className: "cursor-pointer text-astra focus:text-astra-hover active:text-astra-hover hover:text-astra-hover",
    rel: "noreferrer"
  }, 'updating' === upgradeNoticesState ? (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('updating...', 'astra') : (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('here.', 'astra'))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (UpgradeNotices);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/spectra/SpectraScreen.js":
/*!*****************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/spectra/SpectraScreen.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router/dist/index.js");
/* harmony import */ var _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Common/block-icons */ "./assets/src/common/block-icons.js");
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/api-fetch */ "@wordpress/api-fetch");
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3__);





const spectraFeatures = [{
  title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Super Fast and Stable', 'astra'),
  description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Spectra works with the native WordPress editor with no dependency on external code. So, it is fast and stable.', 'astra'),
  icon: 'superfast'
}, {
  title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Secure and Integrated', 'astra'),
  description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Clean code written using the latest standards to maximize security and work flawlessly with any WordPress plugin.', 'astra'),
  icon: 'secure'
}, {
  title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Native WordPress Interface', 'astra'),
  description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Spectra Integrates into the same WordPress editor, making it super intuitive website builder.', 'astra'),
  icon: 'nativewp'
}, {
  title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Google Will Love and Rank', 'astra'),
  description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Score 100% in CWV. Clean code output and lightning-fast load times keep visitors and search engines happy.', 'astra'),
  icon: 'googlelove'
}, {
  title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Zero Bloat, No Dependencies', 'astra'),
  description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Fewer external scripts and dependencies keep the code clean, resulting in small file sizes and faster loading times.', 'astra'),
  icon: 'zerobloat'
}, {
  title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Just-in-time Compiler', 'astra'),
  description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Loads assets dynamically on demand. Assets are loaded for only those blocks that are used on a page.', 'astra'),
  icon: 'compiler'
}];
const SpectraScreen = () => {
  const query = new URLSearchParams((0,react_router_dom__WEBPACK_IMPORTED_MODULE_4__.useLocation)()?.search);
  const allowAutoPlay = "1" === query.get("astra-activation-redirect") ? 1 : 0;
  const videoID = 'GLNzTxArR6Y';
  const handleSpectraPluginAction = e => {
    let spectraPluginStatus = astra_admin.spectra_plugin_status;
    const formData = new window.FormData();
    if ('install' === spectraPluginStatus) {
      formData.append('action', 'astra_recommended_plugin_install');
      formData.append('slug', 'ultimate-addons-for-gutenberg');
      formData.append('init', 'ultimate-addons-for-gutenberg/ultimate-addons-for-gutenberg.php');
      formData.append('_ajax_nonce', astra_admin.plugin_installer_nonce);
      e.target.innerText = astra_admin.plugin_installing_text;
      _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3___default()({
        url: astra_admin.ajax_url,
        method: 'POST',
        body: formData
      }).then(data => {
        if (data.success) {
          e.target.innerText = astra_admin.plugin_installed_text;
          activatePlugin(e);
        }
      }).catch(error => {
        console.error('Error during plugin installation:', error);
      });
    } else if ('installed' === spectraPluginStatus) {
      activatePlugin(e);
    } else {
      // Do nothing.
    }
  };
  const activatePlugin = e => {
    const formData = new window.FormData();
    formData.append('action', 'astra_recommended_plugin_activate');
    formData.append('security', astra_admin.plugin_manager_nonce);
    formData.append('init', 'ultimate-addons-for-gutenberg/ultimate-addons-for-gutenberg.php');
    e.target.innerText = astra_admin.plugin_activating_text;
    _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3___default()({
      url: astra_admin.ajax_url,
      method: 'POST',
      body: formData
    }).then(data => {
      if (data.success) {
        e.target.innerText = astra_admin.plugin_activated_text;
        window.location = `${astra_admin.admin_base_url}options-general.php?page=spectra`;
      }
    }).catch(error => {
      console.error('Error during plugin activation:', error);
    });
  };
  const getSpectraPluginTitle = () => {
    if ('install' === astra_admin.spectra_plugin_status) {
      return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, " ", (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
        className: "mr-3"
      }, " ", (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Install Spectra - It’s free", "astra"), " "), " ", _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__["default"]["download"], " ");
    } else if ('installed' === astra_admin.spectra_plugin_status) {
      return (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Activate Spectra", "astra");
    } else {
      return (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Explore Spectra", "astra");
    }
  };
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("main", {
    className: "bg-white pb-14 pt-20"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mx-auto px-6 max-w-[45rem]"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h1", {
    className: "sr-only"
  }, " ", (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Spectra - WordPress Free Page Builder", "astra"), " "), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex flex-col items-center"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "absolute top-0 tablet:none"
  }, _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__["default"]['spectraBackgroundLogo'])), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "relative flex flex-col items-center"
  }, _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__["default"]["spectra-logo"], (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h2", {
    className: "text-4xl sm:text-[2.5rem] text-slate-800 font-semibold capitalize mb-2 mt-7"
  }, `${astra_admin.theme_name} + Spectra = `, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "text-[1em] leading-[1em]"
  }, _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__["default"]['heart-logo'])), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "text-base leading-[1.625rem] mb-7"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Spectra is 100% beginner friendly and enhances the default WordPress block editor.', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
    className: `inline-flex w-[35%] justify-center items-center px-4 py-3 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-astra focus-visible:bg-astra-hover hover:bg-astra-hover hover:text-white focus:text-white active:text-white focus:outline-none mr-4`,
    onClick: handleSpectraPluginAction
  }, getSpectraPluginTitle()), astra_admin.show_banner_video && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "relative pb-[25.375rem] mt-12 w-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("iframe", {
    className: "absolute inset-0 w-full h-full rounded-md",
    src: `https://www.youtube-nocookie.com/embed/${videoID}?showinfo=0&autoplay=${allowAutoPlay}&mute=${allowAutoPlay}&rel=0`,
    allow: "autoplay",
    title: "YouTube video player",
    frameBorder: "0",
    allowFullScreen: true
  }))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "grid grid-cols-2 gap-12 mt-16 px-0 sm:px-8"
  }, spectraFeatures.map((feature, key) => (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    key: key
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, " ", _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__["default"][feature.icon], " "), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h4", {
    className: "text-base leading-[1.625rem] text-slate-800 font-medium mt-4 mb-1"
  }, feature.title), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "text-sm leading-[1.375rem] text-slate-600"
  }, feature.description)))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex flex-col items-center justify-center mt-20 mx-0 sm:mx-[4.5rem]"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h3", {
    className: "text-[2rem] leading-10 font-semibold text-slate-800 mb-6 text-center"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Build Ultra High Performance Websites, Without Coding", "astra")), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
    className: `inline-flex w-[45%] justify-center items-center px-4 py-3 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-astra focus-visible:bg-astra-hover hover:bg-astra-hover hover:text-white focus:text-white active:text-white focus:outline-none mr-4`,
    onClick: handleSpectraPluginAction
  }, getSpectraPluginTitle()))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SpectraScreen);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/starter-templates/StarterTemplates.js":
/*!******************************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/starter-templates/StarterTemplates.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Common/block-icons */ "./assets/src/common/block-icons.js");
/* harmony import */ var _Utils_extensions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Utils/extensions */ "./assets/src/utils/extensions.js");




const StarterTemplates = () => {
  if (!astra_admin.show_plugins) {
    return;
  }
  if (astra_admin.starter_templates_data.is_available) {
    window.open(astra_admin.starter_templates_data.redirection, '_self');
    return;
  }
  const handlePluginActionTrigger = e => (0,_Utils_extensions__WEBPACK_IMPORTED_MODULE_3__.triggerAction)(e);
  const getTitle = status => {
    if (status === "activated") {
      return (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Activated', 'astra');
    } else if (status === "installed") {
      return (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Activate', 'astra');
    } else {
      return (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Install & Activate', 'astra');
    }
  };
  const onLearnMoreGuideClick = () => {
    window.open(astra_admin.astraWebsite?.templatesUrl, '_blank');
  };
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("main", {
    className: "relative tablet:my-16"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "w-full blur-sm opacity-40"
  }, _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__["default"]['starter-canvas']), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "max-w-[39rem] h-max bg-white m-auto shadow-overlay-modal text-center rounded-lg p-8 absolute inset-3 top-[150%] sm:top-0 sm:inset-0"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mx-auto flex items-center justify-center"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", {
    src: astra_admin.starter_templates_data.icon_path,
    width: "40px",
    height: "40px"
  })), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mt-3 text-center sm:mt-6"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h4", {
    className: "text-2xl font-semibold leading-7 text-slate-800",
    id: "modal-title"
  }, astra_admin.starter_templates_data.title), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mt-2"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "text-sm text-slate-500"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Create professional designed pixel perfect websites in minutes. Get access to 280+ pre-made full website templates for your favorite page builder.', 'astra'))))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "text-center mt-5 sm:mt-6"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
    "data-type": "button",
    className: "w-auto inline-flex items-center justify-center rounded-md border border-transparent bg-astra px-4 py-2 text-base font-medium text-white shadow-sm hover:bg-astra-hover focus:outline-none focus:ring-2 focus:ring-astra-hover focus:ring-offset-2 sm:text-sm",
    "data-slug": astra_admin.starter_templates_data.slug,
    "data-init": astra_admin.starter_templates_data.path,
    "data-redirection": astra_admin.starter_templates_data.redirection,
    "data-action": (0,_Utils_extensions__WEBPACK_IMPORTED_MODULE_3__.getAction)(astra_admin.starter_templates_data.status),
    onClick: handlePluginActionTrigger
  }, getTitle(astra_admin.starter_templates_data.status)), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
    className: "w-auto justify-center mt-4 text-astra",
    onClick: onLearnMoreGuideClick
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Learn More', 'astra')))))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (StarterTemplates);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/welcome/ExtensionCard.js":
/*!*****************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/welcome/ExtensionCard.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _headlessui_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @headlessui/react */ "./node_modules/@headlessui/react/dist/components/switch/switch.js");
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/api-fetch */ "@wordpress/api-fetch");
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _ToolTip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ToolTip */ "./assets/src/dashboard-app/pages/welcome/ToolTip.js");
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__);






const classNames = (...classes) => classes.filter(Boolean).join(' ');
const ExtensionCard = props => {
  const {
    title,
    title_url,
    links,
    condition = true,
    deprecated = false
  } = props.moduleInfo;
  const slug = props.slug;
  const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useDispatch)();
  const blocksStatuses = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useSelector)(state => state.blocksStatuses);
  const moduleActivationStatus = blocksStatuses && undefined !== blocksStatuses[slug] && slug == blocksStatuses[slug] ? true : false;
  function getAddonTitleColorClass(condition) {
    if (condition || !astra_admin.pro_available) {
      return 'text-slate-800';
    } else {
      return 'text-[#475569]';
    }
  }
  function getAddonLinksColorClass(condition, classes) {
    if (condition || !astra_admin.pro_available) {
      return classes;
    } else {
      return 'text-[#CBD5E1] ' + classes;
    }
  }
  function getWrapperClass(condition, addon) {
    if (condition || 'white-label' === addon) {
      return 'ast-addon-active';
    } else {
      return 'ast-addon-inactive';
    }
  }
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    key: slug,
    className: classNames(!astra_admin.pro_available || !condition ? classNames(!astra_admin.pro_available ? 'group' : '', 'bg-slate-50') : `bg-white ${getWrapperClass(moduleActivationStatus, slug)} `, 'box-border relative border rounded-md h-20 z-0 px-4 py-3 flex items-start gap-x-4 snap-start hover:shadow-md transition astra-icon-transition')
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex-1 min-w-0"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: `flex items-center text-base font-medium leading-7 ${getAddonTitleColorClass(condition)}`
  }, title, deprecated && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "inline-block align-top max-h-4 px-1.5 py-1 ml-1.5 text-[10px] leading-[10px] border border-slate-200 text-slate-400 rounded"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)('Legacy', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "group"
  }, astra_admin.pro_available && !condition && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "group inline-block align-middle ml-1 leading-none opacity-30 text-base dashicons dashicons-info"
  }), astra_admin.pro_available && !condition && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "w-max max-w-[17.125rem] absolute -top-[2.8rem] left-4 rounded-[0.1875rem] z-10 opacity-0 group-hover:opacity-100 invisible group-hover:visible transition-opacity duration-300 ease-in-out"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    id: "pro-tooltip-top",
    role: "tooltip",
    className: "text-left inline-block z-10 h-fit px-2.5 py-1.5 text-[0.75rem] leading-[1rem] text-white bg-slate-800 rounded-sm shadow-sm opacity-1 tooltip"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)(`${title} plugin needs to be installed / activated to enable this module.`, 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "ml-8 mr-auto w-2 h-2 flex -mt-1 rotate-45 bg-slate-800 overflow-hidden"
  })))), links.map(link => (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("a", {
    key: Math.floor(Math.random() * 100000),
    className: classNames(getAddonLinksColorClass(condition, link.link_class), astra_admin.pro_available && !condition ? 'focus-visible:text-slate-500 active:text-slate-500 focus:text-slate-400 text-slate-400 text-base truncate pointer-events-none' : 'focus-visible:text-slate-500 active:text-slate-500 focus:text-slate-400 text-slate-400 text-base truncate'),
    href: link.link_url,
    target: link.target_blank ? "_blank" : "_self",
    rel: "noreferrer"
  }, link.link_text))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: classNames(!astra_admin.pro_available ? 'text-[0.625rem] leading-[1rem] font-medium text-white bg-slate-800 border border-slate-800 rounded-[0.1875rem]' : 'self-center', astra_admin.pro_available && !condition ? 'relative inline-flex flex-shrink-0 py-[0rem] px-1.5 opacity-30 pointer-events-none' : 'relative inline-flex flex-shrink-0 py-[0rem] px-1.5')
  }, !astra_admin.pro_available && (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)('PRO', 'astra'), astra_admin.pro_available && 'white-label' !== slug && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_headlessui_react__WEBPACK_IMPORTED_MODULE_5__.Switch, {
    checked: moduleActivationStatus,
    onChange: () => {
      let status = false;
      let moduleId = slug;
      let moduleStatus = moduleActivationStatus ? 'deactivate' : 'activate';
      if (!moduleActivationStatus) {
        status = slug;
      }
      const optionsClone = {
        ...blocksStatuses
      };
      optionsClone[slug] = status;
      dispatch({
        type: 'UPDATE_BLOCK_STATUSES',
        payload: optionsClone
      });
      const formData = new window.FormData();
      formData.append('action', 'astra_addon_update_module_status');
      formData.append('security', astra_addon_admin.update_nonce);
      formData.append('module_status', moduleStatus); // activate/deactivate.
      formData.append('module_id', moduleId);
      _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_1___default()({
        url: astra_admin.ajax_url,
        method: 'POST',
        body: formData
      }).then(data => {
        if (data.success) {
          dispatch({
            type: 'UPDATE_SETTINGS_SAVED_NOTIFICATION',
            payload: moduleStatus === 'activate' ? (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)('Successfully Activated!', 'astra') : (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)('Successfully Deactivated!', 'astra')
          });
          const reFormData = new window.FormData();
          reFormData.append('action', 'astra_refresh_assets_files');
          reFormData.append('security', astra_addon_admin.update_nonce);
          _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_1___default()({
            url: astra_admin.ajax_url,
            method: 'POST',
            body: reFormData
          }).then(data => {
            if ("advanced-hooks" === slug) {
              location.reload(); // Reload the screen.
            }
          }).catch(error => {
            console.error('Error during cache refresh:', error);
          });
        }
      }).catch(error => {
        console.error('Error during activation/deactivation:', error);
      });
    },
    className: classNames(moduleActivationStatus ? 'bg-astra' : 'bg-slate-200', 'group relative inline-flex h-4 w-9 flex-shrink-0 cursor-pointer items-center justify-center rounded-full focus:outline-none focus:ring-2 focus:ring-astra focus:ring-offset-2')
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    "aria-hidden": "true",
    className: "pointer-events-none absolute h-full w-full rounded-md bg-white"
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    "aria-hidden": "true",
    className: classNames(moduleActivationStatus ? 'bg-astra' : 'bg-gray-200', 'pointer-events-none absolute mx-auto h-4 w-9 rounded-full transition-colors duration-200 ease-in-out')
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    "aria-hidden": "true",
    className: classNames(moduleActivationStatus ? 'translate-x-5' : 'translate-x-0', 'toggle-bubble pointer-events-none absolute left-0 inline-block h-5 w-5 transform rounded-full border border-gray-200 bg-white shadow ring-0 transition-transform duration-200 ease-in-out')
  }))), !astra_admin.pro_available && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_ToolTip__WEBPACK_IMPORTED_MODULE_2__["default"], null));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ExtensionCard);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/welcome/ToolTip.js":
/*!***********************************************************!*\
  !*** ./assets/src/dashboard-app/pages/welcome/ToolTip.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);



const ToolTip = () => {
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "absolute right-2.5 -top-[1.75rem] opacity-0 group-hover:opacity-100 invisible group-hover:visible transition-opacity duration-300 ease-in-out"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    id: "tooltip-top",
    role: "tooltip",
    className: "inline-block z-10 px-2.5 py-1.5 text-[0.75rem] leading-[1rem] text-white bg-slate-800 rounded-sm shadow-sm opacity-1 tooltip"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('This option only available on Astra Pro.', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "ml-auto w-2 h-2 flex -mt-1 rotate-45 bg-slate-800 mr-4 overflow-hidden"
  }));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ToolTip);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/welcome/VideoPopup.js":
/*!**************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/welcome/VideoPopup.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _headlessui_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @headlessui/react */ "./node_modules/@headlessui/react/dist/components/transitions/transition.js");
/* harmony import */ var _headlessui_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @headlessui/react */ "./node_modules/@headlessui/react/dist/components/dialog/dialog.js");



const VideoPopup = ({
  allowAutoPlay,
  videoPopup,
  toggleVideoPopup
}) => {
  const videoID = 'TBZd9oligCw';
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_headlessui_react__WEBPACK_IMPORTED_MODULE_2__.Transition.Root, {
    show: videoPopup,
    as: react__WEBPACK_IMPORTED_MODULE_1__.Fragment
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_headlessui_react__WEBPACK_IMPORTED_MODULE_3__.Dialog, {
    as: "div",
    className: "relative z-[10000]",
    onClick: toggleVideoPopup,
    onClose: toggleVideoPopup
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_headlessui_react__WEBPACK_IMPORTED_MODULE_2__.Transition.Child, {
    as: react__WEBPACK_IMPORTED_MODULE_1__.Fragment,
    enter: "ease-out duration-300",
    enterFrom: "opacity-0",
    enterTo: "opacity-100",
    leave: "ease-in duration-200",
    leaveFrom: "opacity-100",
    leaveTo: "opacity-0"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "fixed inset-0 bg-slate-800 bg-opacity-90 transition-opacity"
  })), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "fixed inset-0 z-[10000] overflow-y-auto"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex min-h-full justify-center p-4 text-center items-center lg:p-0"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_headlessui_react__WEBPACK_IMPORTED_MODULE_2__.Transition.Child, {
    as: react__WEBPACK_IMPORTED_MODULE_1__.Fragment,
    enter: "ease-out duration-300",
    enterFrom: "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95",
    enterTo: "opacity-100 translate-y-0 sm:scale-100",
    leave: "ease-in duration-200",
    leaveFrom: "opacity-100 translate-y-0 sm:scale-100",
    leaveTo: "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "relative w-[24rem] md:w-[34rem] lg:w-[60rem] h-[14rem] md:h-[19rem] lg:h-[34rem]"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("iframe", {
    className: "absolute inset-0 w-full h-full border-0 rounded-md",
    src: `https://www.youtube-nocookie.com/embed/${videoID}?showinfo=0&autoplay=${videoPopup ? 1 : 0}&rel=0`,
    allow: "autoplay",
    title: "YouTube video player",
    frameBorder: "0",
    allowFullScreen: true
  })))))));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VideoPopup);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/welcome/Welcome.js":
/*!***********************************************************!*\
  !*** ./assets/src/dashboard-app/pages/welcome/Welcome.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router/dist/index.js");
/* harmony import */ var _DashboardApp_pages_Welcome_QuickSettings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @DashboardApp/pages/Welcome/QuickSettings */ "./assets/src/dashboard-app/pages/Welcome/QuickSettings.js");
/* harmony import */ var _Common_block_icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Common/block-icons */ "./assets/src/common/block-icons.js");
/* harmony import */ var _DashboardApp_pages_Welcome_ProModules__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @DashboardApp/pages/Welcome/ProModules */ "./assets/src/dashboard-app/pages/Welcome/ProModules.js");
/* harmony import */ var _DashboardApp_pages_Welcome_UsefulPlugins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @DashboardApp/pages/Welcome/UsefulPlugins */ "./assets/src/dashboard-app/pages/Welcome/UsefulPlugins.js");
/* harmony import */ var _DashboardApp_pages_Welcome_AstraIntegration__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @DashboardApp/pages/Welcome/AstraIntegration */ "./assets/src/dashboard-app/pages/Welcome/AstraIntegration.js");
/* harmony import */ var _DashboardApp_pages_Welcome_BulkExtensionController__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @DashboardApp/pages/Welcome/BulkExtensionController */ "./assets/src/dashboard-app/pages/Welcome/BulkExtensionController.js");
/* harmony import */ var _VideoPopup__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./VideoPopup */ "./assets/src/dashboard-app/pages/welcome/VideoPopup.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var _astra_components__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @astra-components */ "./assets/components/index.js");
/* harmony import */ var _astra_components_icons__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @astra-components/icons */ "./assets/components/icons/index.js");













const classNames = (...classes) => classes.filter(Boolean).join(" ");
const Welcome = () => {
  const query = new URLSearchParams((0,react_router_dom__WEBPACK_IMPORTED_MODULE_12__.useLocation)()?.search);
  const displayBannerVideo = astra_admin.show_banner_video ? true : false;
  const allowAutoPlay = "1" === query.get("astra-activation-redirect") ? 1 : 0;
  const onCustomizeClick = () => {
    window.open(astra_admin.customize_url, "_self");
  };
  const [videoPopup, setVideoPopup] = (0,react__WEBPACK_IMPORTED_MODULE_9__.useState)(false);
  const toggleVideoPopup = () => {
    setVideoPopup(!videoPopup);
  };
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("main", {
    className: "py-[2.43rem]"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "max-w-3xl mx-auto px-6 lg:max-w-7xl"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h1", {
    className: "sr-only"
  }, " Astra "), astra_admin.show_self_branding && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "grid grid-cols-1 gap-4 items-start lg:grid-cols-5 lg:gap-0 xl:gap-0 rounded-md bg-white overflow-hidden shadow-sm px-8 py-8"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "grid grid-cols-1 gap-4 lg:col-span-3 h-full md:mr-[5.25rem]"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("section", {
    "aria-labelledby": "section-1-title h-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h2", {
    className: "sr-only",
    id: "section-1-title"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Welcome Banner', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex flex-col justify-center h-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: ""
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "pb-4 font-medium text-base text-slate-800"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Hello ", "astra") + astra_admin.current_user + ","), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "flex"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h2", {
    className: "text-slate-800 text-[2rem] leading-10 pb-3 font-semibold text-left"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.sprintf)((0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Welcome to %s", "astra"), astra_admin.theme_name)), astra_admin.pro_available ? (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "ml-2 h-full inline-flex leading-[1rem] font-medium flex-shrink-0 py-[0rem] px-1.5 text-[0.625rem] text-white bg-slate-800 border border-slate-800 rounded-[0.1875rem] -tablet:mt:10"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('PRO', 'astra')) : (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "ml-2 h-full inline-flex leading-[1rem] flex-shrink-0 py-[0rem] px-1.5 text-[0.625rem] text-astra bg-blue-50 border border-blue-50 rounded-[0.1875rem] font-medium -tablet:mt:10"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('FREE', 'astra'))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "text-base leading-[1.625rem] text-slate-600 pb-7"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.sprintf)((0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("%s is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight and offers unparalleled speed.", "astra"), astra_admin.theme_name)), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "relative z-0 inline-flex flex-col sm:flex-row justify-start w-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
    type: "button",
    className: "sm:inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-astra focus-visible:bg-astra-hover hover:bg-astra-hover focus:outline-none mr-4 mb-2 sm:mb-0",
    onClick: onCustomizeClick
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Start Customising", "astra")), displayBannerVideo && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
    className: "inline-flex items-center text-base font-medium text-astra focus:text-astra focus-visible:text-astra-hover active:text-astra-hover hover:text-astra-hover",
    onClick: toggleVideoPopup
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "pt-0.5 pl-4 pr-3"
  }, " ", _Common_block_icons__WEBPACK_IMPORTED_MODULE_3__["default"]["play"], " "), (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)(`Watch the Quick Starter Guide`, "astra"))))))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "grid grid-cols-1 gap-4 lg:col-span-2 h-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "astra-video-container"
  }, displayBannerVideo && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("iframe", {
    className: "astra-video rounded-md",
    src: `https://www.youtube-nocookie.com/embed/TBZd9oligCw?showinfo=0&autoplay=${allowAutoPlay}&mute=${allowAutoPlay}&rel=0`,
    allow: "autoplay",
    title: "YouTube video player",
    frameBorder: "0",
    allowFullScreen: true
  })))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "grid grid-cols-1 gap-[32px] items-start lg:grid-cols-3 lg:gap-[32px] xl:gap-[32px] mt-[32px]"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: classNames(astra_admin.show_self_branding ? "lg:col-span-2" : "lg:col-span-3", "grid grid-cols-1 gap-[32px]")
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("section", {
    "aria-labelledby": "section-1-title h-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h2", {
    className: "sr-only",
    id: "section-1-title"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Quick Links', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "p-[2rem] rounded-md bg-white overflow-hidden shadow-sm flex flex-col justify-center h-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "relative w-full flex items-center justify-between"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "font-semibold text-xl leading-6 text-slate-800"
  }, " ", (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Quick Settings", "astra"), " "), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("a", {
    className: "lg:flex-shrink-0 text-sm font-medium text-astra focus:text-astra focus-visible:text-astra-hover active:text-astra-hover hover:text-astra-hover no-underline",
    href: astra_admin.customize_url,
    target: "_self",
    rel: "noreferrer"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Go to Customizer", "astra"))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_DashboardApp_pages_Welcome_QuickSettings__WEBPACK_IMPORTED_MODULE_2__["default"], null))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("section", {
    "aria-labelledby": "section-1-title h-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h2", {
    className: "sr-only",
    id: "section-1-title"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.sprintf)((0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Do more with %s Modules', 'astra'), astra_admin.plugin_name)), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "p-[2rem] rounded-md bg-white overflow-hidden shadow-sm flex flex-col justify-center h-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "relative w-full flex flex-col sm:flex-row sm:items-center sm:justify-between"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "font-semibold text-xl leading-6 text-slate-800 mb-4 sm:mb-0"
  }, astra_admin.pro_available ? (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.sprintf)((0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('%s Modules', 'astra'), astra_admin.plugin_name) : (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.sprintf)((0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Do more with %s Modules', 'astra'), astra_admin.plugin_name)), astra_admin.pro_available && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_DashboardApp_pages_Welcome_BulkExtensionController__WEBPACK_IMPORTED_MODULE_7__["default"], null), !astra_admin.pro_available && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_astra_components__WEBPACK_IMPORTED_MODULE_10__.ProButton, {
    className: "lg:flex-shrink-0 text-sm font-medium text-astra focus:text-astra focus-visible:text-astra-hover active:text-astra-hover hover:text-astra-hover no-underline",
    isLink: true
  })), wp.hooks.applyFilters(`astra_dashboard.pro_extensions`, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_DashboardApp_pages_Welcome_ProModules__WEBPACK_IMPORTED_MODULE_4__["default"], null)))), astra_admin.show_plugins && astra_admin.show_self_branding && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("section", {
    "aria-labelledby": "section-1-title h-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h2", {
    className: "sr-only",
    id: "section-1-title"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Astra Integrations', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "p-[2rem] rounded-md bg-white overflow-hidden shadow-sm flex flex-col justify-center h-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "relative w-full lg:flex lg:items-center lg:justify-between"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "font-semibold text-xl leading-6 text-slate-800"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.sprintf)((0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('%s Integrations', "astra"), astra_admin.theme_name))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_DashboardApp_pages_Welcome_AstraIntegration__WEBPACK_IMPORTED_MODULE_6__["default"], null))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("section", {
    "aria-labelledby": "section-1-title h-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h2", {
    className: "sr-only",
    id: "section-1-title"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Your License', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "ast-welcome-screen rounded-md bg-white overflow-hidden shadow-sm flex flex-col justify-center h-full"
  }, wp.hooks.applyFilters(`astra_dashboard.welcome_screen_after_integrations`, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", null))))), astra_admin.show_self_branding && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "grid grid-cols-1 gap-[32px]"
  }, astra_admin.show_plugins && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("section", {
    "aria-labelledby": "section-2-title"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h2", {
    className: "sr-only",
    id: "section-2-title"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Extend Your Website', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "box-border rounded-md shadow-sm overflow-hidden"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: ""
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h3", {
    className: "text-slate-800 text-base font-semibold leading-5 tracking-[0.0125rem] bg-white pt-6 pl-6 pb-4"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Extend Your Website', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_DashboardApp_pages_Welcome_UsefulPlugins__WEBPACK_IMPORTED_MODULE_5__["default"], null)))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_astra_components__WEBPACK_IMPORTED_MODULE_10__.PromoCard, {
    id: "vip-priority-support",
    className: "border border-sky-500",
    title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("VIP Priority Support", "astra"),
    description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Faster and exclusive support service designed for VIP assistance and benefits.", "astra"),
    linkHRef: astra_admin.astraWebsite?.vipPrioritySupportUrl,
    linkText: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Know More →", "astra")
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_astra_components__WEBPACK_IMPORTED_MODULE_10__.PromoCard, {
    id: "join-community",
    title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Join the Community", "astra"),
    description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Got a question about the plugin, want to share your awesome project or just say hi? Join our wonderful community!", "astra"),
    linkHRef: "https://www.facebook.com/groups/wpastra",
    linkText: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Join Now →", "astra")
  }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_astra_components__WEBPACK_IMPORTED_MODULE_10__.PromoCard, {
    id: "rate-us",
    title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Rate Us", "astra"),
    linkHRef: "https://wordpress.org/support/theme/astra/reviews/?rate=5#new-post",
    linkText: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Submit a Review →", "astra")
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "text-slate-500 text-sm pb-2.5 pr-12 flex items-center"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "text-xl text-slate-800 flex mr-2"
  }, [1, 2, 3, 4, 5].map(item => (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_astra_components_icons__WEBPACK_IMPORTED_MODULE_11__.Star, {
    key: item,
    fill: "#334155"
  }))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
    className: "text-xs leading-4 align-text-bottom text-slate-400"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Based on 5k+ reviews", "astra"))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
    className: "text-slate-500 text-sm pb-5"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("We love to hear from you, we would appreciate every single review.", "astra")))))), displayBannerVideo && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_VideoPopup__WEBPACK_IMPORTED_MODULE_8__["default"], {
    allowAutoPlay: allowAutoPlay,
    videoPopup: videoPopup,
    toggleVideoPopup: toggleVideoPopup
  }));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Welcome);

/***/ }),

/***/ "./assets/src/dashboard-app/pages/woocommerce/ExtensionScreen.js":
/*!***********************************************************************!*\
  !*** ./assets/src/dashboard-app/pages/woocommerce/ExtensionScreen.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Common/block-icons */ "./assets/src/common/block-icons.js");
/* harmony import */ var _Utils_extensions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Utils/extensions */ "./assets/src/utils/extensions.js");




const ExtensionScreen = () => {
  const handlePluginActionTrigger = e => (0,_Utils_extensions__WEBPACK_IMPORTED_MODULE_3__.triggerAction)(e);
  const getStatusClass = value => {
    if (value === "activated") {
      return "text-[#4AB866] pointer-events-none";
    } else {
      return "text-astra bg-white px-[0.8125rem] shadow-sm border border-solid border-[#0EA5E9] shadow-sm";
    }
  };
  const renderExtensionCards = astra_admin.woo_extensions.map((plugin, index) => {
    return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      key: index,
      className: "rounded-md px-5 py-4 bg-white border border-solid border-[#E2E8F0]"
    }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      className: "grid gap-3"
    }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      className: "flex justify-between"
    }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      className: "w-10 h-10 block extension-logo"
    }, plugin.logoPath.internal_icon && _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__["default"][plugin.logoPath.icon_path], !plugin.logoPath.internal_icon && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", {
      src: plugin.logoPath.icon_path,
      width: "40px",
      height: "40px"
    })), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      className: "star-rating flex items-center"
    }, Array(5).fill(0).map((_, i) => (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
      key: i
    }, _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__["default"]['star'])), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
      className: "text-xs text-slate-400 ml-1"
    }, plugin.ratings))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      className: "text-base leading-[1.625rem] font-medium text-slate-800"
    }, plugin.title), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
      className: "text-sm leading-[1.375rem] text-slate-400"
    }, plugin.subtitle)), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      className: "flex justify-between"
    }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
      "data-type": "button",
      "data-slug": plugin.slug,
      "data-redirection": plugin.redirection,
      "data-action": (0,_Utils_extensions__WEBPACK_IMPORTED_MODULE_3__.getAction)(plugin.status),
      "data-init": plugin.path,
      onClick: handlePluginActionTrigger,
      className: ` ${getStatusClass(plugin.status)} capitalize mt-3 inline-flex items-center text-sm leading-[0.875rem] font-medium rounded-md py-[0.5625rem] hover:bg-slate-50 focus:outline-none focus:ring-2 focus:ring-astra-hover focus:ring-offset-2`
    }, 'installed' == plugin.status ? astra_admin.plugin_activate_text : plugin.status), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
      className: "installation-count flex items-center mt-3"
    }, _Common_block_icons__WEBPACK_IMPORTED_MODULE_2__["default"]['chart'], (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
      className: "text-xs text-slate-400 ml-1"
    }, plugin.activations, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('active users', 'astra')))));
  });
  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "px-6 w-full"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "mx-auto lg:max-w-[80rem]"
  }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: " mt-10 mb-2 font-semibold text-2xl"
  }, "WooCommerce ", (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Extensions', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
    className: "text-sm mb-8 text-[#475569]"
  }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('WooCommerce extensions that will elevate your online store from good to exceptional.', 'astra')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("main", {
    className: "my-[2.43rem grid lg:grid-cols-3 md:grid-cols-2 grid-cols-1 gap-6 "
  }, renderExtensionCards)));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ExtensionScreen);

/***/ }),

/***/ "./assets/src/dashboard-app/whats-new-library/useWhatsNewRSS.js":
/*!**********************************************************************!*\
  !*** ./assets/src/dashboard-app/whats-new-library/useWhatsNewRSS.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/**
 * === Whats New RSS ===
 *
 * Version: 1.0.7
 * Generated on: 8th October, 2024
 * Documentation: https://github.com/brainstormforce/whats-new-rss/blob/master/README.md
 */


var __assign = undefined && undefined.__assign || function () {
  __assign = Object.assign || function (t) {
    for (var s, i = 1, n = arguments.length; i < n; i++) {
      s = arguments[i];
      for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
    }
    return t;
  };
  return __assign.apply(this, arguments);
};
var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
  function adopt(value) {
    return value instanceof P ? value : new P(function (resolve) {
      resolve(value);
    });
  }
  return new (P || (P = Promise))(function (resolve, reject) {
    function fulfilled(value) {
      try {
        step(generator.next(value));
      } catch (e) {
        reject(e);
      }
    }
    function rejected(value) {
      try {
        step(generator["throw"](value));
      } catch (e) {
        reject(e);
      }
    }
    function step(result) {
      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
    }
    step((generator = generator.apply(thisArg, _arguments || [])).next());
  });
};
var __generator = undefined && undefined.__generator || function (thisArg, body) {
  var _ = {
      label: 0,
      sent: function () {
        if (t[0] & 1) throw t[1];
        return t[1];
      },
      trys: [],
      ops: []
    },
    f,
    y,
    t,
    g;
  return g = {
    next: verb(0),
    "throw": verb(1),
    "return": verb(2)
  }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
    return this;
  }), g;
  function verb(n) {
    return function (v) {
      return step([n, v]);
    };
  }
  function step(op) {
    if (f) throw new TypeError("Generator is already executing.");
    while (g && (g = 0, op[0] && (_ = 0)), _) try {
      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;
      if (y = 0, t) op = [op[0] & 2, t.value];
      switch (op[0]) {
        case 0:
        case 1:
          t = op;
          break;
        case 4:
          _.label++;
          return {
            value: op[1],
            done: false
          };
        case 5:
          _.label++;
          y = op[1];
          op = [0];
          continue;
        case 7:
          op = _.ops.pop();
          _.trys.pop();
          continue;
        default:
          if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
            _ = 0;
            continue;
          }
          if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
            _.label = op[1];
            break;
          }
          if (op[0] === 6 && _.label < t[1]) {
            _.label = t[1];
            t = op;
            break;
          }
          if (t && _.label < t[2]) {
            _.label = t[2];
            _.ops.push(op);
            break;
          }
          if (t[2]) _.ops.pop();
          _.trys.pop();
          continue;
      }
      op = body.call(thisArg, _);
    } catch (e) {
      op = [6, e];
      y = 0;
    } finally {
      f = t = 0;
    }
    if (op[0] & 5) throw op[1];
    return {
      value: op[0] ? op[1] : void 0,
      done: true
    };
  }
};
var WhatsNewRSSDefaultArgs = {
  rssFeedURL: '',
  selector: '',
  loaderIcon: "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"xMidYMid\">\n\t<circle cx=\"50\" cy=\"50\" fill=\"none\" stroke=\"#9f9f9f\" stroke-width=\"10\" r=\"35\" stroke-dasharray=\"164.93361431346415 56.97787143782138\">\n\t\t<animateTransform attributeName=\"transform\" type=\"rotate\" repeatCount=\"indefinite\" dur=\"1s\" values=\"0 50 50;360 50 50\" keyTimes=\"0;1\"></animateTransform>\n\t</circle>\n\t</svg>",
  viewAll: {
    link: '',
    label: 'View All'
  },
  triggerButton: {
    label: '',
    icon: "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.61703 13.1998C8.04294 13.1503 7.46192 13.125 6.875 13.125H6.25C4.17893 13.125 2.5 11.4461 2.5 9.375C2.5 7.30393 4.17893 5.625 6.25 5.625H6.875C7.46192 5.625 8.04294 5.59972 8.61703 5.55018M8.61703 13.1998C8.82774 14.0012 9.1031 14.7764 9.43719 15.5195C9.64341 15.9782 9.48685 16.5273 9.05134 16.7787L8.50441 17.0945C8.04492 17.3598 7.45466 17.1921 7.23201 16.7106C6.70983 15.5811 6.30451 14.3866 6.03155 13.1425M8.61703 13.1998C8.29598 11.9787 8.125 10.6968 8.125 9.375C8.125 8.05316 8.29598 6.77125 8.61703 5.55018M8.61703 13.1998C11.25 13.427 13.737 14.1643 15.9789 15.3124M8.61703 5.55018C11.25 5.323 13.737 4.58569 15.9789 3.43757M15.9789 3.43757C15.8808 3.12162 15.7751 2.80903 15.662 2.5M15.9789 3.43757C16.4247 4.87356 16.7131 6.37885 16.8238 7.93326M15.9789 15.3124C15.8808 15.6284 15.7751 15.941 15.662 16.25M15.9789 15.3124C16.4247 13.8764 16.7131 12.3711 16.8238 10.8167M16.8238 7.93326C17.237 8.2772 17.5 8.79539 17.5 9.375C17.5 9.95461 17.237 10.4728 16.8238 10.8167M16.8238 7.93326C16.8578 8.40942 16.875 8.8902 16.875 9.375C16.875 9.8598 16.8578 10.3406 16.8238 10.8167\" stroke=\"#94A3B8\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>",
    beforeBtn: '',
    afterBtn: '',
    className: '',
    onClick: function () {}
  },
  notification: {
    setLastPostUnixTime: null,
    getLastPostUnixTime: null
  },
  flyout: {
    title: "What's New?",
    innerContent: {
      titleLink: true,
      additionalClasses: []
    },
    excerpt: {
      wordLimit: 500,
      moreSymbol: '&hellip;',
      readMore: {
        label: 'Read More',
        className: ''
      }
    },
    className: '',
    closeOnEsc: true,
    closeOnOverlayClick: true,
    closeBtnIcon: "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6 18L18 6M6 6L18 18\" stroke=\"#94A3B8\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>",
    formatDate: null,
    onOpen: function () {},
    onClose: function () {},
    onReady: function () {}
  }
};
var WhatsNewRSS = /** @class */function () {
  /**
   * Initialize our class.
   *
   * @param {ConstructorArgs} args
   */
  function WhatsNewRSS(args) {
    this.rssFeedURLs = [];
    /**
     * UnixTime stamp of the last seen or read post.
     */
    this.lastPostUnixTime = 0;
    /**
     * UnixTime stamp of the last seen or read post for multi feeds by feed key.
     */
    this.multiLastPostUnixTime = {};
    /**
     * Total number of new notification counts.
     */
    this.notificationsCount = 0;
    /**
     * Notification counts for multi feeds by feed key.
     */
    this.multiNotificationCount = {};
    /**
     * Check if has new feeds.
     */
    this.hasNewFeeds = false;
    /**
     * Check if has new feeds in multi feeds mode.
     */
    this.multiHasNewFeeds = {};
    this.validateArgs(args);
    this.parseDefaults(args);
    this.setElement();
    if (!this.getElement()) {
      console.warn('WNR: Cannot find element with', this.getArgs().selector);
      return;
    }
    this.setID();
    this.setRSSFeedURLs();
    WhatsNewRSSCacheUtils.setInstanceID(this.getID());
    this.RSS_Fetch_Instance = new WhatsNewRSSFetch(this);
    this.RSS_View_Instance = new WhatsNewRSSView(this);
    this.setNotificationsCount();
    this.setTriggers();
  }
  ;
  /**
   * Validate the passed arguments in constructor.
   *
   * @param {ConstructorArgs} args
   */
  WhatsNewRSS.prototype.validateArgs = function (args) {
    ["rssFeedURL", "selector"].forEach(function (requiredArg) {
      if (!args[requiredArg]) {
        throw new Error("".concat(requiredArg, " is a required argument. It cannot be empty or undefined."));
      }
      switch (requiredArg) {
        case 'rssFeedURL':
          var arg = args[requiredArg];
          if (Array.isArray(arg)) {
            arg.forEach(function (rssFeedURL) {
              if (!(rssFeedURL === null || rssFeedURL === void 0 ? void 0 : rssFeedURL.key)) {
                throw new Error("The parameter \"key\" is required for \"".concat(requiredArg, "\" parameter in multi-feed mode."));
              }
              if (rssFeedURL.key.includes(' ')) {
                throw new Error("The parameter \"key\" cannot have spaces for \"".concat(requiredArg, "\" parameter in multi-feed mode. Ref Key: \"").concat(rssFeedURL.key, "\""));
              }
            });
          }
          break;
        default:
          break;
      }
    });
  };
  /**
   * Parse the arguments passed by the user with the defaults.
   *
   * @param {ConstructorArgs} args
   */
  WhatsNewRSS.prototype.parseDefaults = function (args) {
    var _a, _b;
    this.args = __assign(__assign(__assign({}, WhatsNewRSSDefaultArgs), args), {
      viewAll: __assign(__assign({}, WhatsNewRSSDefaultArgs.viewAll), args === null || args === void 0 ? void 0 : args.viewAll),
      triggerButton: __assign(__assign({}, WhatsNewRSSDefaultArgs.triggerButton), args === null || args === void 0 ? void 0 : args.triggerButton),
      flyout: __assign(__assign(__assign({}, WhatsNewRSSDefaultArgs.flyout), args === null || args === void 0 ? void 0 : args.flyout), {
        innerContent: __assign(__assign({}, WhatsNewRSSDefaultArgs.flyout.innerContent), (_a = args === null || args === void 0 ? void 0 : args.flyout) === null || _a === void 0 ? void 0 : _a.innerContent),
        excerpt: __assign(__assign({}, WhatsNewRSSDefaultArgs.flyout.excerpt), (_b = args === null || args === void 0 ? void 0 : args.flyout) === null || _b === void 0 ? void 0 : _b.excerpt)
      })
    });
  };
  /**
   * Returns parsed args.
   *
   * @returns {ConstructorArgs}
   */
  WhatsNewRSS.prototype.getArgs = function () {
    return this.args;
  };
  /**
   * Sets the HTML element queried using passed selector.
   */
  WhatsNewRSS.prototype.setElement = function () {
    this.element = document.querySelector(this.args.selector);
  };
  /**
   * Returns the html element according to the selector.
   *
   * @returns {HTMLElement}
   */
  WhatsNewRSS.prototype.getElement = function () {
    return this.element;
  };
  /**
   * Creates unique ID for current instance, that can be used by the library elements.
   */
  WhatsNewRSS.prototype.setID = function () {
    var data = [this.getArgs().selector];
    var rssFeedURL = this.getArgs().rssFeedURL;
    if (Array.isArray(rssFeedURL)) {
      rssFeedURL.forEach(function (_rssFeedURL) {
        data.push(_rssFeedURL.key);
      });
    } else {
      data.push(rssFeedURL);
    }
    this.ID = btoa(data.join('-')).slice(-12).replace(/=/g, '');
  };
  /**
   * Whether or not multiple feed urls is provided or not.
   *
   * @returns {boolean}
   */
  WhatsNewRSS.prototype.isMultiFeedRSS = function () {
    return 'string' !== typeof this.getArgs().rssFeedURL;
  };
  WhatsNewRSS.prototype.setRSSFeedURLs = function () {
    var _this = this;
    var rssFeedURL = this.getArgs().rssFeedURL;
    if (!this.isMultiFeedRSS()) {
      this.rssFeedURLs.push({
        key: null,
        label: '',
        url: rssFeedURL.toString()
      });
    } else {
      if (Array.isArray(rssFeedURL)) {
        rssFeedURL.forEach(function (_item) {
          _this.rssFeedURLs.push(_item);
        });
      }
    }
  };
  WhatsNewRSS.prototype.getRSSFeedURLs = function () {
    return this.rssFeedURLs;
  };
  /**
   * Returns the current instance unique ID.
   *
   * @returns {string}
   */
  WhatsNewRSS.prototype.getID = function () {
    return this.ID;
  };
  /**
   * Checks and counts new notification for the notification badge.
   */
  WhatsNewRSS.prototype.setNotificationsCount = function () {
    return __awaiter(this, void 0, void 0, function () {
      var _this = this;
      return __generator(this, function (_a) {
        switch (_a.label) {
          case 0:
            return [4 /*yield*/, Promise.all(this.getRSSFeedURLs().map(_a => {
              var key = _a.key;
              return __awaiter(_this, void 0, void 0, function () {
                var lastPostUnixTime;
                return __generator(this, function (_b) {
                  switch (_b.label) {
                    case 0:
                      lastPostUnixTime = 0;
                      if (!('function' === typeof this.getArgs().notification.getLastPostUnixTime)) return [3 /*break*/, 2];
                      return [4 /*yield*/, this.getArgs().notification.getLastPostUnixTime(key, this)];
                    case 1:
                      lastPostUnixTime = _b.sent();
                      return [3 /*break*/, 3];
                    case 2:
                      lastPostUnixTime = WhatsNewRSSCacheUtils.getLastPostUnixTime(key);
                      _b.label = 3;
                    case 3:
                      if (this.isMultiFeedRSS()) {
                        this.multiLastPostUnixTime[key] = +lastPostUnixTime;
                      } else {
                        this.lastPostUnixTime = +lastPostUnixTime;
                      }
                      return [2 /*return*/];
                  }
                });
              });
            }))];
          case 1:
            _a.sent();
            return [4 /*yield*/, this.RSS_Fetch_Instance.fetchData().then(function (res) {
              Object.keys(res).forEach(function (key) {
                var data = res[key];
                if (!data.length) {
                  return;
                }
                _this.multiNotificationCount[key] = 0;
                var currentPostUnixTime = +data[0].date;
                var lastPostUnixTime = _this.isMultiFeedRSS() ? _this.multiLastPostUnixTime[key] : _this.lastPostUnixTime;
                if (currentPostUnixTime > lastPostUnixTime) {
                  data.forEach(function (item) {
                    if (item.date > lastPostUnixTime) {
                      if (_this.isMultiFeedRSS()) {
                        _this.multiNotificationCount[key]++;
                        _this.multiHasNewFeeds[key] = true;
                      }
                      // Keep a record of total notifications even in multi-feed mode.
                      _this.notificationsCount++;
                      _this.hasNewFeeds = true;
                    }
                  });
                  _this.RSS_View_Instance.setNotification(_this.notificationsCount);
                }
              });
            }).catch(console.error)];
          case 2:
            _a.sent();
            return [2 /*return*/];
        }
      });
    });
  };
  /**
   * Returns total number of new notifications.
   *
   * @returns {number}
   */
  WhatsNewRSS.prototype.getNotificationsCount = function () {
    return this.notificationsCount;
  };
  /**
   * Sets the triggers for the library, eg: close, open, fetch.
   */
  WhatsNewRSS.prototype.setTriggers = function () {
    var _this = this;
    var triggerButton = document.getElementById(this.RSS_View_Instance.getTriggerButtonID());
    var flyout = document.getElementById(this.RSS_View_Instance.getFlyoutID());
    var flyoutInner = flyout.querySelector('.whats-new-rss-flyout-inner-content');
    var flyoutCloseBtn = document.getElementById(this.RSS_View_Instance.getFlyoutCloseBtnID());
    var multiFeedNav = document.getElementById(this.RSS_View_Instance.getFlyoutMultiFeedNavID());
    var injectContents = function (key) {
      /**
       * Fetch data on flyout open.
       */
      _this.RSS_Fetch_Instance.fetchData().then(function (res) {
        flyoutInner.innerHTML = '';
        var data = res[key];
        if (!data.length) {
          return;
        }
        var currentPostUnixTime = +data[0].date;
        var lastPostUnixTime = _this.isMultiFeedRSS() ? _this.multiLastPostUnixTime[key] : _this.lastPostUnixTime;
        data.forEach(function (item) {
          var isNewPost = !!lastPostUnixTime ? item.date > lastPostUnixTime : false;
          var contentTitle = _this.getArgs().flyout.innerContent.titleLink ? "<a href=\"".concat(item.postLink, "\" target=\"_blank\">\n\t\t\t\t\t\t\t\t<h2>").concat(item.title, "</h2>\n\t\t\t\t\t\t\t</a>") : "<h2>".concat(item.title, "</h2>");
          var innerContent = "\n\t\t\t\t\t\t\t\t<div class=\"rss-content-header\">\n\t\t\t\t\t\t\t\t\t<p>".concat(_this.RSS_View_Instance.formatDate(new Date(item.date)), "</p>\n\t\t\t\t\t\t\t\t\t").concat(contentTitle, "\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t").concat(_this.RSS_View_Instance.createExcerpt(item.description, item.postLink, _this.getArgs().flyout.excerpt), "\n\t\t\t\t\t\t\t\t").concat(_this.RSS_View_Instance.listChildrenPosts(item.children), "\n\t\t\t\t\t\t\t");
          var additionalClasses = _this.getArgs().flyout.innerContent.additionalClasses;
          if (!!key) {
            additionalClasses.push('`inner-content-item-feed-key-${key}`');
          }
          flyoutInner.innerHTML += _this.RSS_View_Instance.innerContentWrapper(innerContent, isNewPost, additionalClasses.join(' '));
        });
        if (_this.getArgs().viewAll.link) {
          // If we have link provided for the view all button then append a view all button at the end of the contents.
          flyoutInner.innerHTML += _this.RSS_View_Instance.innerContentWrapper("\n\t\t\t\t\t\t\t<a href=\"".concat(_this.getArgs().viewAll.link, "\" class=\"button view-all\">").concat(_this.getArgs().viewAll.label, "</a>\n\t\t\t\t\t\t\t"));
        }
        _this.RSS_View_Instance.setIsLoading(false);
        flyout.classList.add('ready');
        _this.getArgs().flyout.onReady(_this);
        /**
         * Change focus to flyout on flyout ready.
         */
        flyout.focus();
        // Set the last latest post date for notification handling.
        if (!_this.isMultiFeedRSS()) {
          _this.lastPostUnixTime = currentPostUnixTime;
          if (_this.hasNewFeeds) {
            if ('function' === typeof _this.getArgs().notification.setLastPostUnixTime) {
              _this.getArgs().notification.setLastPostUnixTime(currentPostUnixTime, key);
            } else {
              WhatsNewRSSCacheUtils.setLastPostUnixTime(currentPostUnixTime, key);
            }
          }
        }
      }).catch(console.error);
    };
    /**
     * Open flyout on trigger button click.
     * Flyout has three states: `closed | open | ready`
     */
    triggerButton.addEventListener("click", function (e) {
      e.preventDefault();
      _this.getArgs().triggerButton.onClick(_this);
      _this.RSS_View_Instance.setIsLoading(true);
      flyout.classList.remove('closed');
      flyout.classList.add('open');
      document.body.classList.add('whats-new-rss-is-active');
      _this.getArgs().flyout.onOpen(_this);
      if (!_this.isMultiFeedRSS()) {
        injectContents(null);
        return;
      }
      var navBtns = multiFeedNav.querySelectorAll('button');
      navBtns.forEach(function (navBtn) {
        _this.RSS_View_Instance.setMultiFeedTabNotificationCount(navBtn.dataset.feedKey, _this.multiNotificationCount[navBtn.dataset.feedKey]);
        navBtn.addEventListener('click', function (e) {
          e.preventDefault();
          var currentFeedKey = navBtn.dataset.feedKey;
          _this.multiNotificationCount[currentFeedKey] = 0;
          _this.RSS_Fetch_Instance.fetchData().then(function (res) {
            var currentPostUnixTime = res[currentFeedKey][0].date;
            _this.multiLastPostUnixTime[currentFeedKey] = currentPostUnixTime;
            if (true === _this.multiHasNewFeeds[currentFeedKey]) {
              if ('function' === typeof _this.getArgs().notification.setLastPostUnixTime) {
                _this.getArgs().notification.setLastPostUnixTime(currentPostUnixTime, currentFeedKey);
              } else {
                WhatsNewRSSCacheUtils.setLastPostUnixTime(currentPostUnixTime, currentFeedKey);
              }
            }
            _this.multiHasNewFeeds[currentFeedKey] = false;
          }).catch(console.error);
          navBtns.forEach(function (navBtn) {
            navBtn.classList.remove('selected');
            var feedKey = navBtn.dataset.feedKey;
            var innerContentClassName = ".inner-content-item-feed-key-".concat(feedKey);
            document.querySelectorAll(innerContentClassName).forEach(function (item) {
              if (currentFeedKey !== feedKey) {
                item.classList.add('hidden');
              } else {
                item.classList.remove('hidden');
              }
            });
          });
          navBtn.classList.add('selected');
          injectContents(currentFeedKey);
        });
      });
      navBtns[0].click();
    });
    /**
     * Handle events for the closing of the flyout.
     */
    var handleFlyoutClose = function () {
      flyout.classList.add('closed');
      flyout.classList.remove('open');
      flyout.classList.remove('ready');
      document.body.classList.remove('whats-new-rss-is-active');
      if (_this.isMultiFeedRSS()) {
        _this.RSS_View_Instance.setNotification(Object.values(_this.multiNotificationCount).filter(Boolean).length);
      } else {
        _this.hasNewFeeds = false;
        _this.RSS_View_Instance.setNotification(false);
      }
      flyoutInner.innerHTML = '';
      _this.getArgs().flyout.onClose(_this);
      /**
       * Change focus back to trigger button after flyout close.
       */
      triggerButton.focus();
    };
    if (this.getArgs().flyout.closeOnEsc) {
      document.addEventListener('keydown', function (e) {
        if ('Escape' !== e.key) return;
        if (!flyout.classList.contains('open')) return;
        handleFlyoutClose();
      });
    }
    if (this.getArgs().flyout.closeOnOverlayClick) {
      flyout.querySelector('.whats-new-rss-flyout-overlay').addEventListener('click', handleFlyoutClose);
    }
    flyoutCloseBtn.addEventListener('click', handleFlyoutClose);
  };
  return WhatsNewRSS;
}();
var WhatsNewRSSCacheUtils = /** @class */function () {
  function WhatsNewRSSCacheUtils() {}
  WhatsNewRSSCacheUtils.setInstanceID = function (instanceID) {
    if (!this.instanceID) {
      this.instanceID = instanceID;
    }
  };
  WhatsNewRSSCacheUtils.prefixer = function (key, prefixKey) {
    if (prefixKey === void 0) {
      prefixKey = '';
    }
    if (!this.instanceID) {
      throw new Error('Instance ID not set.');
    }
    return !!prefixKey ? "".concat(this.keys[key], "-").concat(this.instanceID, "-").concat(prefixKey) : "".concat(this.keys[key], "-").concat(this.instanceID);
  };
  WhatsNewRSSCacheUtils._setDataExpiry = function (prefixKey) {
    if (prefixKey === void 0) {
      prefixKey = '';
    }
    var expiryInSeconds = 86400; // Defaults to 24 hours.
    var now = new Date();
    var expiry = now.getTime() + expiryInSeconds * 1000;
    sessionStorage.setItem(this.prefixer('SESSION_DATA_EXPIRY', prefixKey), JSON.stringify(expiry));
  };
  WhatsNewRSSCacheUtils._isDataExpired = function (prefixKey) {
    if (prefixKey === void 0) {
      prefixKey = '';
    }
    var key = this.prefixer('SESSION_DATA_EXPIRY', prefixKey);
    var value = window.sessionStorage.getItem(key);
    if (!value) {
      return true;
    }
    var expiry = JSON.parse(value);
    var now = new Date();
    if (now.getTime() > expiry) {
      window.sessionStorage.removeItem(key);
      return true;
    }
    return false;
  };
  WhatsNewRSSCacheUtils.setSessionData = function (data, prefixKey) {
    if (prefixKey === void 0) {
      prefixKey = '';
    }
    this._setDataExpiry(prefixKey);
    return window.sessionStorage.setItem(this.prefixer('SESSION', prefixKey), data);
  };
  WhatsNewRSSCacheUtils.getSessionData = function (prefixKey) {
    if (prefixKey === void 0) {
      prefixKey = '';
    }
    if (!this._isDataExpired(prefixKey)) {
      return window.sessionStorage.getItem(this.prefixer('SESSION', prefixKey));
    }
    return '{}';
  };
  WhatsNewRSSCacheUtils.setLastPostUnixTime = function (unixTime, prefixKey) {
    if (prefixKey === void 0) {
      prefixKey = '';
    }
    return window.localStorage.setItem(this.prefixer('LAST_LATEST_POST', prefixKey), unixTime.toString());
  };
  WhatsNewRSSCacheUtils.getLastPostUnixTime = function (prefixKey) {
    if (prefixKey === void 0) {
      prefixKey = '';
    }
    return +window.localStorage.getItem(this.prefixer('LAST_LATEST_POST', prefixKey));
  };
  WhatsNewRSSCacheUtils.keys = {
    SESSION_DATA_EXPIRY: "whats-new-cache-expiry",
    LAST_LATEST_POST: "whats-new-last-unixtime",
    SESSION: "whats-new-cache"
  };
  return WhatsNewRSSCacheUtils;
}();
/**
 * Class for handling the data fetching.
 * It also handles the session caching of the fetched data internally.
 */
var WhatsNewRSSFetch = /** @class */function () {
  function WhatsNewRSSFetch(RSS) {
    var _this = this;
    this.data = {};
    this.RSS = RSS;
    this.RSS.getRSSFeedURLs().forEach(function (feed) {
      var sessionCache = JSON.parse(WhatsNewRSSCacheUtils.getSessionData(feed.key));
      if (sessionCache && sessionCache.length) {
        _this.data[feed.key] = sessionCache;
      }
    });
  }
  WhatsNewRSSFetch.prototype.fetchData = function () {
    return __awaiter(this, void 0, void 0, function () {
      var fetchPromises;
      var _this = this;
      return __generator(this, function (_a) {
        switch (_a.label) {
          case 0:
            if (Object.keys(this.data).length) {
              return [2 /*return*/, this.data];
            }
            fetchPromises = this.RSS.getRSSFeedURLs().map(feed => {
              return __awaiter(_this, void 0, void 0, function () {
                var res, data, parser, xmlDoc, items;
                var _this = this;
                return __generator(this, function (_a) {
                  switch (_a.label) {
                    case 0:
                      this.data[feed.key] = [];
                      return [4 /*yield*/, fetch(feed.url)];
                    case 1:
                      res = _a.sent();
                      return [4 /*yield*/, res.text()];
                    case 2:
                      data = _a.sent();
                      /**
                       * There was an issue with the xml content parse
                       * And during parse we were getting "<parsererror>" because of the ‘raquo’ entity.
                       */
                      data = data.replace(/&raquo;/g, '&amp;raquo;');
                      parser = new DOMParser();
                      xmlDoc = parser.parseFromString(data, 'text/xml');
                      items = xmlDoc.querySelectorAll('item');
                      items.forEach(function (item) {
                        var _a;
                        var title = item.querySelector('title').textContent;
                        var link = item.querySelector('link').textContent;
                        var contentEncoded = item.querySelector('content\\:encoded, encoded');
                        var content = contentEncoded ? contentEncoded.textContent : '';
                        var rssDate = item.querySelector('pubDate').innerHTML;
                        _this.data[feed.key].push({
                          title: title,
                          date: !!rssDate ? +new Date(rssDate) : null,
                          postLink: link,
                          description: content.replace(/<a\b((?:(?!target=)[^>])*)>/g, '<a$1 target="_blank">').replace(/<p>\s*<\/p>/g, ''),
                          children: JSON.parse(((_a = item.querySelector('children')) === null || _a === void 0 ? void 0 : _a.innerHTML) || '{}')
                        });
                      });
                      WhatsNewRSSCacheUtils.setSessionData(JSON.stringify(this.data[feed.key]), feed.key);
                      return [2 /*return*/];
                  }
                });
              });
            });
            return [4 /*yield*/, Promise.all(fetchPromises)];
          case 1:
            _a.sent();
            return [2 /*return*/, this.data];
        }
      });
    });
  };
  return WhatsNewRSSFetch;
}();
/**
 * The class for handling library trigger button and flyout elements.
 * It also provides some necessary methods that can be used during development.
 */
var WhatsNewRSSView = /** @class */function () {
  function WhatsNewRSSView(RSS) {
    this.RSS = RSS;
    this.createTriggerButton();
    this.createFlyOut();
  }
  WhatsNewRSSView.prototype.getTriggerButtonID = function () {
    return "whats-new-rss-btn-".concat(this.RSS.getID());
  };
  WhatsNewRSSView.prototype.getFlyoutID = function () {
    return "whats-new-rss-flyout-".concat(this.RSS.getID());
  };
  WhatsNewRSSView.prototype.getFlyoutCloseBtnID = function () {
    return "whats-new-rss-flyout-close-".concat(this.RSS.getID());
  };
  WhatsNewRSSView.prototype.getFlyoutMultiFeedNavID = function () {
    return "whats-new-rss-flyout-multi-feed-nav-".concat(this.RSS.getID());
  };
  WhatsNewRSSView.prototype.setIsLoading = function (isLoading) {
    if (isLoading === void 0) {
      isLoading = false;
    }
    var flyoutWrapper = document.getElementById(this.getFlyoutID());
    if (isLoading) {
      flyoutWrapper.classList.add('is-loading');
    } else {
      flyoutWrapper.classList.remove('is-loading');
    }
  };
  WhatsNewRSSView.prototype.setNotification = function (notificationsCount) {
    var notificationBadge = document.querySelector("#".concat(this.getTriggerButtonID(), " .whats-new-rss-notification-badge"));
    if (!!notificationsCount) {
      if (this.RSS.isMultiFeedRSS()) {
        notificationBadge.innerHTML = '';
        notificationBadge.classList.add('is-multi-feed');
      } else {
        notificationBadge.innerHTML = notificationsCount > 9 ? "9+" : notificationsCount.toString();
      }
      notificationBadge.classList.remove('hide');
    } else {
      notificationBadge.classList.add('hide');
    }
  };
  WhatsNewRSSView.prototype.createTriggerButton = function () {
    var button = '';
    var label = this.RSS.getArgs().triggerButton.label;
    if (!!label) {
      button = "\n\t\t\t".concat(this.RSS.getArgs().triggerButton.beforeBtn, "\n\t\t\t<a class=\"whats-new-rss-trigger-button has-label\" id=\"").concat(this.getTriggerButtonID(), "\">\n\t\t\t\t<div class=\"icon-badge\">\n\t\t\t\t\t").concat(this.RSS.getArgs().triggerButton.icon, "\n\t\t\t\t\t<div class=\"whats-new-rss-notification-badge hide\">0</div>\n\t\t\t\t</div>\n\t\t\t\t").concat(label, "\n\t\t\t</a>\n\t\t\t").concat(this.RSS.getArgs().triggerButton.afterBtn, "\n\t\t\t");
    } else {
      button = "\n\t\t\t".concat(this.RSS.getArgs().triggerButton.beforeBtn, "\n\t\t\t<a class=\"whats-new-rss-trigger-button\" id=\"").concat(this.getTriggerButtonID(), "\">\n\t\t\t\t").concat(this.RSS.getArgs().triggerButton.icon, "\n\t\t\t\t<div class=\"whats-new-rss-notification-badge hide\">0</div>\n\t\t\t</a>\n\t\t\t").concat(this.RSS.getArgs().triggerButton.afterBtn, "\n\t\t\t");
    }
    this.RSS.getElement().innerHTML += button;
  };
  WhatsNewRSSView.prototype.createFlyOut = function () {
    var wrapperClasses = ['whats-new-rss-flyout', 'closed'];
    if (this.RSS.getArgs().flyout.className) {
      wrapperClasses.push(this.RSS.getArgs().flyout.className);
    }
    var multiFeedNav = [];
    if (this.RSS.isMultiFeedRSS()) {
      multiFeedNav.push("<nav id=\"".concat(this.getFlyoutMultiFeedNavID(), "\" class=\"whats-new-rss-multi-feed-nav\">"));
      this.RSS.getRSSFeedURLs().forEach(function (feed) {
        multiFeedNav.push("<button type=\"button\" data-feed-key=\"".concat(feed.key, "\">\n\t\t\t\t\t\t").concat(feed.label, "\n\t\t\t\t\t\t<div class=\"new-notification-count\"></div>\n\t\t\t\t\t</button>\n\t\t\t\t\t"));
      });
      multiFeedNav.push('</nav>');
    }
    var flyoutWrapper = document.createElement('div');
    flyoutWrapper.setAttribute('id', this.getFlyoutID());
    flyoutWrapper.setAttribute('class', wrapperClasses.join(' '));
    flyoutWrapper.setAttribute('role', 'dialog');
    flyoutWrapper.innerHTML = "\n\t\t<div class=\"whats-new-rss-flyout-contents\">\n\n\t\t\t<div class=\"whats-new-rss-flyout-inner-header\">\n\n\t\t\t\t<div class=\"whats-new-rss-flyout-inner-header__title-icon-wrapper\">\n\t\t\t\t\t<h3>".concat(this.RSS.getArgs().flyout.title, "</h3>\n\n\t\t\t\t\t<span class=\"whats-new-rss-flyout-inner-header__loading-icon\">\n\t\t\t\t\t").concat(this.RSS.getArgs().loaderIcon, "\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\n\t\t\t\t<button type=\"button\" id=\"").concat(this.getFlyoutCloseBtnID(), "\">").concat(this.RSS.getArgs().flyout.closeBtnIcon, "</button>\n\t\t\t</div>\n\n\t\t\t").concat(multiFeedNav.join(''), "\n\n\t\t\t<div class=\"whats-new-rss-flyout-inner-content\">\n\t\t\t\t<div class=\"skeleton-container\">\n\t\t\t\t\t<div class=\"skeleton-row whats-new-rss-flyout-inner-content-item\"></div>\n\t\t\t\t\t<div class=\"skeleton-row whats-new-rss-flyout-inner-content-item\"></div>\n\t\t\t\t\t<div class=\"skeleton-row whats-new-rss-flyout-inner-content-item\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</div>\n\n\t\t<div class=\"whats-new-rss-flyout-overlay\"></div>\n\t\t");
    document.body.appendChild(flyoutWrapper);
  };
  WhatsNewRSSView.prototype.setMultiFeedTabNotificationCount = function (key, notificationCount) {
    if (notificationCount === void 0) {
      notificationCount = 0;
    }
    var tabBtn = document.querySelector("#".concat(this.getFlyoutMultiFeedNavID(), " button[data-feed-key=\"").concat(key, "\"]"));
    if (!tabBtn) {
      return;
    }
    var el = tabBtn.querySelector('.new-notification-count');
    if (notificationCount) {
      var _count = notificationCount > 9 ? '9+' : notificationCount;
      el.innerHTML = _count.toString();
    } else {
      el.innerHTML = '';
    }
  };
  WhatsNewRSSView.prototype.innerContentWrapper = function (content, isNewPost, additionalClasses) {
    if (isNewPost === void 0) {
      isNewPost = false;
    }
    if (additionalClasses === void 0) {
      additionalClasses = '';
    }
    var classes = ['whats-new-rss-flyout-inner-content-item'];
    if (isNewPost) {
      classes.push('rss-new-post');
    }
    if (!!additionalClasses) {
      classes.push(additionalClasses);
    }
    return "\n\t\t<div class=\"".concat(classes.join(' '), "\">\n\t\t\t").concat(isNewPost ? '<small class="new-post-badge">New ✨</small>' : '', "\n\t\t\t").concat(content, "\n\t\t</div>\n\t\t");
  };
  WhatsNewRSSView.prototype.createExcerpt = function (content, readMoreLink, options) {
    var wordLimit = options.wordLimit,
      moreSymbol = options.moreSymbol,
      readMore = options.readMore;
    if (!wordLimit) {
      return content;
    }
    var plainText = content.replace(/<[^>]*>/g, '');
    var words = plainText.split(/\s+/);
    var rawExcerpt = words.slice(0, wordLimit).join(' ');
    if (moreSymbol) {
      rawExcerpt += moreSymbol;
    }
    if (wordLimit > words.length) {
      return content;
    }
    if (!!readMoreLink && !!(readMore === null || readMore === void 0 ? void 0 : readMore.label)) {
      return "<p>".concat(rawExcerpt, " <a href=\"").concat(readMoreLink, "\" target=\"_blank\" class=\"").concat(readMore.className, "\">").concat(readMore.label, "</a></p>");
    }
    return "<p>".concat(rawExcerpt, "</p>");
  };
  WhatsNewRSSView.prototype.listChildrenPosts = function (children) {
    var _this = this;
    var _children = Object.values(children);
    if (!_children.length) return '';
    var details = document.createElement('details');
    var summary = document.createElement('summary');
    var itemsWrapper = document.createElement('div');
    _children.forEach(function (child) {
      var postContentDoc = new DOMParser().parseFromString(child.post_content, 'text/html');
      var itemDiv = document.createElement('div');
      itemDiv.classList.add('sub-version-item');
      itemDiv.innerHTML = "\n\t\t\t\t<div class=\"sub-version-header\">\n\t\t\t\t\t<h4 class=\"sub-version-title\">".concat(child.post_title, "</h4>\n\t\t\t\t\t<span class=\"sub-version-date\">").concat(_this.formatDate(new Date(child.post_date)), "</span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"sub-version-content\">").concat(postContentDoc.documentElement.textContent, "</div>\n\t\t\t");
      itemsWrapper.appendChild(itemDiv);
    });
    summary.innerHTML = '<p class="text-see-more">See More</p><p class="text-see-less">See Less</p>';
    details.appendChild(summary);
    details.appendChild(itemsWrapper);
    itemsWrapper.classList.add('sub-version-items-wrapper');
    details.classList.add('whats-new-rss-sub-version-details');
    return details.outerHTML;
  };
  WhatsNewRSSView.prototype.formatDate = function (date) {
    if ('function' === typeof this.RSS.getArgs().flyout.formatDate) {
      return this.RSS.getArgs().flyout.formatDate(date);
    }
    var currentDate = new Date();
    var timestamp = date.getTime();
    var currentTimestamp = currentDate.getTime();
    var difference = currentTimestamp - timestamp;
    // Define time intervals in milliseconds
    var minute = 60 * 1000;
    var hour = minute * 60;
    var day = hour * 24;
    var week = day * 7;
    var month = day * 30; // Rough estimate, assuming 30 days in a month
    if (difference < minute) {
      return 'Just now';
    } else if (difference < hour) {
      var minutes = Math.floor(difference / minute);
      return "".concat(minutes, " minute").concat(minutes > 1 ? 's' : '', " ago");
    } else if (difference < day) {
      var hours = Math.floor(difference / hour);
      return "".concat(hours, " hour").concat(hours > 1 ? 's' : '', " ago");
    } else if (difference < week) {
      var days = Math.floor(difference / day);
      return "".concat(days, " day").concat(days > 1 ? 's' : '', " ago");
    } else if (difference < month) {
      var weeks = Math.floor(difference / week);
      return "".concat(weeks, " week").concat(weeks > 1 ? 's' : '', " ago");
    } else {
      // Handle months and years accordingly
      // This is a rough estimate and may not be accurate in all cases
      var months = Math.floor(difference / month);
      return "".concat(months, " month").concat(months > 1 ? 's' : '', " ago");
    }
  };
  return WhatsNewRSSView;
}();
async function getCSS() {
  return `.whats-new-rss-is-active{overflow:hidden}.whats-new-rss-trigger-button{display:flex;align-items:center;position:relative;width:auto;padding:5px;cursor:pointer}.whats-new-rss-trigger-button.has-label{align-items:end;gap:10px}.whats-new-rss-trigger-button.has-label .icon-badge{position:relative;line-height:1}.whats-new-rss-trigger-button.has-label .icon-badge .whats-new-rss-notification-badge{top:-12px;right:-10px}.whats-new-rss-trigger-button .whats-new-rss-notification-badge{position:absolute;top:-8px;right:-5px;width:20px;font-size:10px;line-height:20px;text-align:center;border-radius:10px;color:#fff;background:red;transition:transform .2s ease-in-out}.whats-new-rss-trigger-button .whats-new-rss-notification-badge.is-multi-feed{top:-2px;right:-2px;font-size:0;width:10px;height:10px}.whats-new-rss-trigger-button .whats-new-rss-notification-badge.hide{display:none}.whats-new-rss-trigger-button:hover .whats-new-rss-notification-badge{transform:scale(1.2)}.whats-new-rss-flyout{position:fixed;top:0;right:0;bottom:0;width:100%;z-index:99999;transition:visibility .3s ease-in-out;font-family:Arial,Helvetica,sans-serif}.whats-new-rss-flyout .lightbox-trigger,.whats-new-rss-flyout.hidden{display:none}.whats-new-rss-flyout.is-loading .whats-new-rss-flyout-inner-header__loading-icon{display:block;margin:auto}.whats-new-rss-flyout.is-loading .whats-new-rss-flyout-inner-header__loading-icon svg{display:block;background:0 0;width:25px;height:25px}.whats-new-rss-flyout .whats-new-rss-flyout-contents{position:fixed;display:flex;right:0;width:30%;height:100%;flex-direction:column;background-color:#fff;transition:transform .3s ease-in-out;z-index:9999}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px 16px 24px;border-bottom:1px solid #ccc}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-header button{border:none;background:0 0;font-size:30px;cursor:pointer;color:#94a3b8;padding:0;margin:0;box-shadow:none}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-header .whats-new-rss-flyout-inner-header__title-icon-wrapper{display:flex;gap:10px}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-header .whats-new-rss-flyout-inner-header__title-icon-wrapper h3{margin:0;padding:0;color:#0f172a;font-weight:600;font-size:16px;line-height:24px}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-multi-feed-nav{display:flex;padding:0 30px;border-bottom:1px solid #ccc;gap:2em;overflow:auto;white-space:nowrap}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-multi-feed-nav button{position:relative;background:0 0;color:inherit;padding:15px 0;border-bottom:2px solid transparent}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-multi-feed-nav button:focus,.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-multi-feed-nav button:hover{border-color:inherit}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-multi-feed-nav button.selected{border-color:#5d5d5d}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-multi-feed-nav button .new-notification-count{position:absolute;top:0;right:-10px;width:20px;font-size:10px;line-height:20px;text-align:center;border-radius:10px;color:#fff;background:red}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content{flex:1;overflow-y:auto}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .skeleton-container{margin:30px}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item{border-bottom:1px solid #d8dfe9;padding:30px 24px;color:#475569;font-weight:400;font-size:14px;line-height:20px;display:flex;flex-direction:column;gap:13px}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item>*{margin:0}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item.skeleton-row{height:25vh;margin:40px 0;background:linear-gradient(90deg,#eee 25%,#ddd 50%,#eee 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item.rss-new-post{position:relative}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item.rss-new-post .new-post-badge{background:#ff3d3d;border-radius:5px;position:absolute;right:45px;padding:0 5px;color:#fff}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item .rss-content-header{display:flex;flex-direction:column;gap:15px;padding:0 0 8px 0}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item .rss-content-header p{color:#94a3b8;margin:0;padding:0;font-weight:600;font-size:14px;line-height:16px}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item .rss-content-header h2{margin:0;color:#0f172a;font-weight:700;line-height:28px;font-size:20px}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item h2{font-weight:700;font-size:18px;line-height:24px}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item h3{font-weight:700;font-size:16px;line-height:22px;margin-top:12px}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item h4{font-weight:700;font-size:15px;line-height:20px;margin-top:12px}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item h5{font-weight:700;font-size:14px;line-height:18px}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item h6{font-weight:700;font-size:13px;line-height:16px}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item p{padding:0;font-size:14px}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item p:last-child{margin-bottom:0;padding-bottom:0}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item a{color:#1170ff;text-decoration:none}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item figure{margin:10px 0}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item figure.wp-block-embed.is-type-video{position:relative;width:100%;height:0;padding-bottom:56.25%}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item figure iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item img{box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item video{vertical-align:middle;width:100%}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item strong{font-weight:600}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item ol,.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item ul{padding-inline-start:20px}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item ol li,.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item ul li{margin-bottom:5px}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item ul{list-style-type:disc}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-flyout-inner-content .whats-new-rss-flyout-inner-content-item ol{list-style-type:decimal}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-sub-version-details{line-height:20px;font-size:.9em;margin:10px 0;background:#f9fafb}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-sub-version-details summary{display:flex;justify-content:space-between;cursor:pointer;padding:20px 15px;height:1em;line-height:20px;font-weight:800}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-sub-version-details summary::after{content:'⌃';font-size:20px;transform:rotateX(180deg);font-weight:800}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-sub-version-details summary .text-see-more{display:block}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-sub-version-details summary .text-see-less{display:none}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-sub-version-details[open] summary{border-bottom:1px solid #e2e8f0}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-sub-version-details[open] summary::after{transform:rotateX(45deg)}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-sub-version-details[open] summary .text-see-more{display:none}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-sub-version-details[open] summary .text-see-less{display:block}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-sub-version-details .sub-version-item{position:relative;padding:1em;border-bottom:1px solid #e2e8f0}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-sub-version-details .sub-version-item .sub-version-header{display:flex;justify-content:space-between}.whats-new-rss-flyout .whats-new-rss-flyout-contents .whats-new-rss-sub-version-details .sub-version-item .sub-version-content{margin-top:1em}.whats-new-rss-flyout .whats-new-rss-flyout-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.5);transition:all .3s ease-in-out}.whats-new-rss-flyout.closed{visibility:hidden}.whats-new-rss-flyout.closed .whats-new-rss-flyout-overlay{opacity:0;visibility:hidden}.whats-new-rss-flyout.closed .whats-new-rss-flyout-contents{transform:translateX(100%)}.whats-new-rss-flyout .whats-new-rss-flyout-inner-header__loading-icon{display:none}@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}@media screen and (max-width:1024px){.whats-new-rss-flyout .whats-new-rss-flyout-contents{width:40%}}@media screen and (max-width:768px){.whats-new-rss-flyout .whats-new-rss-flyout-contents{width:85%}}`;
}
async function addStyleIfNotExists() {
  const styleId = 'whats-new-rss-styles';
  if (!document.getElementById(styleId)) {
    const style = document.createElement('style');
    style.id = styleId;
    style.innerHTML = await getCSS();
    document.head.appendChild(style);
  }
}
function createWhatsNewRSSInstance(args) {
  return new WhatsNewRSS(args);
}
function useWhatsNewRSS({
  selector,
  ...rest
}) {
  const instanceRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
    addStyleIfNotExists();
    if (!instanceRef.current) {
      instanceRef.current = createWhatsNewRSSInstance({
        selector,
        ...rest
      });
    }

    // Cleanup function
    return () => {
      if (instanceRef.current && typeof instanceRef.current.destroy === 'function') {
        instanceRef.current.destroy();
      }
    };
  }, [selector, ...Object.values(rest)]); // Adjust dependencies as needed

  return instanceRef.current;
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useWhatsNewRSS);

/***/ }),

/***/ "./assets/src/store/globalDataReducer.js":
/*!***********************************************!*\
  !*** ./assets/src/store/globalDataReducer.js ***!
  \***********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
const globalDataReducer = (state = {}, action) => {
  let actionType = wp.hooks.applyFilters('astra_dashboard/data_reducer_action', action.type);
  switch (actionType) {
    case 'UPDATE_INITIAL_STATE':
      return {
        ...action.payload
      };
    case 'UPDATE_BLOCK_STATUSES':
      return {
        ...state,
        blocksStatuses: action.payload
      };
    case 'UPDATE_INITIAL_STATE_FLAG':
      return {
        ...state,
        initialStateSetFlag: action.payload
      };
    case 'UPDATE_SETTINGS_ACTIVE_NAVIGATION_TAB':
      return {
        ...state,
        activeSettingsNavigationTab: action.payload
      };
    case 'UPDATE_ENABLE_LOAD_FONTS_LOCALLY':
      return {
        ...state,
        enableLoadFontsLocally: action.payload
      };
    case 'UPDATE_ENABLE_PRELOAD_LOCAL_FONTS':
      return {
        ...state,
        enablePreloadLocalFonts: action.payload
      };
    case 'UPDATE_ENABLE_WHITE_LABEL':
      return {
        ...state,
        enableWhiteLabel: action.payload
      };
    case 'UPDATE_PLUGIN_DESCRIPTION':
      return {
        ...state,
        pluginDescription: action.payload
      };
    case 'UPDATE_PLUGIN_NAME':
      return {
        ...state,
        pluginName: action.payload
      };
    case 'UPDATE_THEME_SCREENSHOT_URL':
      return {
        ...state,
        themeScreenshotURL: action.payload
      };
    case 'UPDATE_THEME_DESCRIPTION':
      return {
        ...state,
        themeDescription: action.payload
      };
    case 'UPDATE_THEME_NAME':
      return {
        ...state,
        themeName: action.payload
      };
    case 'UPDATE_AGENCY_LICENSE_LINK':
      return {
        ...state,
        agencyLicenseLink: action.payload
      };
    case 'UPDATE_AGENCY_AUTHOR_URL':
      return {
        ...state,
        agencyAuthorURL: action.payload
      };
    case 'UPDATE_AGENCY_AUTHOR_NAME':
      return {
        ...state,
        agencyAuthorName: action.payload
      };
    case 'UPDATE_FILE_GENERATION':
      return {
        ...state,
        enableFileGeneration: action.payload
      };
    case 'UPDATE_BETA':
      return {
        ...state,
        enableBeta: action.payload
      };
    case 'USE_OLD_HEADER_FOOTER':
      return {
        ...state,
        useOldHeaderFooter: action.payload
      };
    case 'UPGRADE_NOTICES':
      return {
        ...state,
        useUpgradeNotices: action.payload
      };
    case 'UPDATE_SETTINGS_SAVED_NOTIFICATION':
      return {
        ...state,
        settingsSavedNotification: action.payload
      };
    default:
      return state;
  }
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (globalDataReducer);

/***/ }),

/***/ "./assets/src/store/globalDataStore.js":
/*!*********************************************!*\
  !*** ./assets/src/store/globalDataStore.js ***!
  \*********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! redux */ "./node_modules/redux/es/redux.js");
/* harmony import */ var _globalDataReducer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./globalDataReducer */ "./assets/src/store/globalDataReducer.js");


const initialState = wp.hooks.applyFilters('astra_dashboard/datastore', {
  initialStateSetFlag: false,
  enableLoadFontsLocally: false,
  enablePreloadLocalFonts: false,
  useOldHeaderFooter: false,
  useUpgradeNotices: false,
  enableWhiteLabel: false,
  enableBeta: 'disable',
  settingsSavedNotification: '',
  blocksStatuses: [],
  enableFileGeneration: 'disable',
  activeSettingsNavigationTab: '',
  pluginDescription: '',
  pluginName: '',
  themeScreenshotURL: '',
  themeDescription: '',
  themeName: '',
  agencyLicenseLink: '',
  agencyAuthorURL: '',
  agencyAuthorName: ''
});
const globalDataStore = (0,redux__WEBPACK_IMPORTED_MODULE_1__.createStore)(_globalDataReducer__WEBPACK_IMPORTED_MODULE_0__["default"], initialState, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (globalDataStore);

/***/ }),

/***/ "./assets/src/utils/extensions.js":
/*!****************************************!*\
  !*** ./assets/src/utils/extensions.js ***!
  \****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   activatePlugin: () => (/* binding */ activatePlugin),
/* harmony export */   getAction: () => (/* binding */ getAction),
/* harmony export */   getSpinner: () => (/* reexport safe */ _astra_utils_helpers__WEBPACK_IMPORTED_MODULE_2__.getSpinner),
/* harmony export */   triggerAction: () => (/* binding */ triggerAction)
/* harmony export */ });
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/api-fetch */ "@wordpress/api-fetch");
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dompurify */ "./node_modules/dompurify/dist/purify.es.mjs");
/* harmony import */ var _astra_utils_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @astra-utils/helpers */ "./assets/utils/helpers.js");




/**
 * Returns the appropriate action string based on the given status.
 *
 * @param {string} status The status of the plugin. Possible values are: 'activated', 'configure', or 'installed'.
 *
 * @return {string} Returns the corresponding action string based on the status.
 */
const getAction = status => {
  switch (status) {
    case 'activated':
      return '';
    case 'configure':
      return 'astra_recommended_plugin_configure';
    case 'installed':
      return 'astra_recommended_plugin_activate';
  }
  return 'astra_recommended_plugin_install';
};

/**
 * Function to trigger plugin action like installation, activation or configuration.
 *
 * @param {HTMLButtonElement} e Button click event.
 */
const triggerAction = e => {
  e.preventDefault();
  const astraAdmin = window.astra_admin;
  const action = e.target.dataset.action;
  const isButton = e.target.dataset?.type === 'button';
  switch (action) {
    case 'astra_recommended_plugin_configure':
      e.target.innerHTML = dompurify__WEBPACK_IMPORTED_MODULE_1__["default"].sanitize((isButton ? (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_2__.getSpinner)() : '') + astraAdmin.plugin_configuring_text);
      window.location = e.target.dataset.redirection;
      break;
    case 'astra_recommended_plugin_activate':
      activatePlugin(e);
      break;
    case 'astra_recommended_plugin_install':
      const formData = new window.FormData();
      formData.append('action', 'astra_recommended_plugin_install');
      formData.append('_ajax_nonce', astraAdmin.plugin_installer_nonce);
      formData.append('slug', e.target.dataset.slug);
      e.target.innerHTML = dompurify__WEBPACK_IMPORTED_MODULE_1__["default"].sanitize((isButton ? (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_2__.getSpinner)() : '') + astraAdmin.plugin_installing_text);
      _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_0___default()({
        url: astraAdmin.ajax_url,
        method: 'POST',
        body: formData
      }).then(data => {
        if (data.success) {
          e.target.innerText = astraAdmin.plugin_installed_text;
          activatePlugin(e);
        }
      }).catch(error => {
        // eslint-disable-next-line no-console
        console.error('Error during plugin installation:', error);
      });
      break;
    default:
      // Do nothing.
      break;
  }
};

/**
 * Function to activate plugin.
 *
 * @param {HTMLButtonElement} e Button click event.
 */
const activatePlugin = e => {
  const astraAdmin = window.astra_admin;
  const formData = new window.FormData();
  formData.append('action', 'astra_recommended_plugin_activate');
  formData.append('security', astraAdmin.plugin_manager_nonce);
  formData.append('init', e.target.dataset.init);
  const isButton = e.target.dataset?.type === 'button';
  e.target.innerHTML = dompurify__WEBPACK_IMPORTED_MODULE_1__["default"].sanitize((isButton ? (0,_astra_utils_helpers__WEBPACK_IMPORTED_MODULE_2__.getSpinner)() : '') + astraAdmin.plugin_activating_text);
  _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_0___default()({
    url: astraAdmin.ajax_url,
    method: 'POST',
    body: formData
  }).then(data => {
    if (data.success) {
      e.target.className = 'text-[#4AB866] pointer-events-none capitalize text-sm leading-[0.875rem] font-medium rounded-md' + (isButton ? ' mt-3 py-[0.5625rem]' : '');
      e.target.innerText = astraAdmin.plugin_activated_text;
      window.location = e.target.dataset.redirection;
    }
  }).catch(error => {
    // eslint-disable-next-line no-console
    console.error('Error during plugin activation:', error);
  });
};


/***/ }),

/***/ "./assets/src/utils/setInitialState.js":
/*!*********************************************!*\
  !*** ./assets/src/utils/setInitialState.js ***!
  \*********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/api-fetch */ "@wordpress/api-fetch");
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_0__);

const setInitialState = store => {
  _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_0___default()({
    path: '/astra/v1/admin/settings/'
  }).then(data => {
    const initialState = {
      settingsSavedNotification: '',
      initialStateSetFlag: true,
      activeSettingsNavigationTab: 'global-settings',
      enableLoadFontsLocally: data.self_hosted_gfonts,
      enablePreloadLocalFonts: data.preload_local_fonts,
      useOldHeaderFooter: data.use_old_header_footer,
      useUpgradeNotices: data.use_upgrade_notices,
      blocksStatuses: data.pro_addons
    };
    store.dispatch({
      type: 'UPDATE_INITIAL_STATE',
      payload: initialState
    });
  }).catch(error => {
    console.error('Error fetching settings:', error);
  });
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (setInitialState);

/***/ }),

/***/ "./assets/utils/helpers.js":
/*!*********************************!*\
  !*** ./assets/utils/helpers.js ***!
  \*********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   classNames: () => (/* binding */ classNames),
/* harmony export */   debounce: () => (/* binding */ debounce),
/* harmony export */   getAstraProTitle: () => (/* binding */ getAstraProTitle),
/* harmony export */   getSpinner: () => (/* binding */ getSpinner),
/* harmony export */   saveSetting: () => (/* binding */ saveSetting)
/* harmony export */ });
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/api-fetch */ "@wordpress/api-fetch");
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_1__);



/**
 * Returns the class names.
 *
 * @param {...string} classes The class names.
 *
 * @return {string} Returns the class names.
 */
const classNames = (...classes) => classes.filter(Boolean).join(" ");

/**
 * Creates a debounced function that delays its execution until after the specified delay.
 *
 * The debounce() function can also be used from lodash.debounce package in future.
 *
 * @param {Function} func - The function to debounce.
 * @param {number} delay - The delay in milliseconds before the function is executed.
 *
 * @returns {Function} A debounced function.
 */
const debounce = (func, delay) => {
  let timer;
  function debounced(...args) {
    clearTimeout(timer);
    timer = setTimeout(() => func(...args), delay);
  }
  ;

  // Attach a `cancel` method to clear the timeout.
  debounced.cancel = () => {
    clearTimeout(timer);
  };
  return debounced;
};

/**
 * Returns the Astra Pro title.
 *
 * @return {string} Returns the Astra Pro title.
 */
const getAstraProTitle = () => {
  return astra_admin.pro_installed_status ? (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)("Activate Now", "astra") : (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)("Upgrade Now", "astra");
};

/**
 * Returns the spinner SVG text.
 *
 * @return {string} Returns the spinner SVG text..
 */
const getSpinner = () => {
  return `
		<svg class="animate-spin installer-spinner" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
			<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" strokeWidth="4"></circle>
			<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
		</svg>
	`;
};

/**
 * A function to save astra admin settings.
 *
 * @function
 *
 * @param {string}   key                - Settings key.
 * @param {string}   value              - The data to send.
 * @param {Function} dispatch           - The dispatch function.
 * @param {Object}   abortControllerRef - The ref object with to hold abort controller.
 *
 * @return {Promise} Returns a promise representing the processed request.
 */
const saveSetting = debounce((key, value, dispatch, abortControllerRef = {
  current: {}
}) => {
  // Abort any previous request.
  if (abortControllerRef.current[key]) {
    abortControllerRef.current[key]?.abort();
  }

  // Create a new AbortController.
  const abortController = new AbortController();
  abortControllerRef.current[key] = abortController;
  const formData = new window.FormData();
  formData.append("action", "astra_update_admin_setting");
  formData.append("security", astra_admin.update_nonce);
  formData.append("key", key);
  formData.append("value", value);
  return _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_1___default()({
    url: astra_admin.ajax_url,
    method: "POST",
    body: formData,
    signal: abortControllerRef.current[key]?.signal // Pass the signal to the fetch request.
  }).then(() => {
    dispatch({
      type: "UPDATE_SETTINGS_SAVED_NOTIFICATION",
      payload: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)("Successfully saved!", "astra")
    });
  }).catch(error => {
    // Ignore if it is intentionally aborted.
    if (error.name === "AbortError") {
      return;
    }
    console.error("Error during API request:", error);
    dispatch({
      type: "UPDATE_SETTINGS_SAVED_NOTIFICATION",
      payload: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)("An error occurred while saving.", "astra")
    });
  });
}, 300);


/***/ }),

/***/ "./node_modules/base64-js/index.js":
/*!*****************************************!*\
  !*** ./node_modules/base64-js/index.js ***!
  \*****************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


exports.byteLength = byteLength
exports.toByteArray = toByteArray
exports.fromByteArray = fromByteArray

var lookup = []
var revLookup = []
var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array

var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
for (var i = 0, len = code.length; i < len; ++i) {
  lookup[i] = code[i]
  revLookup[code.charCodeAt(i)] = i
}

// Support decoding URL-safe base64 strings, as Node.js does.
// See: https://en.wikipedia.org/wiki/Base64#URL_applications
revLookup['-'.charCodeAt(0)] = 62
revLookup['_'.charCodeAt(0)] = 63

function getLens (b64) {
  var len = b64.length

  if (len % 4 > 0) {
    throw new Error('Invalid string. Length must be a multiple of 4')
  }

  // Trim off extra bytes after placeholder bytes are found
  // See: https://github.com/beatgammit/base64-js/issues/42
  var validLen = b64.indexOf('=')
  if (validLen === -1) validLen = len

  var placeHoldersLen = validLen === len
    ? 0
    : 4 - (validLen % 4)

  return [validLen, placeHoldersLen]
}

// base64 is 4/3 + up to two characters of the original data
function byteLength (b64) {
  var lens = getLens(b64)
  var validLen = lens[0]
  var placeHoldersLen = lens[1]
  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
}

function _byteLength (b64, validLen, placeHoldersLen) {
  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
}

function toByteArray (b64) {
  var tmp
  var lens = getLens(b64)
  var validLen = lens[0]
  var placeHoldersLen = lens[1]

  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))

  var curByte = 0

  // if there are placeholders, only get up to the last complete 4 chars
  var len = placeHoldersLen > 0
    ? validLen - 4
    : validLen

  var i
  for (i = 0; i < len; i += 4) {
    tmp =
      (revLookup[b64.charCodeAt(i)] << 18) |
      (revLookup[b64.charCodeAt(i + 1)] << 12) |
      (revLookup[b64.charCodeAt(i + 2)] << 6) |
      revLookup[b64.charCodeAt(i + 3)]
    arr[curByte++] = (tmp >> 16) & 0xFF
    arr[curByte++] = (tmp >> 8) & 0xFF
    arr[curByte++] = tmp & 0xFF
  }

  if (placeHoldersLen === 2) {
    tmp =
      (revLookup[b64.charCodeAt(i)] << 2) |
      (revLookup[b64.charCodeAt(i + 1)] >> 4)
    arr[curByte++] = tmp & 0xFF
  }

  if (placeHoldersLen === 1) {
    tmp =
      (revLookup[b64.charCodeAt(i)] << 10) |
      (revLookup[b64.charCodeAt(i + 1)] << 4) |
      (revLookup[b64.charCodeAt(i + 2)] >> 2)
    arr[curByte++] = (tmp >> 8) & 0xFF
    arr[curByte++] = tmp & 0xFF
  }

  return arr
}

function tripletToBase64 (num) {
  return lookup[num >> 18 & 0x3F] +
    lookup[num >> 12 & 0x3F] +
    lookup[num >> 6 & 0x3F] +
    lookup[num & 0x3F]
}

function encodeChunk (uint8, start, end) {
  var tmp
  var output = []
  for (var i = start; i < end; i += 3) {
    tmp =
      ((uint8[i] << 16) & 0xFF0000) +
      ((uint8[i + 1] << 8) & 0xFF00) +
      (uint8[i + 2] & 0xFF)
    output.push(tripletToBase64(tmp))
  }
  return output.join('')
}

function fromByteArray (uint8) {
  var tmp
  var len = uint8.length
  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
  var parts = []
  var maxChunkLength = 16383 // must be multiple of 3

  // go through the array every three bytes, we'll deal with trailing stuff later
  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
  }

  // pad the end with zeros, but make sure to not forget the extra bytes
  if (extraBytes === 1) {
    tmp = uint8[len - 1]
    parts.push(
      lookup[tmp >> 2] +
      lookup[(tmp << 4) & 0x3F] +
      '=='
    )
  } else if (extraBytes === 2) {
    tmp = (uint8[len - 2] << 8) + uint8[len - 1]
    parts.push(
      lookup[tmp >> 10] +
      lookup[(tmp >> 4) & 0x3F] +
      lookup[(tmp << 2) & 0x3F] +
      '='
    )
  }

  return parts.join('')
}


/***/ }),

/***/ "./node_modules/buffer/index.js":
/*!**************************************!*\
  !*** ./node_modules/buffer/index.js ***!
  \**************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/*!
 * The buffer module from node.js, for the browser.
 *
 * @author   Feross Aboukhadijeh <https://feross.org>
 * @license  MIT
 */
/* eslint-disable no-proto */



var base64 = __webpack_require__(/*! base64-js */ "./node_modules/base64-js/index.js")
var ieee754 = __webpack_require__(/*! ieee754 */ "./node_modules/ieee754/index.js")
var customInspectSymbol =
  (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation
    ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation
    : null

exports.Buffer = Buffer
exports.SlowBuffer = SlowBuffer
exports.INSPECT_MAX_BYTES = 50

var K_MAX_LENGTH = 0x7fffffff
exports.kMaxLength = K_MAX_LENGTH

/**
 * If `Buffer.TYPED_ARRAY_SUPPORT`:
 *   === true    Use Uint8Array implementation (fastest)
 *   === false   Print warning and recommend using `buffer` v4.x which has an Object
 *               implementation (most compatible, even IE6)
 *
 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
 * Opera 11.6+, iOS 4.2+.
 *
 * We report that the browser does not support typed arrays if the are not subclassable
 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
 * for __proto__ and has a buggy typed array implementation.
 */
Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()

if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
    typeof console.error === 'function') {
  console.error(
    'This browser lacks typed array (Uint8Array) support which is required by ' +
    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
  )
}

function typedArraySupport () {
  // Can typed array instances can be augmented?
  try {
    var arr = new Uint8Array(1)
    var proto = { foo: function () { return 42 } }
    Object.setPrototypeOf(proto, Uint8Array.prototype)
    Object.setPrototypeOf(arr, proto)
    return arr.foo() === 42
  } catch (e) {
    return false
  }
}

Object.defineProperty(Buffer.prototype, 'parent', {
  enumerable: true,
  get: function () {
    if (!Buffer.isBuffer(this)) return undefined
    return this.buffer
  }
})

Object.defineProperty(Buffer.prototype, 'offset', {
  enumerable: true,
  get: function () {
    if (!Buffer.isBuffer(this)) return undefined
    return this.byteOffset
  }
})

function createBuffer (length) {
  if (length > K_MAX_LENGTH) {
    throw new RangeError('The value "' + length + '" is invalid for option "size"')
  }
  // Return an augmented `Uint8Array` instance
  var buf = new Uint8Array(length)
  Object.setPrototypeOf(buf, Buffer.prototype)
  return buf
}

/**
 * The Buffer constructor returns instances of `Uint8Array` that have their
 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
 * returns a single octet.
 *
 * The `Uint8Array` prototype remains unmodified.
 */

function Buffer (arg, encodingOrOffset, length) {
  // Common case.
  if (typeof arg === 'number') {
    if (typeof encodingOrOffset === 'string') {
      throw new TypeError(
        'The "string" argument must be of type string. Received type number'
      )
    }
    return allocUnsafe(arg)
  }
  return from(arg, encodingOrOffset, length)
}

Buffer.poolSize = 8192 // not used by this implementation

function from (value, encodingOrOffset, length) {
  if (typeof value === 'string') {
    return fromString(value, encodingOrOffset)
  }

  if (ArrayBuffer.isView(value)) {
    return fromArrayView(value)
  }

  if (value == null) {
    throw new TypeError(
      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +
      'or Array-like Object. Received type ' + (typeof value)
    )
  }

  if (isInstance(value, ArrayBuffer) ||
      (value && isInstance(value.buffer, ArrayBuffer))) {
    return fromArrayBuffer(value, encodingOrOffset, length)
  }

  if (typeof SharedArrayBuffer !== 'undefined' &&
      (isInstance(value, SharedArrayBuffer) ||
      (value && isInstance(value.buffer, SharedArrayBuffer)))) {
    return fromArrayBuffer(value, encodingOrOffset, length)
  }

  if (typeof value === 'number') {
    throw new TypeError(
      'The "value" argument must not be of type number. Received type number'
    )
  }

  var valueOf = value.valueOf && value.valueOf()
  if (valueOf != null && valueOf !== value) {
    return Buffer.from(valueOf, encodingOrOffset, length)
  }

  var b = fromObject(value)
  if (b) return b

  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&
      typeof value[Symbol.toPrimitive] === 'function') {
    return Buffer.from(
      value[Symbol.toPrimitive]('string'), encodingOrOffset, length
    )
  }

  throw new TypeError(
    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +
    'or Array-like Object. Received type ' + (typeof value)
  )
}

/**
 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
 * if value is a number.
 * Buffer.from(str[, encoding])
 * Buffer.from(array)
 * Buffer.from(buffer)
 * Buffer.from(arrayBuffer[, byteOffset[, length]])
 **/
Buffer.from = function (value, encodingOrOffset, length) {
  return from(value, encodingOrOffset, length)
}

// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
// https://github.com/feross/buffer/pull/148
Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)
Object.setPrototypeOf(Buffer, Uint8Array)

function assertSize (size) {
  if (typeof size !== 'number') {
    throw new TypeError('"size" argument must be of type number')
  } else if (size < 0) {
    throw new RangeError('The value "' + size + '" is invalid for option "size"')
  }
}

function alloc (size, fill, encoding) {
  assertSize(size)
  if (size <= 0) {
    return createBuffer(size)
  }
  if (fill !== undefined) {
    // Only pay attention to encoding if it's a string. This
    // prevents accidentally sending in a number that would
    // be interpreted as a start offset.
    return typeof encoding === 'string'
      ? createBuffer(size).fill(fill, encoding)
      : createBuffer(size).fill(fill)
  }
  return createBuffer(size)
}

/**
 * Creates a new filled Buffer instance.
 * alloc(size[, fill[, encoding]])
 **/
Buffer.alloc = function (size, fill, encoding) {
  return alloc(size, fill, encoding)
}

function allocUnsafe (size) {
  assertSize(size)
  return createBuffer(size < 0 ? 0 : checked(size) | 0)
}

/**
 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
 * */
Buffer.allocUnsafe = function (size) {
  return allocUnsafe(size)
}
/**
 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
 */
Buffer.allocUnsafeSlow = function (size) {
  return allocUnsafe(size)
}

function fromString (string, encoding) {
  if (typeof encoding !== 'string' || encoding === '') {
    encoding = 'utf8'
  }

  if (!Buffer.isEncoding(encoding)) {
    throw new TypeError('Unknown encoding: ' + encoding)
  }

  var length = byteLength(string, encoding) | 0
  var buf = createBuffer(length)

  var actual = buf.write(string, encoding)

  if (actual !== length) {
    // Writing a hex string, for example, that contains invalid characters will
    // cause everything after the first invalid character to be ignored. (e.g.
    // 'abxxcd' will be treated as 'ab')
    buf = buf.slice(0, actual)
  }

  return buf
}

function fromArrayLike (array) {
  var length = array.length < 0 ? 0 : checked(array.length) | 0
  var buf = createBuffer(length)
  for (var i = 0; i < length; i += 1) {
    buf[i] = array[i] & 255
  }
  return buf
}

function fromArrayView (arrayView) {
  if (isInstance(arrayView, Uint8Array)) {
    var copy = new Uint8Array(arrayView)
    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)
  }
  return fromArrayLike(arrayView)
}

function fromArrayBuffer (array, byteOffset, length) {
  if (byteOffset < 0 || array.byteLength < byteOffset) {
    throw new RangeError('"offset" is outside of buffer bounds')
  }

  if (array.byteLength < byteOffset + (length || 0)) {
    throw new RangeError('"length" is outside of buffer bounds')
  }

  var buf
  if (byteOffset === undefined && length === undefined) {
    buf = new Uint8Array(array)
  } else if (length === undefined) {
    buf = new Uint8Array(array, byteOffset)
  } else {
    buf = new Uint8Array(array, byteOffset, length)
  }

  // Return an augmented `Uint8Array` instance
  Object.setPrototypeOf(buf, Buffer.prototype)

  return buf
}

function fromObject (obj) {
  if (Buffer.isBuffer(obj)) {
    var len = checked(obj.length) | 0
    var buf = createBuffer(len)

    if (buf.length === 0) {
      return buf
    }

    obj.copy(buf, 0, 0, len)
    return buf
  }

  if (obj.length !== undefined) {
    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
      return createBuffer(0)
    }
    return fromArrayLike(obj)
  }

  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
    return fromArrayLike(obj.data)
  }
}

function checked (length) {
  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
  // length is NaN (which is otherwise coerced to zero.)
  if (length >= K_MAX_LENGTH) {
    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
  }
  return length | 0
}

function SlowBuffer (length) {
  if (+length != length) { // eslint-disable-line eqeqeq
    length = 0
  }
  return Buffer.alloc(+length)
}

Buffer.isBuffer = function isBuffer (b) {
  return b != null && b._isBuffer === true &&
    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false
}

Buffer.compare = function compare (a, b) {
  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)
  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)
  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
    throw new TypeError(
      'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array'
    )
  }

  if (a === b) return 0

  var x = a.length
  var y = b.length

  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
    if (a[i] !== b[i]) {
      x = a[i]
      y = b[i]
      break
    }
  }

  if (x < y) return -1
  if (y < x) return 1
  return 0
}

Buffer.isEncoding = function isEncoding (encoding) {
  switch (String(encoding).toLowerCase()) {
    case 'hex':
    case 'utf8':
    case 'utf-8':
    case 'ascii':
    case 'latin1':
    case 'binary':
    case 'base64':
    case 'ucs2':
    case 'ucs-2':
    case 'utf16le':
    case 'utf-16le':
      return true
    default:
      return false
  }
}

Buffer.concat = function concat (list, length) {
  if (!Array.isArray(list)) {
    throw new TypeError('"list" argument must be an Array of Buffers')
  }

  if (list.length === 0) {
    return Buffer.alloc(0)
  }

  var i
  if (length === undefined) {
    length = 0
    for (i = 0; i < list.length; ++i) {
      length += list[i].length
    }
  }

  var buffer = Buffer.allocUnsafe(length)
  var pos = 0
  for (i = 0; i < list.length; ++i) {
    var buf = list[i]
    if (isInstance(buf, Uint8Array)) {
      if (pos + buf.length > buffer.length) {
        Buffer.from(buf).copy(buffer, pos)
      } else {
        Uint8Array.prototype.set.call(
          buffer,
          buf,
          pos
        )
      }
    } else if (!Buffer.isBuffer(buf)) {
      throw new TypeError('"list" argument must be an Array of Buffers')
    } else {
      buf.copy(buffer, pos)
    }
    pos += buf.length
  }
  return buffer
}

function byteLength (string, encoding) {
  if (Buffer.isBuffer(string)) {
    return string.length
  }
  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {
    return string.byteLength
  }
  if (typeof string !== 'string') {
    throw new TypeError(
      'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' +
      'Received type ' + typeof string
    )
  }

  var len = string.length
  var mustMatch = (arguments.length > 2 && arguments[2] === true)
  if (!mustMatch && len === 0) return 0

  // Use a for loop to avoid recursion
  var loweredCase = false
  for (;;) {
    switch (encoding) {
      case 'ascii':
      case 'latin1':
      case 'binary':
        return len
      case 'utf8':
      case 'utf-8':
        return utf8ToBytes(string).length
      case 'ucs2':
      case 'ucs-2':
      case 'utf16le':
      case 'utf-16le':
        return len * 2
      case 'hex':
        return len >>> 1
      case 'base64':
        return base64ToBytes(string).length
      default:
        if (loweredCase) {
          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8
        }
        encoding = ('' + encoding).toLowerCase()
        loweredCase = true
    }
  }
}
Buffer.byteLength = byteLength

function slowToString (encoding, start, end) {
  var loweredCase = false

  // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
  // property of a typed array.

  // This behaves neither like String nor Uint8Array in that we set start/end
  // to their upper/lower bounds if the value passed is out of range.
  // undefined is handled specially as per ECMA-262 6th Edition,
  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
  if (start === undefined || start < 0) {
    start = 0
  }
  // Return early if start > this.length. Done here to prevent potential uint32
  // coercion fail below.
  if (start > this.length) {
    return ''
  }

  if (end === undefined || end > this.length) {
    end = this.length
  }

  if (end <= 0) {
    return ''
  }

  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.
  end >>>= 0
  start >>>= 0

  if (end <= start) {
    return ''
  }

  if (!encoding) encoding = 'utf8'

  while (true) {
    switch (encoding) {
      case 'hex':
        return hexSlice(this, start, end)

      case 'utf8':
      case 'utf-8':
        return utf8Slice(this, start, end)

      case 'ascii':
        return asciiSlice(this, start, end)

      case 'latin1':
      case 'binary':
        return latin1Slice(this, start, end)

      case 'base64':
        return base64Slice(this, start, end)

      case 'ucs2':
      case 'ucs-2':
      case 'utf16le':
      case 'utf-16le':
        return utf16leSlice(this, start, end)

      default:
        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
        encoding = (encoding + '').toLowerCase()
        loweredCase = true
    }
  }
}

// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
// to detect a Buffer instance. It's not possible to use `instanceof Buffer`
// reliably in a browserify context because there could be multiple different
// copies of the 'buffer' package in use. This method works even for Buffer
// instances that were created from another copy of the `buffer` package.
// See: https://github.com/feross/buffer/issues/154
Buffer.prototype._isBuffer = true

function swap (b, n, m) {
  var i = b[n]
  b[n] = b[m]
  b[m] = i
}

Buffer.prototype.swap16 = function swap16 () {
  var len = this.length
  if (len % 2 !== 0) {
    throw new RangeError('Buffer size must be a multiple of 16-bits')
  }
  for (var i = 0; i < len; i += 2) {
    swap(this, i, i + 1)
  }
  return this
}

Buffer.prototype.swap32 = function swap32 () {
  var len = this.length
  if (len % 4 !== 0) {
    throw new RangeError('Buffer size must be a multiple of 32-bits')
  }
  for (var i = 0; i < len; i += 4) {
    swap(this, i, i + 3)
    swap(this, i + 1, i + 2)
  }
  return this
}

Buffer.prototype.swap64 = function swap64 () {
  var len = this.length
  if (len % 8 !== 0) {
    throw new RangeError('Buffer size must be a multiple of 64-bits')
  }
  for (var i = 0; i < len; i += 8) {
    swap(this, i, i + 7)
    swap(this, i + 1, i + 6)
    swap(this, i + 2, i + 5)
    swap(this, i + 3, i + 4)
  }
  return this
}

Buffer.prototype.toString = function toString () {
  var length = this.length
  if (length === 0) return ''
  if (arguments.length === 0) return utf8Slice(this, 0, length)
  return slowToString.apply(this, arguments)
}

Buffer.prototype.toLocaleString = Buffer.prototype.toString

Buffer.prototype.equals = function equals (b) {
  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
  if (this === b) return true
  return Buffer.compare(this, b) === 0
}

Buffer.prototype.inspect = function inspect () {
  var str = ''
  var max = exports.INSPECT_MAX_BYTES
  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()
  if (this.length > max) str += ' ... '
  return '<Buffer ' + str + '>'
}
if (customInspectSymbol) {
  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect
}

Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
  if (isInstance(target, Uint8Array)) {
    target = Buffer.from(target, target.offset, target.byteLength)
  }
  if (!Buffer.isBuffer(target)) {
    throw new TypeError(
      'The "target" argument must be one of type Buffer or Uint8Array. ' +
      'Received type ' + (typeof target)
    )
  }

  if (start === undefined) {
    start = 0
  }
  if (end === undefined) {
    end = target ? target.length : 0
  }
  if (thisStart === undefined) {
    thisStart = 0
  }
  if (thisEnd === undefined) {
    thisEnd = this.length
  }

  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
    throw new RangeError('out of range index')
  }

  if (thisStart >= thisEnd && start >= end) {
    return 0
  }
  if (thisStart >= thisEnd) {
    return -1
  }
  if (start >= end) {
    return 1
  }

  start >>>= 0
  end >>>= 0
  thisStart >>>= 0
  thisEnd >>>= 0

  if (this === target) return 0

  var x = thisEnd - thisStart
  var y = end - start
  var len = Math.min(x, y)

  var thisCopy = this.slice(thisStart, thisEnd)
  var targetCopy = target.slice(start, end)

  for (var i = 0; i < len; ++i) {
    if (thisCopy[i] !== targetCopy[i]) {
      x = thisCopy[i]
      y = targetCopy[i]
      break
    }
  }

  if (x < y) return -1
  if (y < x) return 1
  return 0
}

// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
//
// Arguments:
// - buffer - a Buffer to search
// - val - a string, Buffer, or number
// - byteOffset - an index into `buffer`; will be clamped to an int32
// - encoding - an optional encoding, relevant is val is a string
// - dir - true for indexOf, false for lastIndexOf
function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
  // Empty buffer means no match
  if (buffer.length === 0) return -1

  // Normalize byteOffset
  if (typeof byteOffset === 'string') {
    encoding = byteOffset
    byteOffset = 0
  } else if (byteOffset > 0x7fffffff) {
    byteOffset = 0x7fffffff
  } else if (byteOffset < -0x80000000) {
    byteOffset = -0x80000000
  }
  byteOffset = +byteOffset // Coerce to Number.
  if (numberIsNaN(byteOffset)) {
    // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
    byteOffset = dir ? 0 : (buffer.length - 1)
  }

  // Normalize byteOffset: negative offsets start from the end of the buffer
  if (byteOffset < 0) byteOffset = buffer.length + byteOffset
  if (byteOffset >= buffer.length) {
    if (dir) return -1
    else byteOffset = buffer.length - 1
  } else if (byteOffset < 0) {
    if (dir) byteOffset = 0
    else return -1
  }

  // Normalize val
  if (typeof val === 'string') {
    val = Buffer.from(val, encoding)
  }

  // Finally, search either indexOf (if dir is true) or lastIndexOf
  if (Buffer.isBuffer(val)) {
    // Special case: looking for empty string/buffer always fails
    if (val.length === 0) {
      return -1
    }
    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
  } else if (typeof val === 'number') {
    val = val & 0xFF // Search for a byte value [0-255]
    if (typeof Uint8Array.prototype.indexOf === 'function') {
      if (dir) {
        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
      } else {
        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
      }
    }
    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)
  }

  throw new TypeError('val must be string, number or Buffer')
}

function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
  var indexSize = 1
  var arrLength = arr.length
  var valLength = val.length

  if (encoding !== undefined) {
    encoding = String(encoding).toLowerCase()
    if (encoding === 'ucs2' || encoding === 'ucs-2' ||
        encoding === 'utf16le' || encoding === 'utf-16le') {
      if (arr.length < 2 || val.length < 2) {
        return -1
      }
      indexSize = 2
      arrLength /= 2
      valLength /= 2
      byteOffset /= 2
    }
  }

  function read (buf, i) {
    if (indexSize === 1) {
      return buf[i]
    } else {
      return buf.readUInt16BE(i * indexSize)
    }
  }

  var i
  if (dir) {
    var foundIndex = -1
    for (i = byteOffset; i < arrLength; i++) {
      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
        if (foundIndex === -1) foundIndex = i
        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
      } else {
        if (foundIndex !== -1) i -= i - foundIndex
        foundIndex = -1
      }
    }
  } else {
    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
    for (i = byteOffset; i >= 0; i--) {
      var found = true
      for (var j = 0; j < valLength; j++) {
        if (read(arr, i + j) !== read(val, j)) {
          found = false
          break
        }
      }
      if (found) return i
    }
  }

  return -1
}

Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
  return this.indexOf(val, byteOffset, encoding) !== -1
}

Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
}

Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
}

function hexWrite (buf, string, offset, length) {
  offset = Number(offset) || 0
  var remaining = buf.length - offset
  if (!length) {
    length = remaining
  } else {
    length = Number(length)
    if (length > remaining) {
      length = remaining
    }
  }

  var strLen = string.length

  if (length > strLen / 2) {
    length = strLen / 2
  }
  for (var i = 0; i < length; ++i) {
    var parsed = parseInt(string.substr(i * 2, 2), 16)
    if (numberIsNaN(parsed)) return i
    buf[offset + i] = parsed
  }
  return i
}

function utf8Write (buf, string, offset, length) {
  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
}

function asciiWrite (buf, string, offset, length) {
  return blitBuffer(asciiToBytes(string), buf, offset, length)
}

function base64Write (buf, string, offset, length) {
  return blitBuffer(base64ToBytes(string), buf, offset, length)
}

function ucs2Write (buf, string, offset, length) {
  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
}

Buffer.prototype.write = function write (string, offset, length, encoding) {
  // Buffer#write(string)
  if (offset === undefined) {
    encoding = 'utf8'
    length = this.length
    offset = 0
  // Buffer#write(string, encoding)
  } else if (length === undefined && typeof offset === 'string') {
    encoding = offset
    length = this.length
    offset = 0
  // Buffer#write(string, offset[, length][, encoding])
  } else if (isFinite(offset)) {
    offset = offset >>> 0
    if (isFinite(length)) {
      length = length >>> 0
      if (encoding === undefined) encoding = 'utf8'
    } else {
      encoding = length
      length = undefined
    }
  } else {
    throw new Error(
      'Buffer.write(string, encoding, offset[, length]) is no longer supported'
    )
  }

  var remaining = this.length - offset
  if (length === undefined || length > remaining) length = remaining

  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
    throw new RangeError('Attempt to write outside buffer bounds')
  }

  if (!encoding) encoding = 'utf8'

  var loweredCase = false
  for (;;) {
    switch (encoding) {
      case 'hex':
        return hexWrite(this, string, offset, length)

      case 'utf8':
      case 'utf-8':
        return utf8Write(this, string, offset, length)

      case 'ascii':
      case 'latin1':
      case 'binary':
        return asciiWrite(this, string, offset, length)

      case 'base64':
        // Warning: maxLength not taken into account in base64Write
        return base64Write(this, string, offset, length)

      case 'ucs2':
      case 'ucs-2':
      case 'utf16le':
      case 'utf-16le':
        return ucs2Write(this, string, offset, length)

      default:
        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
        encoding = ('' + encoding).toLowerCase()
        loweredCase = true
    }
  }
}

Buffer.prototype.toJSON = function toJSON () {
  return {
    type: 'Buffer',
    data: Array.prototype.slice.call(this._arr || this, 0)
  }
}

function base64Slice (buf, start, end) {
  if (start === 0 && end === buf.length) {
    return base64.fromByteArray(buf)
  } else {
    return base64.fromByteArray(buf.slice(start, end))
  }
}

function utf8Slice (buf, start, end) {
  end = Math.min(buf.length, end)
  var res = []

  var i = start
  while (i < end) {
    var firstByte = buf[i]
    var codePoint = null
    var bytesPerSequence = (firstByte > 0xEF)
      ? 4
      : (firstByte > 0xDF)
          ? 3
          : (firstByte > 0xBF)
              ? 2
              : 1

    if (i + bytesPerSequence <= end) {
      var secondByte, thirdByte, fourthByte, tempCodePoint

      switch (bytesPerSequence) {
        case 1:
          if (firstByte < 0x80) {
            codePoint = firstByte
          }
          break
        case 2:
          secondByte = buf[i + 1]
          if ((secondByte & 0xC0) === 0x80) {
            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
            if (tempCodePoint > 0x7F) {
              codePoint = tempCodePoint
            }
          }
          break
        case 3:
          secondByte = buf[i + 1]
          thirdByte = buf[i + 2]
          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
              codePoint = tempCodePoint
            }
          }
          break
        case 4:
          secondByte = buf[i + 1]
          thirdByte = buf[i + 2]
          fourthByte = buf[i + 3]
          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
              codePoint = tempCodePoint
            }
          }
      }
    }

    if (codePoint === null) {
      // we did not generate a valid codePoint so insert a
      // replacement char (U+FFFD) and advance only 1 byte
      codePoint = 0xFFFD
      bytesPerSequence = 1
    } else if (codePoint > 0xFFFF) {
      // encode to utf16 (surrogate pair dance)
      codePoint -= 0x10000
      res.push(codePoint >>> 10 & 0x3FF | 0xD800)
      codePoint = 0xDC00 | codePoint & 0x3FF
    }

    res.push(codePoint)
    i += bytesPerSequence
  }

  return decodeCodePointsArray(res)
}

// Based on http://stackoverflow.com/a/22747272/680742, the browser with
// the lowest limit is Chrome, with 0x10000 args.
// We go 1 magnitude less, for safety
var MAX_ARGUMENTS_LENGTH = 0x1000

function decodeCodePointsArray (codePoints) {
  var len = codePoints.length
  if (len <= MAX_ARGUMENTS_LENGTH) {
    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
  }

  // Decode in chunks to avoid "call stack size exceeded".
  var res = ''
  var i = 0
  while (i < len) {
    res += String.fromCharCode.apply(
      String,
      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
    )
  }
  return res
}

function asciiSlice (buf, start, end) {
  var ret = ''
  end = Math.min(buf.length, end)

  for (var i = start; i < end; ++i) {
    ret += String.fromCharCode(buf[i] & 0x7F)
  }
  return ret
}

function latin1Slice (buf, start, end) {
  var ret = ''
  end = Math.min(buf.length, end)

  for (var i = start; i < end; ++i) {
    ret += String.fromCharCode(buf[i])
  }
  return ret
}

function hexSlice (buf, start, end) {
  var len = buf.length

  if (!start || start < 0) start = 0
  if (!end || end < 0 || end > len) end = len

  var out = ''
  for (var i = start; i < end; ++i) {
    out += hexSliceLookupTable[buf[i]]
  }
  return out
}

function utf16leSlice (buf, start, end) {
  var bytes = buf.slice(start, end)
  var res = ''
  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)
  for (var i = 0; i < bytes.length - 1; i += 2) {
    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
  }
  return res
}

Buffer.prototype.slice = function slice (start, end) {
  var len = this.length
  start = ~~start
  end = end === undefined ? len : ~~end

  if (start < 0) {
    start += len
    if (start < 0) start = 0
  } else if (start > len) {
    start = len
  }

  if (end < 0) {
    end += len
    if (end < 0) end = 0
  } else if (end > len) {
    end = len
  }

  if (end < start) end = start

  var newBuf = this.subarray(start, end)
  // Return an augmented `Uint8Array` instance
  Object.setPrototypeOf(newBuf, Buffer.prototype)

  return newBuf
}

/*
 * Need to make sure that buffer isn't trying to write out of bounds.
 */
function checkOffset (offset, ext, length) {
  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
}

Buffer.prototype.readUintLE =
Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
  offset = offset >>> 0
  byteLength = byteLength >>> 0
  if (!noAssert) checkOffset(offset, byteLength, this.length)

  var val = this[offset]
  var mul = 1
  var i = 0
  while (++i < byteLength && (mul *= 0x100)) {
    val += this[offset + i] * mul
  }

  return val
}

Buffer.prototype.readUintBE =
Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
  offset = offset >>> 0
  byteLength = byteLength >>> 0
  if (!noAssert) {
    checkOffset(offset, byteLength, this.length)
  }

  var val = this[offset + --byteLength]
  var mul = 1
  while (byteLength > 0 && (mul *= 0x100)) {
    val += this[offset + --byteLength] * mul
  }

  return val
}

Buffer.prototype.readUint8 =
Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
  offset = offset >>> 0
  if (!noAssert) checkOffset(offset, 1, this.length)
  return this[offset]
}

Buffer.prototype.readUint16LE =
Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
  offset = offset >>> 0
  if (!noAssert) checkOffset(offset, 2, this.length)
  return this[offset] | (this[offset + 1] << 8)
}

Buffer.prototype.readUint16BE =
Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
  offset = offset >>> 0
  if (!noAssert) checkOffset(offset, 2, this.length)
  return (this[offset] << 8) | this[offset + 1]
}

Buffer.prototype.readUint32LE =
Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
  offset = offset >>> 0
  if (!noAssert) checkOffset(offset, 4, this.length)

  return ((this[offset]) |
      (this[offset + 1] << 8) |
      (this[offset + 2] << 16)) +
      (this[offset + 3] * 0x1000000)
}

Buffer.prototype.readUint32BE =
Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
  offset = offset >>> 0
  if (!noAssert) checkOffset(offset, 4, this.length)

  return (this[offset] * 0x1000000) +
    ((this[offset + 1] << 16) |
    (this[offset + 2] << 8) |
    this[offset + 3])
}

Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
  offset = offset >>> 0
  byteLength = byteLength >>> 0
  if (!noAssert) checkOffset(offset, byteLength, this.length)

  var val = this[offset]
  var mul = 1
  var i = 0
  while (++i < byteLength && (mul *= 0x100)) {
    val += this[offset + i] * mul
  }
  mul *= 0x80

  if (val >= mul) val -= Math.pow(2, 8 * byteLength)

  return val
}

Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
  offset = offset >>> 0
  byteLength = byteLength >>> 0
  if (!noAssert) checkOffset(offset, byteLength, this.length)

  var i = byteLength
  var mul = 1
  var val = this[offset + --i]
  while (i > 0 && (mul *= 0x100)) {
    val += this[offset + --i] * mul
  }
  mul *= 0x80

  if (val >= mul) val -= Math.pow(2, 8 * byteLength)

  return val
}

Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
  offset = offset >>> 0
  if (!noAssert) checkOffset(offset, 1, this.length)
  if (!(this[offset] & 0x80)) return (this[offset])
  return ((0xff - this[offset] + 1) * -1)
}

Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
  offset = offset >>> 0
  if (!noAssert) checkOffset(offset, 2, this.length)
  var val = this[offset] | (this[offset + 1] << 8)
  return (val & 0x8000) ? val | 0xFFFF0000 : val
}

Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
  offset = offset >>> 0
  if (!noAssert) checkOffset(offset, 2, this.length)
  var val = this[offset + 1] | (this[offset] << 8)
  return (val & 0x8000) ? val | 0xFFFF0000 : val
}

Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
  offset = offset >>> 0
  if (!noAssert) checkOffset(offset, 4, this.length)

  return (this[offset]) |
    (this[offset + 1] << 8) |
    (this[offset + 2] << 16) |
    (this[offset + 3] << 24)
}

Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
  offset = offset >>> 0
  if (!noAssert) checkOffset(offset, 4, this.length)

  return (this[offset] << 24) |
    (this[offset + 1] << 16) |
    (this[offset + 2] << 8) |
    (this[offset + 3])
}

Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
  offset = offset >>> 0
  if (!noAssert) checkOffset(offset, 4, this.length)
  return ieee754.read(this, offset, true, 23, 4)
}

Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
  offset = offset >>> 0
  if (!noAssert) checkOffset(offset, 4, this.length)
  return ieee754.read(this, offset, false, 23, 4)
}

Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
  offset = offset >>> 0
  if (!noAssert) checkOffset(offset, 8, this.length)
  return ieee754.read(this, offset, true, 52, 8)
}

Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
  offset = offset >>> 0
  if (!noAssert) checkOffset(offset, 8, this.length)
  return ieee754.read(this, offset, false, 52, 8)
}

function checkInt (buf, value, offset, ext, max, min) {
  if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
  if (offset + ext > buf.length) throw new RangeError('Index out of range')
}

Buffer.prototype.writeUintLE =
Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
  value = +value
  offset = offset >>> 0
  byteLength = byteLength >>> 0
  if (!noAssert) {
    var maxBytes = Math.pow(2, 8 * byteLength) - 1
    checkInt(this, value, offset, byteLength, maxBytes, 0)
  }

  var mul = 1
  var i = 0
  this[offset] = value & 0xFF
  while (++i < byteLength && (mul *= 0x100)) {
    this[offset + i] = (value / mul) & 0xFF
  }

  return offset + byteLength
}

Buffer.prototype.writeUintBE =
Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
  value = +value
  offset = offset >>> 0
  byteLength = byteLength >>> 0
  if (!noAssert) {
    var maxBytes = Math.pow(2, 8 * byteLength) - 1
    checkInt(this, value, offset, byteLength, maxBytes, 0)
  }

  var i = byteLength - 1
  var mul = 1
  this[offset + i] = value & 0xFF
  while (--i >= 0 && (mul *= 0x100)) {
    this[offset + i] = (value / mul) & 0xFF
  }

  return offset + byteLength
}

Buffer.prototype.writeUint8 =
Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
  value = +value
  offset = offset >>> 0
  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
  this[offset] = (value & 0xff)
  return offset + 1
}

Buffer.prototype.writeUint16LE =
Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
  value = +value
  offset = offset >>> 0
  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
  this[offset] = (value & 0xff)
  this[offset + 1] = (value >>> 8)
  return offset + 2
}

Buffer.prototype.writeUint16BE =
Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
  value = +value
  offset = offset >>> 0
  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
  this[offset] = (value >>> 8)
  this[offset + 1] = (value & 0xff)
  return offset + 2
}

Buffer.prototype.writeUint32LE =
Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
  value = +value
  offset = offset >>> 0
  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
  this[offset + 3] = (value >>> 24)
  this[offset + 2] = (value >>> 16)
  this[offset + 1] = (value >>> 8)
  this[offset] = (value & 0xff)
  return offset + 4
}

Buffer.prototype.writeUint32BE =
Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
  value = +value
  offset = offset >>> 0
  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
  this[offset] = (value >>> 24)
  this[offset + 1] = (value >>> 16)
  this[offset + 2] = (value >>> 8)
  this[offset + 3] = (value & 0xff)
  return offset + 4
}

Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
  value = +value
  offset = offset >>> 0
  if (!noAssert) {
    var limit = Math.pow(2, (8 * byteLength) - 1)

    checkInt(this, value, offset, byteLength, limit - 1, -limit)
  }

  var i = 0
  var mul = 1
  var sub = 0
  this[offset] = value & 0xFF
  while (++i < byteLength && (mul *= 0x100)) {
    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
      sub = 1
    }
    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
  }

  return offset + byteLength
}

Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
  value = +value
  offset = offset >>> 0
  if (!noAssert) {
    var limit = Math.pow(2, (8 * byteLength) - 1)

    checkInt(this, value, offset, byteLength, limit - 1, -limit)
  }

  var i = byteLength - 1
  var mul = 1
  var sub = 0
  this[offset + i] = value & 0xFF
  while (--i >= 0 && (mul *= 0x100)) {
    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
      sub = 1
    }
    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
  }

  return offset + byteLength
}

Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
  value = +value
  offset = offset >>> 0
  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
  if (value < 0) value = 0xff + value + 1
  this[offset] = (value & 0xff)
  return offset + 1
}

Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
  value = +value
  offset = offset >>> 0
  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
  this[offset] = (value & 0xff)
  this[offset + 1] = (value >>> 8)
  return offset + 2
}

Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
  value = +value
  offset = offset >>> 0
  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
  this[offset] = (value >>> 8)
  this[offset + 1] = (value & 0xff)
  return offset + 2
}

Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
  value = +value
  offset = offset >>> 0
  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
  this[offset] = (value & 0xff)
  this[offset + 1] = (value >>> 8)
  this[offset + 2] = (value >>> 16)
  this[offset + 3] = (value >>> 24)
  return offset + 4
}

Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
  value = +value
  offset = offset >>> 0
  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
  if (value < 0) value = 0xffffffff + value + 1
  this[offset] = (value >>> 24)
  this[offset + 1] = (value >>> 16)
  this[offset + 2] = (value >>> 8)
  this[offset + 3] = (value & 0xff)
  return offset + 4
}

function checkIEEE754 (buf, value, offset, ext, max, min) {
  if (offset + ext > buf.length) throw new RangeError('Index out of range')
  if (offset < 0) throw new RangeError('Index out of range')
}

function writeFloat (buf, value, offset, littleEndian, noAssert) {
  value = +value
  offset = offset >>> 0
  if (!noAssert) {
    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
  }
  ieee754.write(buf, value, offset, littleEndian, 23, 4)
  return offset + 4
}

Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
  return writeFloat(this, value, offset, true, noAssert)
}

Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
  return writeFloat(this, value, offset, false, noAssert)
}

function writeDouble (buf, value, offset, littleEndian, noAssert) {
  value = +value
  offset = offset >>> 0
  if (!noAssert) {
    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
  }
  ieee754.write(buf, value, offset, littleEndian, 52, 8)
  return offset + 8
}

Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
  return writeDouble(this, value, offset, true, noAssert)
}

Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
  return writeDouble(this, value, offset, false, noAssert)
}

// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
Buffer.prototype.copy = function copy (target, targetStart, start, end) {
  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')
  if (!start) start = 0
  if (!end && end !== 0) end = this.length
  if (targetStart >= target.length) targetStart = target.length
  if (!targetStart) targetStart = 0
  if (end > 0 && end < start) end = start

  // Copy 0 bytes; we're done
  if (end === start) return 0
  if (target.length === 0 || this.length === 0) return 0

  // Fatal error conditions
  if (targetStart < 0) {
    throw new RangeError('targetStart out of bounds')
  }
  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')
  if (end < 0) throw new RangeError('sourceEnd out of bounds')

  // Are we oob?
  if (end > this.length) end = this.length
  if (target.length - targetStart < end - start) {
    end = target.length - targetStart + start
  }

  var len = end - start

  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {
    // Use built-in when available, missing from IE11
    this.copyWithin(targetStart, start, end)
  } else {
    Uint8Array.prototype.set.call(
      target,
      this.subarray(start, end),
      targetStart
    )
  }

  return len
}

// Usage:
//    buffer.fill(number[, offset[, end]])
//    buffer.fill(buffer[, offset[, end]])
//    buffer.fill(string[, offset[, end]][, encoding])
Buffer.prototype.fill = function fill (val, start, end, encoding) {
  // Handle string cases:
  if (typeof val === 'string') {
    if (typeof start === 'string') {
      encoding = start
      start = 0
      end = this.length
    } else if (typeof end === 'string') {
      encoding = end
      end = this.length
    }
    if (encoding !== undefined && typeof encoding !== 'string') {
      throw new TypeError('encoding must be a string')
    }
    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
      throw new TypeError('Unknown encoding: ' + encoding)
    }
    if (val.length === 1) {
      var code = val.charCodeAt(0)
      if ((encoding === 'utf8' && code < 128) ||
          encoding === 'latin1') {
        // Fast path: If `val` fits into a single byte, use that numeric value.
        val = code
      }
    }
  } else if (typeof val === 'number') {
    val = val & 255
  } else if (typeof val === 'boolean') {
    val = Number(val)
  }

  // Invalid ranges are not set to a default, so can range check early.
  if (start < 0 || this.length < start || this.length < end) {
    throw new RangeError('Out of range index')
  }

  if (end <= start) {
    return this
  }

  start = start >>> 0
  end = end === undefined ? this.length : end >>> 0

  if (!val) val = 0

  var i
  if (typeof val === 'number') {
    for (i = start; i < end; ++i) {
      this[i] = val
    }
  } else {
    var bytes = Buffer.isBuffer(val)
      ? val
      : Buffer.from(val, encoding)
    var len = bytes.length
    if (len === 0) {
      throw new TypeError('The value "' + val +
        '" is invalid for argument "value"')
    }
    for (i = 0; i < end - start; ++i) {
      this[i + start] = bytes[i % len]
    }
  }

  return this
}

// HELPER FUNCTIONS
// ================

var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g

function base64clean (str) {
  // Node takes equal signs as end of the Base64 encoding
  str = str.split('=')[0]
  // Node strips out invalid characters like \n and \t from the string, base64-js does not
  str = str.trim().replace(INVALID_BASE64_RE, '')
  // Node converts strings with length < 2 to ''
  if (str.length < 2) return ''
  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
  while (str.length % 4 !== 0) {
    str = str + '='
  }
  return str
}

function utf8ToBytes (string, units) {
  units = units || Infinity
  var codePoint
  var length = string.length
  var leadSurrogate = null
  var bytes = []

  for (var i = 0; i < length; ++i) {
    codePoint = string.charCodeAt(i)

    // is surrogate component
    if (codePoint > 0xD7FF && codePoint < 0xE000) {
      // last char was a lead
      if (!leadSurrogate) {
        // no lead yet
        if (codePoint > 0xDBFF) {
          // unexpected trail
          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
          continue
        } else if (i + 1 === length) {
          // unpaired lead
          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
          continue
        }

        // valid lead
        leadSurrogate = codePoint

        continue
      }

      // 2 leads in a row
      if (codePoint < 0xDC00) {
        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
        leadSurrogate = codePoint
        continue
      }

      // valid surrogate pair
      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
    } else if (leadSurrogate) {
      // valid bmp char, but last char was a lead
      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
    }

    leadSurrogate = null

    // encode utf8
    if (codePoint < 0x80) {
      if ((units -= 1) < 0) break
      bytes.push(codePoint)
    } else if (codePoint < 0x800) {
      if ((units -= 2) < 0) break
      bytes.push(
        codePoint >> 0x6 | 0xC0,
        codePoint & 0x3F | 0x80
      )
    } else if (codePoint < 0x10000) {
      if ((units -= 3) < 0) break
      bytes.push(
        codePoint >> 0xC | 0xE0,
        codePoint >> 0x6 & 0x3F | 0x80,
        codePoint & 0x3F | 0x80
      )
    } else if (codePoint < 0x110000) {
      if ((units -= 4) < 0) break
      bytes.push(
        codePoint >> 0x12 | 0xF0,
        codePoint >> 0xC & 0x3F | 0x80,
        codePoint >> 0x6 & 0x3F | 0x80,
        codePoint & 0x3F | 0x80
      )
    } else {
      throw new Error('Invalid code point')
    }
  }

  return bytes
}

function asciiToBytes (str) {
  var byteArray = []
  for (var i = 0; i < str.length; ++i) {
    // Node's code seems to be doing this and not & 0x7F..
    byteArray.push(str.charCodeAt(i) & 0xFF)
  }
  return byteArray
}

function utf16leToBytes (str, units) {
  var c, hi, lo
  var byteArray = []
  for (var i = 0; i < str.length; ++i) {
    if ((units -= 2) < 0) break

    c = str.charCodeAt(i)
    hi = c >> 8
    lo = c % 256
    byteArray.push(lo)
    byteArray.push(hi)
  }

  return byteArray
}

function base64ToBytes (str) {
  return base64.toByteArray(base64clean(str))
}

function blitBuffer (src, dst, offset, length) {
  for (var i = 0; i < length; ++i) {
    if ((i + offset >= dst.length) || (i >= src.length)) break
    dst[i + offset] = src[i]
  }
  return i
}

// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass
// the `instanceof` check but they should be treated as of that type.
// See: https://github.com/feross/buffer/issues/166
function isInstance (obj, type) {
  return obj instanceof type ||
    (obj != null && obj.constructor != null && obj.constructor.name != null &&
      obj.constructor.name === type.name)
}
function numberIsNaN (obj) {
  // For IE11 support
  return obj !== obj // eslint-disable-line no-self-compare
}

// Create lookup table for `toString('hex')`
// See: https://github.com/feross/buffer/issues/219
var hexSliceLookupTable = (function () {
  var alphabet = '0123456789abcdef'
  var table = new Array(256)
  for (var i = 0; i < 16; ++i) {
    var i16 = i * 16
    for (var j = 0; j < 16; ++j) {
      table[i16 + j] = alphabet[i] + alphabet[j]
    }
  }
  return table
})()


/***/ }),

/***/ "./node_modules/dom-serializer/index.js":
/*!**********************************************!*\
  !*** ./node_modules/dom-serializer/index.js ***!
  \**********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/*
  Module dependencies
*/
var ElementType = __webpack_require__(/*! domelementtype */ "./node_modules/dom-serializer/node_modules/domelementtype/lib/index.js");
var entities = __webpack_require__(/*! entities */ "./node_modules/dom-serializer/node_modules/entities/lib/index.js");

/* mixed-case SVG and MathML tags & attributes
   recognized by the HTML parser, see
   https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign
*/
var foreignNames = __webpack_require__(/*! ./foreignNames.json */ "./node_modules/dom-serializer/foreignNames.json");
foreignNames.elementNames.__proto__ = null; /* use as a simple dictionary */
foreignNames.attributeNames.__proto__ = null;

var unencodedElements = {
  __proto__: null,
  style: true,
  script: true,
  xmp: true,
  iframe: true,
  noembed: true,
  noframes: true,
  plaintext: true,
  noscript: true
};

/*
  Format attributes
*/
function formatAttrs(attributes, opts) {
  if (!attributes) return;

  var output = '';
  var value;

  // Loop through the attributes
  for (var key in attributes) {
    value = attributes[key];
    if (output) {
      output += ' ';
    }

    if (opts.xmlMode === 'foreign') {
      /* fix up mixed-case attribute names */
      key = foreignNames.attributeNames[key] || key;
    }
    output += key;
    if ((value !== null && value !== '') || opts.xmlMode) {
      output +=
        '="' +
        (opts.decodeEntities
          ? entities.encodeXML(value)
          : value.replace(/\"/g, '&quot;')) +
        '"';
    }
  }

  return output;
}

/*
  Self-enclosing tags (stolen from node-htmlparser)
*/
var singleTag = {
  __proto__: null,
  area: true,
  base: true,
  basefont: true,
  br: true,
  col: true,
  command: true,
  embed: true,
  frame: true,
  hr: true,
  img: true,
  input: true,
  isindex: true,
  keygen: true,
  link: true,
  meta: true,
  param: true,
  source: true,
  track: true,
  wbr: true
};

var render = (module.exports = function(dom, opts) {
  if (!Array.isArray(dom) && !dom.cheerio) dom = [dom];
  opts = opts || {};

  var output = '';

  for (var i = 0; i < dom.length; i++) {
    var elem = dom[i];

    if (elem.type === 'root') output += render(elem.children, opts);
    else if (ElementType.isTag(elem)) output += renderTag(elem, opts);
    else if (elem.type === ElementType.Directive)
      output += renderDirective(elem);
    else if (elem.type === ElementType.Comment) output += renderComment(elem);
    else if (elem.type === ElementType.CDATA) output += renderCdata(elem);
    else output += renderText(elem, opts);
  }

  return output;
});

var foreignModeIntegrationPoints = [
  'mi',
  'mo',
  'mn',
  'ms',
  'mtext',
  'annotation-xml',
  'foreignObject',
  'desc',
  'title'
];

function renderTag(elem, opts) {
  // Handle SVG / MathML in HTML
  if (opts.xmlMode === 'foreign') {
    /* fix up mixed-case element names */
    elem.name = foreignNames.elementNames[elem.name] || elem.name;
    /* exit foreign mode at integration points */
    if (
      elem.parent &&
      foreignModeIntegrationPoints.indexOf(elem.parent.name) >= 0
    )
      opts = Object.assign({}, opts, { xmlMode: false });
  }
  if (!opts.xmlMode && ['svg', 'math'].indexOf(elem.name) >= 0) {
    opts = Object.assign({}, opts, { xmlMode: 'foreign' });
  }

  var tag = '<' + elem.name;
  var attribs = formatAttrs(elem.attribs, opts);

  if (attribs) {
    tag += ' ' + attribs;
  }

  if (opts.xmlMode && (!elem.children || elem.children.length === 0)) {
    tag += '/>';
  } else {
    tag += '>';
    if (elem.children) {
      tag += render(elem.children, opts);
    }

    if (!singleTag[elem.name] || opts.xmlMode) {
      tag += '</' + elem.name + '>';
    }
  }

  return tag;
}

function renderDirective(elem) {
  return '<' + elem.data + '>';
}

function renderText(elem, opts) {
  var data = elem.data || '';

  // if entities weren't decoded, no need to encode them back
  if (
    opts.decodeEntities &&
    !(elem.parent && elem.parent.name in unencodedElements)
  ) {
    data = entities.encodeXML(data);
  }

  return data;
}

function renderCdata(elem) {
  return '<![CDATA[' + elem.children[0].data + ']]>';
}

function renderComment(elem) {
  return '<!--' + elem.data + '-->';
}


/***/ }),

/***/ "./node_modules/dom-serializer/node_modules/domelementtype/lib/index.js":
/*!******************************************************************************!*\
  !*** ./node_modules/dom-serializer/node_modules/domelementtype/lib/index.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";

Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0;
/** Types of elements found in htmlparser2's DOM */
var ElementType;
(function (ElementType) {
    /** Type for the root element of a document */
    ElementType["Root"] = "root";
    /** Type for Text */
    ElementType["Text"] = "text";
    /** Type for <? ... ?> */
    ElementType["Directive"] = "directive";
    /** Type for <!-- ... --> */
    ElementType["Comment"] = "comment";
    /** Type for <script> tags */
    ElementType["Script"] = "script";
    /** Type for <style> tags */
    ElementType["Style"] = "style";
    /** Type for Any tag */
    ElementType["Tag"] = "tag";
    /** Type for <![CDATA[ ... ]]> */
    ElementType["CDATA"] = "cdata";
    /** Type for <!doctype ...> */
    ElementType["Doctype"] = "doctype";
})(ElementType = exports.ElementType || (exports.ElementType = {}));
/**
 * Tests whether an element is a tag or not.
 *
 * @param elem Element to test
 */
function isTag(elem) {
    return (elem.type === ElementType.Tag ||
        elem.type === ElementType.Script ||
        elem.type === ElementType.Style);
}
exports.isTag = isTag;
// Exports for backwards compatibility
/** Type for the root element of a document */
exports.Root = ElementType.Root;
/** Type for Text */
exports.Text = ElementType.Text;
/** Type for <? ... ?> */
exports.Directive = ElementType.Directive;
/** Type for <!-- ... --> */
exports.Comment = ElementType.Comment;
/** Type for <script> tags */
exports.Script = ElementType.Script;
/** Type for <style> tags */
exports.Style = ElementType.Style;
/** Type for Any tag */
exports.Tag = ElementType.Tag;
/** Type for <![CDATA[ ... ]]> */
exports.CDATA = ElementType.CDATA;
/** Type for <!doctype ...> */
exports.Doctype = ElementType.Doctype;


/***/ }),

/***/ "./node_modules/dom-serializer/node_modules/entities/lib/decode.js":
/*!*************************************************************************!*\
  !*** ./node_modules/dom-serializer/node_modules/entities/lib/decode.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";

var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;
var entities_json_1 = __importDefault(__webpack_require__(/*! ./maps/entities.json */ "./node_modules/dom-serializer/node_modules/entities/lib/maps/entities.json"));
var legacy_json_1 = __importDefault(__webpack_require__(/*! ./maps/legacy.json */ "./node_modules/dom-serializer/node_modules/entities/lib/maps/legacy.json"));
var xml_json_1 = __importDefault(__webpack_require__(/*! ./maps/xml.json */ "./node_modules/dom-serializer/node_modules/entities/lib/maps/xml.json"));
var decode_codepoint_1 = __importDefault(__webpack_require__(/*! ./decode_codepoint */ "./node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js"));
var strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\da-fA-F]+|#\d+);/g;
exports.decodeXML = getStrictDecoder(xml_json_1.default);
exports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);
function getStrictDecoder(map) {
    var replace = getReplacer(map);
    return function (str) { return String(str).replace(strictEntityRe, replace); };
}
var sorter = function (a, b) { return (a < b ? 1 : -1); };
exports.decodeHTML = (function () {
    var legacy = Object.keys(legacy_json_1.default).sort(sorter);
    var keys = Object.keys(entities_json_1.default).sort(sorter);
    for (var i = 0, j = 0; i < keys.length; i++) {
        if (legacy[j] === keys[i]) {
            keys[i] += ";?";
            j++;
        }
        else {
            keys[i] += ";";
        }
    }
    var re = new RegExp("&(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g");
    var replace = getReplacer(entities_json_1.default);
    function replacer(str) {
        if (str.substr(-1) !== ";")
            str += ";";
        return replace(str);
    }
    // TODO consider creating a merged map
    return function (str) { return String(str).replace(re, replacer); };
})();
function getReplacer(map) {
    return function replace(str) {
        if (str.charAt(1) === "#") {
            var secondChar = str.charAt(2);
            if (secondChar === "X" || secondChar === "x") {
                return decode_codepoint_1.default(parseInt(str.substr(3), 16));
            }
            return decode_codepoint_1.default(parseInt(str.substr(2), 10));
        }
        // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
        return map[str.slice(1, -1)] || str;
    };
}


/***/ }),

/***/ "./node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js ***!
  \***********************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";

var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
var decode_json_1 = __importDefault(__webpack_require__(/*! ./maps/decode.json */ "./node_modules/dom-serializer/node_modules/entities/lib/maps/decode.json"));
// Adapted from https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119
var fromCodePoint = 
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
String.fromCodePoint ||
    function (codePoint) {
        var output = "";
        if (codePoint > 0xffff) {
            codePoint -= 0x10000;
            output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
            codePoint = 0xdc00 | (codePoint & 0x3ff);
        }
        output += String.fromCharCode(codePoint);
        return output;
    };
function decodeCodePoint(codePoint) {
    if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
        return "\uFFFD";
    }
    if (codePoint in decode_json_1.default) {
        codePoint = decode_json_1.default[codePoint];
    }
    return fromCodePoint(codePoint);
}
exports["default"] = decodeCodePoint;


/***/ }),

/***/ "./node_modules/dom-serializer/node_modules/entities/lib/encode.js":
/*!*************************************************************************!*\
  !*** ./node_modules/dom-serializer/node_modules/entities/lib/encode.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";

var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = void 0;
var xml_json_1 = __importDefault(__webpack_require__(/*! ./maps/xml.json */ "./node_modules/dom-serializer/node_modules/entities/lib/maps/xml.json"));
var inverseXML = getInverseObj(xml_json_1.default);
var xmlReplacer = getInverseReplacer(inverseXML);
/**
 * Encodes all non-ASCII characters, as well as characters not valid in XML
 * documents using XML entities.
 *
 * If a character has no equivalent entity, a
 * numeric hexadecimal reference (eg. `&#xfc;`) will be used.
 */
exports.encodeXML = getASCIIEncoder(inverseXML);
var entities_json_1 = __importDefault(__webpack_require__(/*! ./maps/entities.json */ "./node_modules/dom-serializer/node_modules/entities/lib/maps/entities.json"));
var inverseHTML = getInverseObj(entities_json_1.default);
var htmlReplacer = getInverseReplacer(inverseHTML);
/**
 * Encodes all entities and non-ASCII characters in the input.
 *
 * This includes characters that are valid ASCII characters in HTML documents.
 * For example `#` will be encoded as `&num;`. To get a more compact output,
 * consider using the `encodeNonAsciiHTML` function.
 *
 * If a character has no equivalent entity, a
 * numeric hexadecimal reference (eg. `&#xfc;`) will be used.
 */
exports.encodeHTML = getInverse(inverseHTML, htmlReplacer);
/**
 * Encodes all non-ASCII characters, as well as characters not valid in HTML
 * documents using HTML entities.
 *
 * If a character has no equivalent entity, a
 * numeric hexadecimal reference (eg. `&#xfc;`) will be used.
 */
exports.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML);
function getInverseObj(obj) {
    return Object.keys(obj)
        .sort()
        .reduce(function (inverse, name) {
        inverse[obj[name]] = "&" + name + ";";
        return inverse;
    }, {});
}
function getInverseReplacer(inverse) {
    var single = [];
    var multiple = [];
    for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {
        var k = _a[_i];
        if (k.length === 1) {
            // Add value to single array
            single.push("\\" + k);
        }
        else {
            // Add value to multiple array
            multiple.push(k);
        }
    }
    // Add ranges to single characters.
    single.sort();
    for (var start = 0; start < single.length - 1; start++) {
        // Find the end of a run of characters
        var end = start;
        while (end < single.length - 1 &&
            single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {
            end += 1;
        }
        var count = 1 + end - start;
        // We want to replace at least three characters
        if (count < 3)
            continue;
        single.splice(start, count, single[start] + "-" + single[end]);
    }
    multiple.unshift("[" + single.join("") + "]");
    return new RegExp(multiple.join("|"), "g");
}
// /[^\0-\x7F]/gu
var reNonASCII = /(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g;
var getCodePoint = 
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
String.prototype.codePointAt != null
    ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
        function (str) { return str.codePointAt(0); }
    : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
        function (c) {
            return (c.charCodeAt(0) - 0xd800) * 0x400 +
                c.charCodeAt(1) -
                0xdc00 +
                0x10000;
        };
function singleCharReplacer(c) {
    return "&#x" + (c.length > 1 ? getCodePoint(c) : c.charCodeAt(0))
        .toString(16)
        .toUpperCase() + ";";
}
function getInverse(inverse, re) {
    return function (data) {
        return data
            .replace(re, function (name) { return inverse[name]; })
            .replace(reNonASCII, singleCharReplacer);
    };
}
var reEscapeChars = new RegExp(xmlReplacer.source + "|" + reNonASCII.source, "g");
/**
 * Encodes all non-ASCII characters, as well as characters not valid in XML
 * documents using numeric hexadecimal reference (eg. `&#xfc;`).
 *
 * Have a look at `escapeUTF8` if you want a more concise output at the expense
 * of reduced transportability.
 *
 * @param data String to escape.
 */
function escape(data) {
    return data.replace(reEscapeChars, singleCharReplacer);
}
exports.escape = escape;
/**
 * Encodes all characters not valid in XML documents using numeric hexadecimal
 * reference (eg. `&#xfc;`).
 *
 * Note that the output will be character-set dependent.
 *
 * @param data String to escape.
 */
function escapeUTF8(data) {
    return data.replace(xmlReplacer, singleCharReplacer);
}
exports.escapeUTF8 = escapeUTF8;
function getASCIIEncoder(obj) {
    return function (data) {
        return data.replace(reEscapeChars, function (c) { return obj[c] || singleCharReplacer(c); });
    };
}


/***/ }),

/***/ "./node_modules/dom-serializer/node_modules/entities/lib/index.js":
/*!************************************************************************!*\
  !*** ./node_modules/dom-serializer/node_modules/entities/lib/index.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";

Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.encodeHTML5 = exports.encodeHTML4 = exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = void 0;
var decode_1 = __webpack_require__(/*! ./decode */ "./node_modules/dom-serializer/node_modules/entities/lib/decode.js");
var encode_1 = __webpack_require__(/*! ./encode */ "./node_modules/dom-serializer/node_modules/entities/lib/encode.js");
/**
 * Decodes a string with entities.
 *
 * @param data String to decode.
 * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.
 * @deprecated Use `decodeXML` or `decodeHTML` directly.
 */
function decode(data, level) {
    return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);
}
exports.decode = decode;
/**
 * Decodes a string with entities. Does not allow missing trailing semicolons for entities.
 *
 * @param data String to decode.
 * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.
 * @deprecated Use `decodeHTMLStrict` or `decodeXML` directly.
 */
function decodeStrict(data, level) {
    return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);
}
exports.decodeStrict = decodeStrict;
/**
 * Encodes a string with entities.
 *
 * @param data String to encode.
 * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.
 * @deprecated Use `encodeHTML`, `encodeXML` or `encodeNonAsciiHTML` directly.
 */
function encode(data, level) {
    return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);
}
exports.encode = encode;
var encode_2 = __webpack_require__(/*! ./encode */ "./node_modules/dom-serializer/node_modules/entities/lib/encode.js");
Object.defineProperty(exports, "encodeXML", ({ enumerable: true, get: function () { return encode_2.encodeXML; } }));
Object.defineProperty(exports, "encodeHTML", ({ enumerable: true, get: function () { return encode_2.encodeHTML; } }));
Object.defineProperty(exports, "encodeNonAsciiHTML", ({ enumerable: true, get: function () { return encode_2.encodeNonAsciiHTML; } }));
Object.defineProperty(exports, "escape", ({ enumerable: true, get: function () { return encode_2.escape; } }));
Object.defineProperty(exports, "escapeUTF8", ({ enumerable: true, get: function () { return encode_2.escapeUTF8; } }));
// Legacy aliases (deprecated)
Object.defineProperty(exports, "encodeHTML4", ({ enumerable: true, get: function () { return encode_2.encodeHTML; } }));
Object.defineProperty(exports, "encodeHTML5", ({ enumerable: true, get: function () { return encode_2.encodeHTML; } }));
var decode_2 = __webpack_require__(/*! ./decode */ "./node_modules/dom-serializer/node_modules/entities/lib/decode.js");
Object.defineProperty(exports, "decodeXML", ({ enumerable: true, get: function () { return decode_2.decodeXML; } }));
Object.defineProperty(exports, "decodeHTML", ({ enumerable: true, get: function () { return decode_2.decodeHTML; } }));
Object.defineProperty(exports, "decodeHTMLStrict", ({ enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } }));
// Legacy aliases (deprecated)
Object.defineProperty(exports, "decodeHTML4", ({ enumerable: true, get: function () { return decode_2.decodeHTML; } }));
Object.defineProperty(exports, "decodeHTML5", ({ enumerable: true, get: function () { return decode_2.decodeHTML; } }));
Object.defineProperty(exports, "decodeHTML4Strict", ({ enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } }));
Object.defineProperty(exports, "decodeHTML5Strict", ({ enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } }));
Object.defineProperty(exports, "decodeXMLStrict", ({ enumerable: true, get: function () { return decode_2.decodeXML; } }));


/***/ }),

/***/ "./node_modules/domelementtype/index.js":
/*!**********************************************!*\
  !*** ./node_modules/domelementtype/index.js ***!
  \**********************************************/
/***/ ((module) => {

//Types of elements found in the DOM
module.exports = {
	Text: "text", //Text
	Directive: "directive", //<? ... ?>
	Comment: "comment", //<!-- ... -->
	Script: "script", //<script> tags
	Style: "style", //<style> tags
	Tag: "tag", //Any tag
	CDATA: "cdata", //<![CDATA[ ... ]]>
	Doctype: "doctype",

	isTag: function(elem){
		return elem.type === "tag" || elem.type === "script" || elem.type === "style";
	}
};


/***/ }),

/***/ "./node_modules/domhandler/index.js":
/*!******************************************!*\
  !*** ./node_modules/domhandler/index.js ***!
  \******************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ElementType = __webpack_require__(/*! domelementtype */ "./node_modules/domelementtype/index.js");

var re_whitespace = /\s+/g;
var NodePrototype = __webpack_require__(/*! ./lib/node */ "./node_modules/domhandler/lib/node.js");
var ElementPrototype = __webpack_require__(/*! ./lib/element */ "./node_modules/domhandler/lib/element.js");

function DomHandler(callback, options, elementCB){
	if(typeof callback === "object"){
		elementCB = options;
		options = callback;
		callback = null;
	} else if(typeof options === "function"){
		elementCB = options;
		options = defaultOpts;
	}
	this._callback = callback;
	this._options = options || defaultOpts;
	this._elementCB = elementCB;
	this.dom = [];
	this._done = false;
	this._tagStack = [];
	this._parser = this._parser || null;
}

//default options
var defaultOpts = {
	normalizeWhitespace: false, //Replace all whitespace with single spaces
	withStartIndices: false, //Add startIndex properties to nodes
	withEndIndices: false, //Add endIndex properties to nodes
};

DomHandler.prototype.onparserinit = function(parser){
	this._parser = parser;
};

//Resets the handler back to starting state
DomHandler.prototype.onreset = function(){
	DomHandler.call(this, this._callback, this._options, this._elementCB);
};

//Signals the handler that parsing is done
DomHandler.prototype.onend = function(){
	if(this._done) return;
	this._done = true;
	this._parser = null;
	this._handleCallback(null);
};

DomHandler.prototype._handleCallback =
DomHandler.prototype.onerror = function(error){
	if(typeof this._callback === "function"){
		this._callback(error, this.dom);
	} else {
		if(error) throw error;
	}
};

DomHandler.prototype.onclosetag = function(){
	//if(this._tagStack.pop().name !== name) this._handleCallback(Error("Tagname didn't match!"));
	
	var elem = this._tagStack.pop();

	if(this._options.withEndIndices && elem){
		elem.endIndex = this._parser.endIndex;
	}

	if(this._elementCB) this._elementCB(elem);
};

DomHandler.prototype._createDomElement = function(properties){
	if (!this._options.withDomLvl1) return properties;

	var element;
	if (properties.type === "tag") {
		element = Object.create(ElementPrototype);
	} else {
		element = Object.create(NodePrototype);
	}

	for (var key in properties) {
		if (properties.hasOwnProperty(key)) {
			element[key] = properties[key];
		}
	}

	return element;
};

DomHandler.prototype._addDomElement = function(element){
	var parent = this._tagStack[this._tagStack.length - 1];
	var siblings = parent ? parent.children : this.dom;
	var previousSibling = siblings[siblings.length - 1];

	element.next = null;

	if(this._options.withStartIndices){
		element.startIndex = this._parser.startIndex;
	}
	if(this._options.withEndIndices){
		element.endIndex = this._parser.endIndex;
	}

	if(previousSibling){
		element.prev = previousSibling;
		previousSibling.next = element;
	} else {
		element.prev = null;
	}

	siblings.push(element);
	element.parent = parent || null;
};

DomHandler.prototype.onopentag = function(name, attribs){
	var properties = {
		type: name === "script" ? ElementType.Script : name === "style" ? ElementType.Style : ElementType.Tag,
		name: name,
		attribs: attribs,
		children: []
	};

	var element = this._createDomElement(properties);

	this._addDomElement(element);

	this._tagStack.push(element);
};

DomHandler.prototype.ontext = function(data){
	//the ignoreWhitespace is officially dropped, but for now,
	//it's an alias for normalizeWhitespace
	var normalize = this._options.normalizeWhitespace || this._options.ignoreWhitespace;

	var lastTag;

	if(!this._tagStack.length && this.dom.length && (lastTag = this.dom[this.dom.length-1]).type === ElementType.Text){
		if(normalize){
			lastTag.data = (lastTag.data + data).replace(re_whitespace, " ");
		} else {
			lastTag.data += data;
		}
	} else {
		if(
			this._tagStack.length &&
			(lastTag = this._tagStack[this._tagStack.length - 1]) &&
			(lastTag = lastTag.children[lastTag.children.length - 1]) &&
			lastTag.type === ElementType.Text
		){
			if(normalize){
				lastTag.data = (lastTag.data + data).replace(re_whitespace, " ");
			} else {
				lastTag.data += data;
			}
		} else {
			if(normalize){
				data = data.replace(re_whitespace, " ");
			}

			var element = this._createDomElement({
				data: data,
				type: ElementType.Text
			});

			this._addDomElement(element);
		}
	}
};

DomHandler.prototype.oncomment = function(data){
	var lastTag = this._tagStack[this._tagStack.length - 1];

	if(lastTag && lastTag.type === ElementType.Comment){
		lastTag.data += data;
		return;
	}

	var properties = {
		data: data,
		type: ElementType.Comment
	};

	var element = this._createDomElement(properties);

	this._addDomElement(element);
	this._tagStack.push(element);
};

DomHandler.prototype.oncdatastart = function(){
	var properties = {
		children: [{
			data: "",
			type: ElementType.Text
		}],
		type: ElementType.CDATA
	};

	var element = this._createDomElement(properties);

	this._addDomElement(element);
	this._tagStack.push(element);
};

DomHandler.prototype.oncommentend = DomHandler.prototype.oncdataend = function(){
	this._tagStack.pop();
};

DomHandler.prototype.onprocessinginstruction = function(name, data){
	var element = this._createDomElement({
		name: name,
		data: data,
		type: ElementType.Directive
	});

	this._addDomElement(element);
};

module.exports = DomHandler;


/***/ }),

/***/ "./node_modules/domhandler/lib/element.js":
/*!************************************************!*\
  !*** ./node_modules/domhandler/lib/element.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// DOM-Level-1-compliant structure
var NodePrototype = __webpack_require__(/*! ./node */ "./node_modules/domhandler/lib/node.js");
var ElementPrototype = module.exports = Object.create(NodePrototype);

var domLvl1 = {
	tagName: "name"
};

Object.keys(domLvl1).forEach(function(key) {
	var shorthand = domLvl1[key];
	Object.defineProperty(ElementPrototype, key, {
		get: function() {
			return this[shorthand] || null;
		},
		set: function(val) {
			this[shorthand] = val;
			return val;
		}
	});
});


/***/ }),

/***/ "./node_modules/domhandler/lib/node.js":
/*!*********************************************!*\
  !*** ./node_modules/domhandler/lib/node.js ***!
  \*********************************************/
/***/ ((module) => {

// This object will be used as the prototype for Nodes when creating a
// DOM-Level-1-compliant structure.
var NodePrototype = module.exports = {
	get firstChild() {
		var children = this.children;
		return children && children[0] || null;
	},
	get lastChild() {
		var children = this.children;
		return children && children[children.length - 1] || null;
	},
	get nodeType() {
		return nodeTypes[this.type] || nodeTypes.element;
	}
};

var domLvl1 = {
	tagName: "name",
	childNodes: "children",
	parentNode: "parent",
	previousSibling: "prev",
	nextSibling: "next",
	nodeValue: "data"
};

var nodeTypes = {
	element: 1,
	text: 3,
	cdata: 4,
	comment: 8
};

Object.keys(domLvl1).forEach(function(key) {
	var shorthand = domLvl1[key];
	Object.defineProperty(NodePrototype, key, {
		get: function() {
			return this[shorthand] || null;
		},
		set: function(val) {
			this[shorthand] = val;
			return val;
		}
	});
});


/***/ }),

/***/ "./node_modules/domutils/index.js":
/*!****************************************!*\
  !*** ./node_modules/domutils/index.js ***!
  \****************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var DomUtils = module.exports;

[
	__webpack_require__(/*! ./lib/stringify */ "./node_modules/domutils/lib/stringify.js"),
	__webpack_require__(/*! ./lib/traversal */ "./node_modules/domutils/lib/traversal.js"),
	__webpack_require__(/*! ./lib/manipulation */ "./node_modules/domutils/lib/manipulation.js"),
	__webpack_require__(/*! ./lib/querying */ "./node_modules/domutils/lib/querying.js"),
	__webpack_require__(/*! ./lib/legacy */ "./node_modules/domutils/lib/legacy.js"),
	__webpack_require__(/*! ./lib/helpers */ "./node_modules/domutils/lib/helpers.js")
].forEach(function(ext){
	Object.keys(ext).forEach(function(key){
		DomUtils[key] = ext[key].bind(DomUtils);
	});
});


/***/ }),

/***/ "./node_modules/domutils/lib/helpers.js":
/*!**********************************************!*\
  !*** ./node_modules/domutils/lib/helpers.js ***!
  \**********************************************/
/***/ ((__unused_webpack_module, exports) => {

// removeSubsets
// Given an array of nodes, remove any member that is contained by another.
exports.removeSubsets = function(nodes) {
	var idx = nodes.length, node, ancestor, replace;

	// Check if each node (or one of its ancestors) is already contained in the
	// array.
	while (--idx > -1) {
		node = ancestor = nodes[idx];

		// Temporarily remove the node under consideration
		nodes[idx] = null;
		replace = true;

		while (ancestor) {
			if (nodes.indexOf(ancestor) > -1) {
				replace = false;
				nodes.splice(idx, 1);
				break;
			}
			ancestor = ancestor.parent;
		}

		// If the node has been found to be unique, re-insert it.
		if (replace) {
			nodes[idx] = node;
		}
	}

	return nodes;
};

// Source: http://dom.spec.whatwg.org/#dom-node-comparedocumentposition
var POSITION = {
	DISCONNECTED: 1,
	PRECEDING: 2,
	FOLLOWING: 4,
	CONTAINS: 8,
	CONTAINED_BY: 16
};

// Compare the position of one node against another node in any other document.
// The return value is a bitmask with the following values:
//
// document order:
// > There is an ordering, document order, defined on all the nodes in the
// > document corresponding to the order in which the first character of the
// > XML representation of each node occurs in the XML representation of the
// > document after expansion of general entities. Thus, the document element
// > node will be the first node. Element nodes occur before their children.
// > Thus, document order orders element nodes in order of the occurrence of
// > their start-tag in the XML (after expansion of entities). The attribute
// > nodes of an element occur after the element and before its children. The
// > relative order of attribute nodes is implementation-dependent./
// Source:
// http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order
//
// @argument {Node} nodaA The first node to use in the comparison
// @argument {Node} nodeB The second node to use in the comparison
//
// @return {Number} A bitmask describing the input nodes' relative position.
//         See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for
//         a description of these values.
var comparePos = exports.compareDocumentPosition = function(nodeA, nodeB) {
	var aParents = [];
	var bParents = [];
	var current, sharedParent, siblings, aSibling, bSibling, idx;

	if (nodeA === nodeB) {
		return 0;
	}

	current = nodeA;
	while (current) {
		aParents.unshift(current);
		current = current.parent;
	}
	current = nodeB;
	while (current) {
		bParents.unshift(current);
		current = current.parent;
	}

	idx = 0;
	while (aParents[idx] === bParents[idx]) {
		idx++;
	}

	if (idx === 0) {
		return POSITION.DISCONNECTED;
	}

	sharedParent = aParents[idx - 1];
	siblings = sharedParent.children;
	aSibling = aParents[idx];
	bSibling = bParents[idx];

	if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {
		if (sharedParent === nodeB) {
			return POSITION.FOLLOWING | POSITION.CONTAINED_BY;
		}
		return POSITION.FOLLOWING;
	} else {
		if (sharedParent === nodeA) {
			return POSITION.PRECEDING | POSITION.CONTAINS;
		}
		return POSITION.PRECEDING;
	}
};

// Sort an array of nodes based on their relative position in the document and
// remove any duplicate nodes. If the array contains nodes that do not belong
// to the same document, sort order is unspecified.
//
// @argument {Array} nodes Array of DOM nodes
//
// @returns {Array} collection of unique nodes, sorted in document order
exports.uniqueSort = function(nodes) {
	var idx = nodes.length, node, position;

	nodes = nodes.slice();

	while (--idx > -1) {
		node = nodes[idx];
		position = nodes.indexOf(node);
		if (position > -1 && position < idx) {
			nodes.splice(idx, 1);
		}
	}
	nodes.sort(function(a, b) {
		var relative = comparePos(a, b);
		if (relative & POSITION.PRECEDING) {
			return -1;
		} else if (relative & POSITION.FOLLOWING) {
			return 1;
		}
		return 0;
	});

	return nodes;
};


/***/ }),

/***/ "./node_modules/domutils/lib/legacy.js":
/*!*********************************************!*\
  !*** ./node_modules/domutils/lib/legacy.js ***!
  \*********************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var ElementType = __webpack_require__(/*! domelementtype */ "./node_modules/domelementtype/index.js");
var isTag = exports.isTag = ElementType.isTag;

exports.testElement = function(options, element){
	for(var key in options){
		if(!options.hasOwnProperty(key));
		else if(key === "tag_name"){
			if(!isTag(element) || !options.tag_name(element.name)){
				return false;
			}
		} else if(key === "tag_type"){
			if(!options.tag_type(element.type)) return false;
		} else if(key === "tag_contains"){
			if(isTag(element) || !options.tag_contains(element.data)){
				return false;
			}
		} else if(!element.attribs || !options[key](element.attribs[key])){
			return false;
		}
	}
	return true;
};

var Checks = {
	tag_name: function(name){
		if(typeof name === "function"){
			return function(elem){ return isTag(elem) && name(elem.name); };
		} else if(name === "*"){
			return isTag;
		} else {
			return function(elem){ return isTag(elem) && elem.name === name; };
		}
	},
	tag_type: function(type){
		if(typeof type === "function"){
			return function(elem){ return type(elem.type); };
		} else {
			return function(elem){ return elem.type === type; };
		}
	},
	tag_contains: function(data){
		if(typeof data === "function"){
			return function(elem){ return !isTag(elem) && data(elem.data); };
		} else {
			return function(elem){ return !isTag(elem) && elem.data === data; };
		}
	}
};

function getAttribCheck(attrib, value){
	if(typeof value === "function"){
		return function(elem){ return elem.attribs && value(elem.attribs[attrib]); };
	} else {
		return function(elem){ return elem.attribs && elem.attribs[attrib] === value; };
	}
}

function combineFuncs(a, b){
	return function(elem){
		return a(elem) || b(elem);
	};
}

exports.getElements = function(options, element, recurse, limit){
	var funcs = Object.keys(options).map(function(key){
		var value = options[key];
		return key in Checks ? Checks[key](value) : getAttribCheck(key, value);
	});

	return funcs.length === 0 ? [] : this.filter(
		funcs.reduce(combineFuncs),
		element, recurse, limit
	);
};

exports.getElementById = function(id, element, recurse){
	if(!Array.isArray(element)) element = [element];
	return this.findOne(getAttribCheck("id", id), element, recurse !== false);
};

exports.getElementsByTagName = function(name, element, recurse, limit){
	return this.filter(Checks.tag_name(name), element, recurse, limit);
};

exports.getElementsByTagType = function(type, element, recurse, limit){
	return this.filter(Checks.tag_type(type), element, recurse, limit);
};


/***/ }),

/***/ "./node_modules/domutils/lib/manipulation.js":
/*!***************************************************!*\
  !*** ./node_modules/domutils/lib/manipulation.js ***!
  \***************************************************/
/***/ ((__unused_webpack_module, exports) => {

exports.removeElement = function(elem){
	if(elem.prev) elem.prev.next = elem.next;
	if(elem.next) elem.next.prev = elem.prev;

	if(elem.parent){
		var childs = elem.parent.children;
		childs.splice(childs.lastIndexOf(elem), 1);
	}
};

exports.replaceElement = function(elem, replacement){
	var prev = replacement.prev = elem.prev;
	if(prev){
		prev.next = replacement;
	}

	var next = replacement.next = elem.next;
	if(next){
		next.prev = replacement;
	}

	var parent = replacement.parent = elem.parent;
	if(parent){
		var childs = parent.children;
		childs[childs.lastIndexOf(elem)] = replacement;
	}
};

exports.appendChild = function(elem, child){
	child.parent = elem;

	if(elem.children.push(child) !== 1){
		var sibling = elem.children[elem.children.length - 2];
		sibling.next = child;
		child.prev = sibling;
		child.next = null;
	}
};

exports.append = function(elem, next){
	var parent = elem.parent,
		currNext = elem.next;

	next.next = currNext;
	next.prev = elem;
	elem.next = next;
	next.parent = parent;

	if(currNext){
		currNext.prev = next;
		if(parent){
			var childs = parent.children;
			childs.splice(childs.lastIndexOf(currNext), 0, next);
		}
	} else if(parent){
		parent.children.push(next);
	}
};

exports.prepend = function(elem, prev){
	var parent = elem.parent;
	if(parent){
		var childs = parent.children;
		childs.splice(childs.lastIndexOf(elem), 0, prev);
	}

	if(elem.prev){
		elem.prev.next = prev;
	}
	
	prev.parent = parent;
	prev.prev = elem.prev;
	prev.next = elem;
	elem.prev = prev;
};




/***/ }),

/***/ "./node_modules/domutils/lib/querying.js":
/*!***********************************************!*\
  !*** ./node_modules/domutils/lib/querying.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isTag = (__webpack_require__(/*! domelementtype */ "./node_modules/domelementtype/index.js").isTag);

module.exports = {
	filter: filter,
	find: find,
	findOneChild: findOneChild,
	findOne: findOne,
	existsOne: existsOne,
	findAll: findAll
};

function filter(test, element, recurse, limit){
	if(!Array.isArray(element)) element = [element];

	if(typeof limit !== "number" || !isFinite(limit)){
		limit = Infinity;
	}
	return find(test, element, recurse !== false, limit);
}

function find(test, elems, recurse, limit){
	var result = [], childs;

	for(var i = 0, j = elems.length; i < j; i++){
		if(test(elems[i])){
			result.push(elems[i]);
			if(--limit <= 0) break;
		}

		childs = elems[i].children;
		if(recurse && childs && childs.length > 0){
			childs = find(test, childs, recurse, limit);
			result = result.concat(childs);
			limit -= childs.length;
			if(limit <= 0) break;
		}
	}

	return result;
}

function findOneChild(test, elems){
	for(var i = 0, l = elems.length; i < l; i++){
		if(test(elems[i])) return elems[i];
	}

	return null;
}

function findOne(test, elems){
	var elem = null;

	for(var i = 0, l = elems.length; i < l && !elem; i++){
		if(!isTag(elems[i])){
			continue;
		} else if(test(elems[i])){
			elem = elems[i];
		} else if(elems[i].children.length > 0){
			elem = findOne(test, elems[i].children);
		}
	}

	return elem;
}

function existsOne(test, elems){
	for(var i = 0, l = elems.length; i < l; i++){
		if(
			isTag(elems[i]) && (
				test(elems[i]) || (
					elems[i].children.length > 0 &&
					existsOne(test, elems[i].children)
				)
			)
		){
			return true;
		}
	}

	return false;
}

function findAll(test, rootElems){
	var result = [];
	var stack = rootElems.slice();
	while(stack.length){
		var elem = stack.shift();
		if(!isTag(elem)) continue;
		if (elem.children && elem.children.length > 0) {
			stack.unshift.apply(stack, elem.children);
		}
		if(test(elem)) result.push(elem);
	}
	return result;
}


/***/ }),

/***/ "./node_modules/domutils/lib/stringify.js":
/*!************************************************!*\
  !*** ./node_modules/domutils/lib/stringify.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ElementType = __webpack_require__(/*! domelementtype */ "./node_modules/domelementtype/index.js"),
    getOuterHTML = __webpack_require__(/*! dom-serializer */ "./node_modules/dom-serializer/index.js"),
    isTag = ElementType.isTag;

module.exports = {
	getInnerHTML: getInnerHTML,
	getOuterHTML: getOuterHTML,
	getText: getText
};

function getInnerHTML(elem, opts){
	return elem.children ? elem.children.map(function(elem){
		return getOuterHTML(elem, opts);
	}).join("") : "";
}

function getText(elem){
	if(Array.isArray(elem)) return elem.map(getText).join("");
	if(isTag(elem)) return elem.name === "br" ? "\n" : getText(elem.children);
	if(elem.type === ElementType.CDATA) return getText(elem.children);
	if(elem.type === ElementType.Text) return elem.data;
	return "";
}


/***/ }),

/***/ "./node_modules/domutils/lib/traversal.js":
/*!************************************************!*\
  !*** ./node_modules/domutils/lib/traversal.js ***!
  \************************************************/
/***/ ((__unused_webpack_module, exports) => {

var getChildren = exports.getChildren = function(elem){
	return elem.children;
};

var getParent = exports.getParent = function(elem){
	return elem.parent;
};

exports.getSiblings = function(elem){
	var parent = getParent(elem);
	return parent ? getChildren(parent) : [elem];
};

exports.getAttributeValue = function(elem, name){
	return elem.attribs && elem.attribs[name];
};

exports.hasAttrib = function(elem, name){
	return !!elem.attribs && hasOwnProperty.call(elem.attribs, name);
};

exports.getName = function(elem){
	return elem.name;
};


/***/ }),

/***/ "./node_modules/entities/lib/decode_codepoint.js":
/*!*******************************************************!*\
  !*** ./node_modules/entities/lib/decode_codepoint.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var decodeMap = __webpack_require__(/*! ../maps/decode.json */ "./node_modules/entities/maps/decode.json");

module.exports = decodeCodePoint;

// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119
function decodeCodePoint(codePoint) {
    if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
        return "\uFFFD";
    }

    if (codePoint in decodeMap) {
        codePoint = decodeMap[codePoint];
    }

    var output = "";

    if (codePoint > 0xffff) {
        codePoint -= 0x10000;
        output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
        codePoint = 0xdc00 | (codePoint & 0x3ff);
    }

    output += String.fromCharCode(codePoint);
    return output;
}


/***/ }),

/***/ "./node_modules/events/events.js":
/*!***************************************!*\
  !*** ./node_modules/events/events.js ***!
  \***************************************/
/***/ ((module) => {

"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.



var R = typeof Reflect === 'object' ? Reflect : null
var ReflectApply = R && typeof R.apply === 'function'
  ? R.apply
  : function ReflectApply(target, receiver, args) {
    return Function.prototype.apply.call(target, receiver, args);
  }

var ReflectOwnKeys
if (R && typeof R.ownKeys === 'function') {
  ReflectOwnKeys = R.ownKeys
} else if (Object.getOwnPropertySymbols) {
  ReflectOwnKeys = function ReflectOwnKeys(target) {
    return Object.getOwnPropertyNames(target)
      .concat(Object.getOwnPropertySymbols(target));
  };
} else {
  ReflectOwnKeys = function ReflectOwnKeys(target) {
    return Object.getOwnPropertyNames(target);
  };
}

function ProcessEmitWarning(warning) {
  if (console && console.warn) console.warn(warning);
}

var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {
  return value !== value;
}

function EventEmitter() {
  EventEmitter.init.call(this);
}
module.exports = EventEmitter;
module.exports.once = once;

// Backwards-compat with node 0.10.x
EventEmitter.EventEmitter = EventEmitter;

EventEmitter.prototype._events = undefined;
EventEmitter.prototype._eventsCount = 0;
EventEmitter.prototype._maxListeners = undefined;

// By default EventEmitters will print a warning if more than 10 listeners are
// added to it. This is a useful default which helps finding memory leaks.
var defaultMaxListeners = 10;

function checkListener(listener) {
  if (typeof listener !== 'function') {
    throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
  }
}

Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
  enumerable: true,
  get: function() {
    return defaultMaxListeners;
  },
  set: function(arg) {
    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {
      throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.');
    }
    defaultMaxListeners = arg;
  }
});

EventEmitter.init = function() {

  if (this._events === undefined ||
      this._events === Object.getPrototypeOf(this)._events) {
    this._events = Object.create(null);
    this._eventsCount = 0;
  }

  this._maxListeners = this._maxListeners || undefined;
};

// Obviously not all Emitters should be limited to 10. This function allows
// that to be increased. Set to zero for unlimited.
EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {
  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {
    throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.');
  }
  this._maxListeners = n;
  return this;
};

function _getMaxListeners(that) {
  if (that._maxListeners === undefined)
    return EventEmitter.defaultMaxListeners;
  return that._maxListeners;
}

EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
  return _getMaxListeners(this);
};

EventEmitter.prototype.emit = function emit(type) {
  var args = [];
  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);
  var doError = (type === 'error');

  var events = this._events;
  if (events !== undefined)
    doError = (doError && events.error === undefined);
  else if (!doError)
    return false;

  // If there is no 'error' event listener then throw.
  if (doError) {
    var er;
    if (args.length > 0)
      er = args[0];
    if (er instanceof Error) {
      // Note: The comments on the `throw` lines are intentional, they show
      // up in Node's output if this results in an unhandled exception.
      throw er; // Unhandled 'error' event
    }
    // At least give some kind of context to the user
    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));
    err.context = er;
    throw err; // Unhandled 'error' event
  }

  var handler = events[type];

  if (handler === undefined)
    return false;

  if (typeof handler === 'function') {
    ReflectApply(handler, this, args);
  } else {
    var len = handler.length;
    var listeners = arrayClone(handler, len);
    for (var i = 0; i < len; ++i)
      ReflectApply(listeners[i], this, args);
  }

  return true;
};

function _addListener(target, type, listener, prepend) {
  var m;
  var events;
  var existing;

  checkListener(listener);

  events = target._events;
  if (events === undefined) {
    events = target._events = Object.create(null);
    target._eventsCount = 0;
  } else {
    // To avoid recursion in the case that type === "newListener"! Before
    // adding it to the listeners, first emit "newListener".
    if (events.newListener !== undefined) {
      target.emit('newListener', type,
                  listener.listener ? listener.listener : listener);

      // Re-assign `events` because a newListener handler could have caused the
      // this._events to be assigned to a new object
      events = target._events;
    }
    existing = events[type];
  }

  if (existing === undefined) {
    // Optimize the case of one listener. Don't need the extra array object.
    existing = events[type] = listener;
    ++target._eventsCount;
  } else {
    if (typeof existing === 'function') {
      // Adding the second element, need to change to array.
      existing = events[type] =
        prepend ? [listener, existing] : [existing, listener];
      // If we've already got an array, just append.
    } else if (prepend) {
      existing.unshift(listener);
    } else {
      existing.push(listener);
    }

    // Check for listener leak
    m = _getMaxListeners(target);
    if (m > 0 && existing.length > m && !existing.warned) {
      existing.warned = true;
      // No error code for this since it is a Warning
      // eslint-disable-next-line no-restricted-syntax
      var w = new Error('Possible EventEmitter memory leak detected. ' +
                          existing.length + ' ' + String(type) + ' listeners ' +
                          'added. Use emitter.setMaxListeners() to ' +
                          'increase limit');
      w.name = 'MaxListenersExceededWarning';
      w.emitter = target;
      w.type = type;
      w.count = existing.length;
      ProcessEmitWarning(w);
    }
  }

  return target;
}

EventEmitter.prototype.addListener = function addListener(type, listener) {
  return _addListener(this, type, listener, false);
};

EventEmitter.prototype.on = EventEmitter.prototype.addListener;

EventEmitter.prototype.prependListener =
    function prependListener(type, listener) {
      return _addListener(this, type, listener, true);
    };

function onceWrapper() {
  if (!this.fired) {
    this.target.removeListener(this.type, this.wrapFn);
    this.fired = true;
    if (arguments.length === 0)
      return this.listener.call(this.target);
    return this.listener.apply(this.target, arguments);
  }
}

function _onceWrap(target, type, listener) {
  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };
  var wrapped = onceWrapper.bind(state);
  wrapped.listener = listener;
  state.wrapFn = wrapped;
  return wrapped;
}

EventEmitter.prototype.once = function once(type, listener) {
  checkListener(listener);
  this.on(type, _onceWrap(this, type, listener));
  return this;
};

EventEmitter.prototype.prependOnceListener =
    function prependOnceListener(type, listener) {
      checkListener(listener);
      this.prependListener(type, _onceWrap(this, type, listener));
      return this;
    };

// Emits a 'removeListener' event if and only if the listener was removed.
EventEmitter.prototype.removeListener =
    function removeListener(type, listener) {
      var list, events, position, i, originalListener;

      checkListener(listener);

      events = this._events;
      if (events === undefined)
        return this;

      list = events[type];
      if (list === undefined)
        return this;

      if (list === listener || list.listener === listener) {
        if (--this._eventsCount === 0)
          this._events = Object.create(null);
        else {
          delete events[type];
          if (events.removeListener)
            this.emit('removeListener', type, list.listener || listener);
        }
      } else if (typeof list !== 'function') {
        position = -1;

        for (i = list.length - 1; i >= 0; i--) {
          if (list[i] === listener || list[i].listener === listener) {
            originalListener = list[i].listener;
            position = i;
            break;
          }
        }

        if (position < 0)
          return this;

        if (position === 0)
          list.shift();
        else {
          spliceOne(list, position);
        }

        if (list.length === 1)
          events[type] = list[0];

        if (events.removeListener !== undefined)
          this.emit('removeListener', type, originalListener || listener);
      }

      return this;
    };

EventEmitter.prototype.off = EventEmitter.prototype.removeListener;

EventEmitter.prototype.removeAllListeners =
    function removeAllListeners(type) {
      var listeners, events, i;

      events = this._events;
      if (events === undefined)
        return this;

      // not listening for removeListener, no need to emit
      if (events.removeListener === undefined) {
        if (arguments.length === 0) {
          this._events = Object.create(null);
          this._eventsCount = 0;
        } else if (events[type] !== undefined) {
          if (--this._eventsCount === 0)
            this._events = Object.create(null);
          else
            delete events[type];
        }
        return this;
      }

      // emit removeListener for all listeners on all events
      if (arguments.length === 0) {
        var keys = Object.keys(events);
        var key;
        for (i = 0; i < keys.length; ++i) {
          key = keys[i];
          if (key === 'removeListener') continue;
          this.removeAllListeners(key);
        }
        this.removeAllListeners('removeListener');
        this._events = Object.create(null);
        this._eventsCount = 0;
        return this;
      }

      listeners = events[type];

      if (typeof listeners === 'function') {
        this.removeListener(type, listeners);
      } else if (listeners !== undefined) {
        // LIFO order
        for (i = listeners.length - 1; i >= 0; i--) {
          this.removeListener(type, listeners[i]);
        }
      }

      return this;
    };

function _listeners(target, type, unwrap) {
  var events = target._events;

  if (events === undefined)
    return [];

  var evlistener = events[type];
  if (evlistener === undefined)
    return [];

  if (typeof evlistener === 'function')
    return unwrap ? [evlistener.listener || evlistener] : [evlistener];

  return unwrap ?
    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
}

EventEmitter.prototype.listeners = function listeners(type) {
  return _listeners(this, type, true);
};

EventEmitter.prototype.rawListeners = function rawListeners(type) {
  return _listeners(this, type, false);
};

EventEmitter.listenerCount = function(emitter, type) {
  if (typeof emitter.listenerCount === 'function') {
    return emitter.listenerCount(type);
  } else {
    return listenerCount.call(emitter, type);
  }
};

EventEmitter.prototype.listenerCount = listenerCount;
function listenerCount(type) {
  var events = this._events;

  if (events !== undefined) {
    var evlistener = events[type];

    if (typeof evlistener === 'function') {
      return 1;
    } else if (evlistener !== undefined) {
      return evlistener.length;
    }
  }

  return 0;
}

EventEmitter.prototype.eventNames = function eventNames() {
  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
};

function arrayClone(arr, n) {
  var copy = new Array(n);
  for (var i = 0; i < n; ++i)
    copy[i] = arr[i];
  return copy;
}

function spliceOne(list, index) {
  for (; index + 1 < list.length; index++)
    list[index] = list[index + 1];
  list.pop();
}

function unwrapListeners(arr) {
  var ret = new Array(arr.length);
  for (var i = 0; i < ret.length; ++i) {
    ret[i] = arr[i].listener || arr[i];
  }
  return ret;
}

function once(emitter, name) {
  return new Promise(function (resolve, reject) {
    function errorListener(err) {
      emitter.removeListener(name, resolver);
      reject(err);
    }

    function resolver() {
      if (typeof emitter.removeListener === 'function') {
        emitter.removeListener('error', errorListener);
      }
      resolve([].slice.call(arguments));
    };

    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });
    if (name !== 'error') {
      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });
    }
  });
}

function addErrorHandlerIfEventEmitter(emitter, handler, flags) {
  if (typeof emitter.on === 'function') {
    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);
  }
}

function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
  if (typeof emitter.on === 'function') {
    if (flags.once) {
      emitter.once(name, listener);
    } else {
      emitter.on(name, listener);
    }
  } else if (typeof emitter.addEventListener === 'function') {
    // EventTarget does not have `error` event semantics like Node
    // EventEmitters, we do not listen for `error` events here.
    emitter.addEventListener(name, function wrapListener(arg) {
      // IE does not have builtin `{ once: true }` support so we
      // have to do it manually.
      if (flags.once) {
        emitter.removeEventListener(name, wrapListener);
      }
      listener(arg);
    });
  } else {
    throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter);
  }
}


/***/ }),

/***/ "./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js ***!
  \**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var reactIs = __webpack_require__(/*! react-is */ "./node_modules/hoist-non-react-statics/node_modules/react-is/index.js");

/**
 * Copyright 2015, Yahoo! Inc.
 * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
 */
var REACT_STATICS = {
  childContextTypes: true,
  contextType: true,
  contextTypes: true,
  defaultProps: true,
  displayName: true,
  getDefaultProps: true,
  getDerivedStateFromError: true,
  getDerivedStateFromProps: true,
  mixins: true,
  propTypes: true,
  type: true
};
var KNOWN_STATICS = {
  name: true,
  length: true,
  prototype: true,
  caller: true,
  callee: true,
  arguments: true,
  arity: true
};
var FORWARD_REF_STATICS = {
  '$$typeof': true,
  render: true,
  defaultProps: true,
  displayName: true,
  propTypes: true
};
var MEMO_STATICS = {
  '$$typeof': true,
  compare: true,
  defaultProps: true,
  displayName: true,
  propTypes: true,
  type: true
};
var TYPE_STATICS = {};
TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;
TYPE_STATICS[reactIs.Memo] = MEMO_STATICS;

function getStatics(component) {
  // React v16.11 and below
  if (reactIs.isMemo(component)) {
    return MEMO_STATICS;
  } // React v16.12 and above


  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;
}

var defineProperty = Object.defineProperty;
var getOwnPropertyNames = Object.getOwnPropertyNames;
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
var getPrototypeOf = Object.getPrototypeOf;
var objectPrototype = Object.prototype;
function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {
  if (typeof sourceComponent !== 'string') {
    // don't hoist over string (html) components
    if (objectPrototype) {
      var inheritedComponent = getPrototypeOf(sourceComponent);

      if (inheritedComponent && inheritedComponent !== objectPrototype) {
        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);
      }
    }

    var keys = getOwnPropertyNames(sourceComponent);

    if (getOwnPropertySymbols) {
      keys = keys.concat(getOwnPropertySymbols(sourceComponent));
    }

    var targetStatics = getStatics(targetComponent);
    var sourceStatics = getStatics(sourceComponent);

    for (var i = 0; i < keys.length; ++i) {
      var key = keys[i];

      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {
        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);

        try {
          // Avoid failures from read-only properties
          defineProperty(targetComponent, key, descriptor);
        } catch (e) {}
      }
    }
  }

  return targetComponent;
}

module.exports = hoistNonReactStatics;


/***/ }),

/***/ "./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js":
/*!************************************************************************************************!*\
  !*** ./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js ***!
  \************************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";
/** @license React v16.13.1
 * react-is.development.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */





if (true) {
  (function() {
'use strict';

// The Symbol used to tag the ReactElement-like types. If there is no native Symbol
// nor polyfill, then a plain number is used for performance.
var hasSymbol = typeof Symbol === 'function' && Symbol.for;
var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
// (unstable) APIs that have been removed. Can we remove the symbols?

var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;
var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;

function isValidElementType(type) {
  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
}

function typeOf(object) {
  if (typeof object === 'object' && object !== null) {
    var $$typeof = object.$$typeof;

    switch ($$typeof) {
      case REACT_ELEMENT_TYPE:
        var type = object.type;

        switch (type) {
          case REACT_ASYNC_MODE_TYPE:
          case REACT_CONCURRENT_MODE_TYPE:
          case REACT_FRAGMENT_TYPE:
          case REACT_PROFILER_TYPE:
          case REACT_STRICT_MODE_TYPE:
          case REACT_SUSPENSE_TYPE:
            return type;

          default:
            var $$typeofType = type && type.$$typeof;

            switch ($$typeofType) {
              case REACT_CONTEXT_TYPE:
              case REACT_FORWARD_REF_TYPE:
              case REACT_LAZY_TYPE:
              case REACT_MEMO_TYPE:
              case REACT_PROVIDER_TYPE:
                return $$typeofType;

              default:
                return $$typeof;
            }

        }

      case REACT_PORTAL_TYPE:
        return $$typeof;
    }
  }

  return undefined;
} // AsyncMode is deprecated along with isAsyncMode

var AsyncMode = REACT_ASYNC_MODE_TYPE;
var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
var ContextConsumer = REACT_CONTEXT_TYPE;
var ContextProvider = REACT_PROVIDER_TYPE;
var Element = REACT_ELEMENT_TYPE;
var ForwardRef = REACT_FORWARD_REF_TYPE;
var Fragment = REACT_FRAGMENT_TYPE;
var Lazy = REACT_LAZY_TYPE;
var Memo = REACT_MEMO_TYPE;
var Portal = REACT_PORTAL_TYPE;
var Profiler = REACT_PROFILER_TYPE;
var StrictMode = REACT_STRICT_MODE_TYPE;
var Suspense = REACT_SUSPENSE_TYPE;
var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated

function isAsyncMode(object) {
  {
    if (!hasWarnedAboutDeprecatedIsAsyncMode) {
      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint

      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');
    }
  }

  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
}
function isConcurrentMode(object) {
  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
}
function isContextConsumer(object) {
  return typeOf(object) === REACT_CONTEXT_TYPE;
}
function isContextProvider(object) {
  return typeOf(object) === REACT_PROVIDER_TYPE;
}
function isElement(object) {
  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
}
function isForwardRef(object) {
  return typeOf(object) === REACT_FORWARD_REF_TYPE;
}
function isFragment(object) {
  return typeOf(object) === REACT_FRAGMENT_TYPE;
}
function isLazy(object) {
  return typeOf(object) === REACT_LAZY_TYPE;
}
function isMemo(object) {
  return typeOf(object) === REACT_MEMO_TYPE;
}
function isPortal(object) {
  return typeOf(object) === REACT_PORTAL_TYPE;
}
function isProfiler(object) {
  return typeOf(object) === REACT_PROFILER_TYPE;
}
function isStrictMode(object) {
  return typeOf(object) === REACT_STRICT_MODE_TYPE;
}
function isSuspense(object) {
  return typeOf(object) === REACT_SUSPENSE_TYPE;
}

exports.AsyncMode = AsyncMode;
exports.ConcurrentMode = ConcurrentMode;
exports.ContextConsumer = ContextConsumer;
exports.ContextProvider = ContextProvider;
exports.Element = Element;
exports.ForwardRef = ForwardRef;
exports.Fragment = Fragment;
exports.Lazy = Lazy;
exports.Memo = Memo;
exports.Portal = Portal;
exports.Profiler = Profiler;
exports.StrictMode = StrictMode;
exports.Suspense = Suspense;
exports.isAsyncMode = isAsyncMode;
exports.isConcurrentMode = isConcurrentMode;
exports.isContextConsumer = isContextConsumer;
exports.isContextProvider = isContextProvider;
exports.isElement = isElement;
exports.isForwardRef = isForwardRef;
exports.isFragment = isFragment;
exports.isLazy = isLazy;
exports.isMemo = isMemo;
exports.isPortal = isPortal;
exports.isProfiler = isProfiler;
exports.isStrictMode = isStrictMode;
exports.isSuspense = isSuspense;
exports.isValidElementType = isValidElementType;
exports.typeOf = typeOf;
  })();
}


/***/ }),

/***/ "./node_modules/hoist-non-react-statics/node_modules/react-is/index.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/hoist-non-react-statics/node_modules/react-is/index.js ***!
  \*****************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


if (false) {} else {
  module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js");
}


/***/ }),

/***/ "./node_modules/htmlparser2/lib/CollectingHandler.js":
/*!***********************************************************!*\
  !*** ./node_modules/htmlparser2/lib/CollectingHandler.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = CollectingHandler;

function CollectingHandler(cbs) {
    this._cbs = cbs || {};
    this.events = [];
}

var EVENTS = (__webpack_require__(/*! ./ */ "./node_modules/htmlparser2/lib/index.js").EVENTS);
Object.keys(EVENTS).forEach(function(name) {
    if (EVENTS[name] === 0) {
        name = "on" + name;
        CollectingHandler.prototype[name] = function() {
            this.events.push([name]);
            if (this._cbs[name]) this._cbs[name]();
        };
    } else if (EVENTS[name] === 1) {
        name = "on" + name;
        CollectingHandler.prototype[name] = function(a) {
            this.events.push([name, a]);
            if (this._cbs[name]) this._cbs[name](a);
        };
    } else if (EVENTS[name] === 2) {
        name = "on" + name;
        CollectingHandler.prototype[name] = function(a, b) {
            this.events.push([name, a, b]);
            if (this._cbs[name]) this._cbs[name](a, b);
        };
    } else {
        throw Error("wrong number of arguments");
    }
});

CollectingHandler.prototype.onreset = function() {
    this.events = [];
    if (this._cbs.onreset) this._cbs.onreset();
};

CollectingHandler.prototype.restart = function() {
    if (this._cbs.onreset) this._cbs.onreset();

    for (var i = 0, len = this.events.length; i < len; i++) {
        if (this._cbs[this.events[i][0]]) {
            var num = this.events[i].length;

            if (num === 1) {
                this._cbs[this.events[i][0]]();
            } else if (num === 2) {
                this._cbs[this.events[i][0]](this.events[i][1]);
            } else {
                this._cbs[this.events[i][0]](
                    this.events[i][1],
                    this.events[i][2]
                );
            }
        }
    }
};


/***/ }),

/***/ "./node_modules/htmlparser2/lib/FeedHandler.js":
/*!*****************************************************!*\
  !*** ./node_modules/htmlparser2/lib/FeedHandler.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var DomHandler = __webpack_require__(/*! domhandler */ "./node_modules/domhandler/index.js");
var DomUtils = __webpack_require__(/*! domutils */ "./node_modules/domutils/index.js");

//TODO: make this a streamable handler
function FeedHandler(callback, options) {
    this.init(callback, options);
}

__webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js")(FeedHandler, DomHandler);

FeedHandler.prototype.init = DomHandler;

function getElements(what, where) {
    return DomUtils.getElementsByTagName(what, where, true);
}
function getOneElement(what, where) {
    return DomUtils.getElementsByTagName(what, where, true, 1)[0];
}
function fetch(what, where, recurse) {
    return DomUtils.getText(
        DomUtils.getElementsByTagName(what, where, recurse, 1)
    ).trim();
}

function addConditionally(obj, prop, what, where, recurse) {
    var tmp = fetch(what, where, recurse);
    if (tmp) obj[prop] = tmp;
}

var isValidFeed = function(value) {
    return value === "rss" || value === "feed" || value === "rdf:RDF";
};

FeedHandler.prototype.onend = function() {
    var feed = {},
        feedRoot = getOneElement(isValidFeed, this.dom),
        tmp,
        childs;

    if (feedRoot) {
        if (feedRoot.name === "feed") {
            childs = feedRoot.children;

            feed.type = "atom";
            addConditionally(feed, "id", "id", childs);
            addConditionally(feed, "title", "title", childs);
            if (
                (tmp = getOneElement("link", childs)) &&
                (tmp = tmp.attribs) &&
                (tmp = tmp.href)
            )
                feed.link = tmp;
            addConditionally(feed, "description", "subtitle", childs);
            if ((tmp = fetch("updated", childs))) feed.updated = new Date(tmp);
            addConditionally(feed, "author", "email", childs, true);

            feed.items = getElements("entry", childs).map(function(item) {
                var entry = {},
                    tmp;

                item = item.children;

                addConditionally(entry, "id", "id", item);
                addConditionally(entry, "title", "title", item);
                if (
                    (tmp = getOneElement("link", item)) &&
                    (tmp = tmp.attribs) &&
                    (tmp = tmp.href)
                )
                    entry.link = tmp;
                if ((tmp = fetch("summary", item) || fetch("content", item)))
                    entry.description = tmp;
                if ((tmp = fetch("updated", item)))
                    entry.pubDate = new Date(tmp);
                return entry;
            });
        } else {
            childs = getOneElement("channel", feedRoot.children).children;

            feed.type = feedRoot.name.substr(0, 3);
            feed.id = "";
            addConditionally(feed, "title", "title", childs);
            addConditionally(feed, "link", "link", childs);
            addConditionally(feed, "description", "description", childs);
            if ((tmp = fetch("lastBuildDate", childs)))
                feed.updated = new Date(tmp);
            addConditionally(feed, "author", "managingEditor", childs, true);

            feed.items = getElements("item", feedRoot.children).map(function(
                item
            ) {
                var entry = {},
                    tmp;

                item = item.children;

                addConditionally(entry, "id", "guid", item);
                addConditionally(entry, "title", "title", item);
                addConditionally(entry, "link", "link", item);
                addConditionally(entry, "description", "description", item);
                if ((tmp = fetch("pubDate", item)))
                    entry.pubDate = new Date(tmp);
                return entry;
            });
        }
    }
    this.dom = feed;
    DomHandler.prototype._handleCallback.call(
        this,
        feedRoot ? null : Error("couldn't find root of feed")
    );
};

module.exports = FeedHandler;


/***/ }),

/***/ "./node_modules/htmlparser2/lib/Parser.js":
/*!************************************************!*\
  !*** ./node_modules/htmlparser2/lib/Parser.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var Tokenizer = __webpack_require__(/*! ./Tokenizer.js */ "./node_modules/htmlparser2/lib/Tokenizer.js");

/*
	Options:

	xmlMode: Disables the special behavior for script/style tags (false by default)
	lowerCaseAttributeNames: call .toLowerCase for each attribute name (true if xmlMode is `false`)
	lowerCaseTags: call .toLowerCase for each tag name (true if xmlMode is `false`)
*/

/*
	Callbacks:

	oncdataend,
	oncdatastart,
	onclosetag,
	oncomment,
	oncommentend,
	onerror,
	onopentag,
	onprocessinginstruction,
	onreset,
	ontext
*/

var formTags = {
    input: true,
    option: true,
    optgroup: true,
    select: true,
    button: true,
    datalist: true,
    textarea: true
};

var openImpliesClose = {
    tr: { tr: true, th: true, td: true },
    th: { th: true },
    td: { thead: true, th: true, td: true },
    body: { head: true, link: true, script: true },
    li: { li: true },
    p: { p: true },
    h1: { p: true },
    h2: { p: true },
    h3: { p: true },
    h4: { p: true },
    h5: { p: true },
    h6: { p: true },
    select: formTags,
    input: formTags,
    output: formTags,
    button: formTags,
    datalist: formTags,
    textarea: formTags,
    option: { option: true },
    optgroup: { optgroup: true }
};

var voidElements = {
    __proto__: null,
    area: true,
    base: true,
    basefont: true,
    br: true,
    col: true,
    command: true,
    embed: true,
    frame: true,
    hr: true,
    img: true,
    input: true,
    isindex: true,
    keygen: true,
    link: true,
    meta: true,
    param: true,
    source: true,
    track: true,
    wbr: true
};

var foreignContextElements = {
    __proto__: null,
    math: true,
    svg: true
};
var htmlIntegrationElements = {
    __proto__: null,
    mi: true,
    mo: true,
    mn: true,
    ms: true,
    mtext: true,
    "annotation-xml": true,
    foreignObject: true,
    desc: true,
    title: true
};

var re_nameEnd = /\s|\//;

function Parser(cbs, options) {
    this._options = options || {};
    this._cbs = cbs || {};

    this._tagname = "";
    this._attribname = "";
    this._attribvalue = "";
    this._attribs = null;
    this._stack = [];
    this._foreignContext = [];

    this.startIndex = 0;
    this.endIndex = null;

    this._lowerCaseTagNames =
        "lowerCaseTags" in this._options
            ? !!this._options.lowerCaseTags
            : !this._options.xmlMode;
    this._lowerCaseAttributeNames =
        "lowerCaseAttributeNames" in this._options
            ? !!this._options.lowerCaseAttributeNames
            : !this._options.xmlMode;

    if (this._options.Tokenizer) {
        Tokenizer = this._options.Tokenizer;
    }
    this._tokenizer = new Tokenizer(this._options, this);

    if (this._cbs.onparserinit) this._cbs.onparserinit(this);
}

__webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js")(Parser, (__webpack_require__(/*! events */ "./node_modules/events/events.js").EventEmitter));

Parser.prototype._updatePosition = function(initialOffset) {
    if (this.endIndex === null) {
        if (this._tokenizer._sectionStart <= initialOffset) {
            this.startIndex = 0;
        } else {
            this.startIndex = this._tokenizer._sectionStart - initialOffset;
        }
    } else this.startIndex = this.endIndex + 1;
    this.endIndex = this._tokenizer.getAbsoluteIndex();
};

//Tokenizer event handlers
Parser.prototype.ontext = function(data) {
    this._updatePosition(1);
    this.endIndex--;

    if (this._cbs.ontext) this._cbs.ontext(data);
};

Parser.prototype.onopentagname = function(name) {
    if (this._lowerCaseTagNames) {
        name = name.toLowerCase();
    }

    this._tagname = name;

    if (!this._options.xmlMode && name in openImpliesClose) {
        for (
            var el;
            (el = this._stack[this._stack.length - 1]) in
            openImpliesClose[name];
            this.onclosetag(el)
        );
    }

    if (this._options.xmlMode || !(name in voidElements)) {
        this._stack.push(name);
        if (name in foreignContextElements) this._foreignContext.push(true);
        else if (name in htmlIntegrationElements)
            this._foreignContext.push(false);
    }

    if (this._cbs.onopentagname) this._cbs.onopentagname(name);
    if (this._cbs.onopentag) this._attribs = {};
};

Parser.prototype.onopentagend = function() {
    this._updatePosition(1);

    if (this._attribs) {
        if (this._cbs.onopentag)
            this._cbs.onopentag(this._tagname, this._attribs);
        this._attribs = null;
    }

    if (
        !this._options.xmlMode &&
        this._cbs.onclosetag &&
        this._tagname in voidElements
    ) {
        this._cbs.onclosetag(this._tagname);
    }

    this._tagname = "";
};

Parser.prototype.onclosetag = function(name) {
    this._updatePosition(1);

    if (this._lowerCaseTagNames) {
        name = name.toLowerCase();
    }
    
    if (name in foreignContextElements || name in htmlIntegrationElements) {
        this._foreignContext.pop();
    }

    if (
        this._stack.length &&
        (!(name in voidElements) || this._options.xmlMode)
    ) {
        var pos = this._stack.lastIndexOf(name);
        if (pos !== -1) {
            if (this._cbs.onclosetag) {
                pos = this._stack.length - pos;
                while (pos--) this._cbs.onclosetag(this._stack.pop());
            } else this._stack.length = pos;
        } else if (name === "p" && !this._options.xmlMode) {
            this.onopentagname(name);
            this._closeCurrentTag();
        }
    } else if (!this._options.xmlMode && (name === "br" || name === "p")) {
        this.onopentagname(name);
        this._closeCurrentTag();
    }
};

Parser.prototype.onselfclosingtag = function() {
    if (
        this._options.xmlMode ||
        this._options.recognizeSelfClosing ||
        this._foreignContext[this._foreignContext.length - 1]
    ) {
        this._closeCurrentTag();
    } else {
        this.onopentagend();
    }
};

Parser.prototype._closeCurrentTag = function() {
    var name = this._tagname;

    this.onopentagend();

    //self-closing tags will be on the top of the stack
    //(cheaper check than in onclosetag)
    if (this._stack[this._stack.length - 1] === name) {
        if (this._cbs.onclosetag) {
            this._cbs.onclosetag(name);
        }
        this._stack.pop();
        
    }
};

Parser.prototype.onattribname = function(name) {
    if (this._lowerCaseAttributeNames) {
        name = name.toLowerCase();
    }
    this._attribname = name;
};

Parser.prototype.onattribdata = function(value) {
    this._attribvalue += value;
};

Parser.prototype.onattribend = function() {
    if (this._cbs.onattribute)
        this._cbs.onattribute(this._attribname, this._attribvalue);
    if (
        this._attribs &&
        !Object.prototype.hasOwnProperty.call(this._attribs, this._attribname)
    ) {
        this._attribs[this._attribname] = this._attribvalue;
    }
    this._attribname = "";
    this._attribvalue = "";
};

Parser.prototype._getInstructionName = function(value) {
    var idx = value.search(re_nameEnd),
        name = idx < 0 ? value : value.substr(0, idx);

    if (this._lowerCaseTagNames) {
        name = name.toLowerCase();
    }

    return name;
};

Parser.prototype.ondeclaration = function(value) {
    if (this._cbs.onprocessinginstruction) {
        var name = this._getInstructionName(value);
        this._cbs.onprocessinginstruction("!" + name, "!" + value);
    }
};

Parser.prototype.onprocessinginstruction = function(value) {
    if (this._cbs.onprocessinginstruction) {
        var name = this._getInstructionName(value);
        this._cbs.onprocessinginstruction("?" + name, "?" + value);
    }
};

Parser.prototype.oncomment = function(value) {
    this._updatePosition(4);

    if (this._cbs.oncomment) this._cbs.oncomment(value);
    if (this._cbs.oncommentend) this._cbs.oncommentend();
};

Parser.prototype.oncdata = function(value) {
    this._updatePosition(1);

    if (this._options.xmlMode || this._options.recognizeCDATA) {
        if (this._cbs.oncdatastart) this._cbs.oncdatastart();
        if (this._cbs.ontext) this._cbs.ontext(value);
        if (this._cbs.oncdataend) this._cbs.oncdataend();
    } else {
        this.oncomment("[CDATA[" + value + "]]");
    }
};

Parser.prototype.onerror = function(err) {
    if (this._cbs.onerror) this._cbs.onerror(err);
};

Parser.prototype.onend = function() {
    if (this._cbs.onclosetag) {
        for (
            var i = this._stack.length;
            i > 0;
            this._cbs.onclosetag(this._stack[--i])
        );
    }
    if (this._cbs.onend) this._cbs.onend();
};

//Resets the parser to a blank state, ready to parse a new HTML document
Parser.prototype.reset = function() {
    if (this._cbs.onreset) this._cbs.onreset();
    this._tokenizer.reset();

    this._tagname = "";
    this._attribname = "";
    this._attribs = null;
    this._stack = [];

    if (this._cbs.onparserinit) this._cbs.onparserinit(this);
};

//Parses a complete HTML document and pushes it to the handler
Parser.prototype.parseComplete = function(data) {
    this.reset();
    this.end(data);
};

Parser.prototype.write = function(chunk) {
    this._tokenizer.write(chunk);
};

Parser.prototype.end = function(chunk) {
    this._tokenizer.end(chunk);
};

Parser.prototype.pause = function() {
    this._tokenizer.pause();
};

Parser.prototype.resume = function() {
    this._tokenizer.resume();
};

//alias for backwards compat
Parser.prototype.parseChunk = Parser.prototype.write;
Parser.prototype.done = Parser.prototype.end;

module.exports = Parser;


/***/ }),

/***/ "./node_modules/htmlparser2/lib/ProxyHandler.js":
/*!******************************************************!*\
  !*** ./node_modules/htmlparser2/lib/ProxyHandler.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = ProxyHandler;

function ProxyHandler(cbs) {
    this._cbs = cbs || {};
}

var EVENTS = (__webpack_require__(/*! ./ */ "./node_modules/htmlparser2/lib/index.js").EVENTS);
Object.keys(EVENTS).forEach(function(name) {
    if (EVENTS[name] === 0) {
        name = "on" + name;
        ProxyHandler.prototype[name] = function() {
            if (this._cbs[name]) this._cbs[name]();
        };
    } else if (EVENTS[name] === 1) {
        name = "on" + name;
        ProxyHandler.prototype[name] = function(a) {
            if (this._cbs[name]) this._cbs[name](a);
        };
    } else if (EVENTS[name] === 2) {
        name = "on" + name;
        ProxyHandler.prototype[name] = function(a, b) {
            if (this._cbs[name]) this._cbs[name](a, b);
        };
    } else {
        throw Error("wrong number of arguments");
    }
});


/***/ }),

/***/ "./node_modules/htmlparser2/lib/Stream.js":
/*!************************************************!*\
  !*** ./node_modules/htmlparser2/lib/Stream.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = Stream;

var Parser = __webpack_require__(/*! ./WritableStream.js */ "./node_modules/htmlparser2/lib/WritableStream.js");

function Stream(options) {
    Parser.call(this, new Cbs(this), options);
}

__webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js")(Stream, Parser);

Stream.prototype.readable = true;

function Cbs(scope) {
    this.scope = scope;
}

var EVENTS = (__webpack_require__(/*! ../ */ "./node_modules/htmlparser2/lib/index.js").EVENTS);

Object.keys(EVENTS).forEach(function(name) {
    if (EVENTS[name] === 0) {
        Cbs.prototype["on" + name] = function() {
            this.scope.emit(name);
        };
    } else if (EVENTS[name] === 1) {
        Cbs.prototype["on" + name] = function(a) {
            this.scope.emit(name, a);
        };
    } else if (EVENTS[name] === 2) {
        Cbs.prototype["on" + name] = function(a, b) {
            this.scope.emit(name, a, b);
        };
    } else {
        throw Error("wrong number of arguments!");
    }
});


/***/ }),

/***/ "./node_modules/htmlparser2/lib/Tokenizer.js":
/*!***************************************************!*\
  !*** ./node_modules/htmlparser2/lib/Tokenizer.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = Tokenizer;

var decodeCodePoint = __webpack_require__(/*! entities/lib/decode_codepoint.js */ "./node_modules/entities/lib/decode_codepoint.js");
var entityMap = __webpack_require__(/*! entities/maps/entities.json */ "./node_modules/entities/maps/entities.json");
var legacyMap = __webpack_require__(/*! entities/maps/legacy.json */ "./node_modules/entities/maps/legacy.json");
var xmlMap = __webpack_require__(/*! entities/maps/xml.json */ "./node_modules/entities/maps/xml.json");

var i = 0;

var TEXT = i++;
var BEFORE_TAG_NAME = i++; //after <
var IN_TAG_NAME = i++;
var IN_SELF_CLOSING_TAG = i++;
var BEFORE_CLOSING_TAG_NAME = i++;
var IN_CLOSING_TAG_NAME = i++;
var AFTER_CLOSING_TAG_NAME = i++;

//attributes
var BEFORE_ATTRIBUTE_NAME = i++;
var IN_ATTRIBUTE_NAME = i++;
var AFTER_ATTRIBUTE_NAME = i++;
var BEFORE_ATTRIBUTE_VALUE = i++;
var IN_ATTRIBUTE_VALUE_DQ = i++; // "
var IN_ATTRIBUTE_VALUE_SQ = i++; // '
var IN_ATTRIBUTE_VALUE_NQ = i++;

//declarations
var BEFORE_DECLARATION = i++; // !
var IN_DECLARATION = i++;

//processing instructions
var IN_PROCESSING_INSTRUCTION = i++; // ?

//comments
var BEFORE_COMMENT = i++;
var IN_COMMENT = i++;
var AFTER_COMMENT_1 = i++;
var AFTER_COMMENT_2 = i++;

//cdata
var BEFORE_CDATA_1 = i++; // [
var BEFORE_CDATA_2 = i++; // C
var BEFORE_CDATA_3 = i++; // D
var BEFORE_CDATA_4 = i++; // A
var BEFORE_CDATA_5 = i++; // T
var BEFORE_CDATA_6 = i++; // A
var IN_CDATA = i++; // [
var AFTER_CDATA_1 = i++; // ]
var AFTER_CDATA_2 = i++; // ]

//special tags
var BEFORE_SPECIAL = i++; //S
var BEFORE_SPECIAL_END = i++; //S

var BEFORE_SCRIPT_1 = i++; //C
var BEFORE_SCRIPT_2 = i++; //R
var BEFORE_SCRIPT_3 = i++; //I
var BEFORE_SCRIPT_4 = i++; //P
var BEFORE_SCRIPT_5 = i++; //T
var AFTER_SCRIPT_1 = i++; //C
var AFTER_SCRIPT_2 = i++; //R
var AFTER_SCRIPT_3 = i++; //I
var AFTER_SCRIPT_4 = i++; //P
var AFTER_SCRIPT_5 = i++; //T

var BEFORE_STYLE_1 = i++; //T
var BEFORE_STYLE_2 = i++; //Y
var BEFORE_STYLE_3 = i++; //L
var BEFORE_STYLE_4 = i++; //E
var AFTER_STYLE_1 = i++; //T
var AFTER_STYLE_2 = i++; //Y
var AFTER_STYLE_3 = i++; //L
var AFTER_STYLE_4 = i++; //E

var BEFORE_ENTITY = i++; //&
var BEFORE_NUMERIC_ENTITY = i++; //#
var IN_NAMED_ENTITY = i++;
var IN_NUMERIC_ENTITY = i++;
var IN_HEX_ENTITY = i++; //X

var j = 0;

var SPECIAL_NONE = j++;
var SPECIAL_SCRIPT = j++;
var SPECIAL_STYLE = j++;

function whitespace(c) {
    return c === " " || c === "\n" || c === "\t" || c === "\f" || c === "\r";
}

function ifElseState(upper, SUCCESS, FAILURE) {
    var lower = upper.toLowerCase();

    if (upper === lower) {
        return function(c) {
            if (c === lower) {
                this._state = SUCCESS;
            } else {
                this._state = FAILURE;
                this._index--;
            }
        };
    } else {
        return function(c) {
            if (c === lower || c === upper) {
                this._state = SUCCESS;
            } else {
                this._state = FAILURE;
                this._index--;
            }
        };
    }
}

function consumeSpecialNameChar(upper, NEXT_STATE) {
    var lower = upper.toLowerCase();

    return function(c) {
        if (c === lower || c === upper) {
            this._state = NEXT_STATE;
        } else {
            this._state = IN_TAG_NAME;
            this._index--; //consume the token again
        }
    };
}

function Tokenizer(options, cbs) {
    this._state = TEXT;
    this._buffer = "";
    this._sectionStart = 0;
    this._index = 0;
    this._bufferOffset = 0; //chars removed from _buffer
    this._baseState = TEXT;
    this._special = SPECIAL_NONE;
    this._cbs = cbs;
    this._running = true;
    this._ended = false;
    this._xmlMode = !!(options && options.xmlMode);
    this._decodeEntities = !!(options && options.decodeEntities);
}

Tokenizer.prototype._stateText = function(c) {
    if (c === "<") {
        if (this._index > this._sectionStart) {
            this._cbs.ontext(this._getSection());
        }
        this._state = BEFORE_TAG_NAME;
        this._sectionStart = this._index;
    } else if (
        this._decodeEntities &&
        this._special === SPECIAL_NONE &&
        c === "&"
    ) {
        if (this._index > this._sectionStart) {
            this._cbs.ontext(this._getSection());
        }
        this._baseState = TEXT;
        this._state = BEFORE_ENTITY;
        this._sectionStart = this._index;
    }
};

Tokenizer.prototype._stateBeforeTagName = function(c) {
    if (c === "/") {
        this._state = BEFORE_CLOSING_TAG_NAME;
    } else if (c === "<") {
        this._cbs.ontext(this._getSection());
        this._sectionStart = this._index;
    } else if (c === ">" || this._special !== SPECIAL_NONE || whitespace(c)) {
        this._state = TEXT;
    } else if (c === "!") {
        this._state = BEFORE_DECLARATION;
        this._sectionStart = this._index + 1;
    } else if (c === "?") {
        this._state = IN_PROCESSING_INSTRUCTION;
        this._sectionStart = this._index + 1;
    } else {
        this._state =
            !this._xmlMode && (c === "s" || c === "S")
                ? BEFORE_SPECIAL
                : IN_TAG_NAME;
        this._sectionStart = this._index;
    }
};

Tokenizer.prototype._stateInTagName = function(c) {
    if (c === "/" || c === ">" || whitespace(c)) {
        this._emitToken("onopentagname");
        this._state = BEFORE_ATTRIBUTE_NAME;
        this._index--;
    }
};

Tokenizer.prototype._stateBeforeCloseingTagName = function(c) {
    if (whitespace(c));
    else if (c === ">") {
        this._state = TEXT;
    } else if (this._special !== SPECIAL_NONE) {
        if (c === "s" || c === "S") {
            this._state = BEFORE_SPECIAL_END;
        } else {
            this._state = TEXT;
            this._index--;
        }
    } else {
        this._state = IN_CLOSING_TAG_NAME;
        this._sectionStart = this._index;
    }
};

Tokenizer.prototype._stateInCloseingTagName = function(c) {
    if (c === ">" || whitespace(c)) {
        this._emitToken("onclosetag");
        this._state = AFTER_CLOSING_TAG_NAME;
        this._index--;
    }
};

Tokenizer.prototype._stateAfterCloseingTagName = function(c) {
    //skip everything until ">"
    if (c === ">") {
        this._state = TEXT;
        this._sectionStart = this._index + 1;
    }
};

Tokenizer.prototype._stateBeforeAttributeName = function(c) {
    if (c === ">") {
        this._cbs.onopentagend();
        this._state = TEXT;
        this._sectionStart = this._index + 1;
    } else if (c === "/") {
        this._state = IN_SELF_CLOSING_TAG;
    } else if (!whitespace(c)) {
        this._state = IN_ATTRIBUTE_NAME;
        this._sectionStart = this._index;
    }
};

Tokenizer.prototype._stateInSelfClosingTag = function(c) {
    if (c === ">") {
        this._cbs.onselfclosingtag();
        this._state = TEXT;
        this._sectionStart = this._index + 1;
    } else if (!whitespace(c)) {
        this._state = BEFORE_ATTRIBUTE_NAME;
        this._index--;
    }
};

Tokenizer.prototype._stateInAttributeName = function(c) {
    if (c === "=" || c === "/" || c === ">" || whitespace(c)) {
        this._cbs.onattribname(this._getSection());
        this._sectionStart = -1;
        this._state = AFTER_ATTRIBUTE_NAME;
        this._index--;
    }
};

Tokenizer.prototype._stateAfterAttributeName = function(c) {
    if (c === "=") {
        this._state = BEFORE_ATTRIBUTE_VALUE;
    } else if (c === "/" || c === ">") {
        this._cbs.onattribend();
        this._state = BEFORE_ATTRIBUTE_NAME;
        this._index--;
    } else if (!whitespace(c)) {
        this._cbs.onattribend();
        this._state = IN_ATTRIBUTE_NAME;
        this._sectionStart = this._index;
    }
};

Tokenizer.prototype._stateBeforeAttributeValue = function(c) {
    if (c === '"') {
        this._state = IN_ATTRIBUTE_VALUE_DQ;
        this._sectionStart = this._index + 1;
    } else if (c === "'") {
        this._state = IN_ATTRIBUTE_VALUE_SQ;
        this._sectionStart = this._index + 1;
    } else if (!whitespace(c)) {
        this._state = IN_ATTRIBUTE_VALUE_NQ;
        this._sectionStart = this._index;
        this._index--; //reconsume token
    }
};

Tokenizer.prototype._stateInAttributeValueDoubleQuotes = function(c) {
    if (c === '"') {
        this._emitToken("onattribdata");
        this._cbs.onattribend();
        this._state = BEFORE_ATTRIBUTE_NAME;
    } else if (this._decodeEntities && c === "&") {
        this._emitToken("onattribdata");
        this._baseState = this._state;
        this._state = BEFORE_ENTITY;
        this._sectionStart = this._index;
    }
};

Tokenizer.prototype._stateInAttributeValueSingleQuotes = function(c) {
    if (c === "'") {
        this._emitToken("onattribdata");
        this._cbs.onattribend();
        this._state = BEFORE_ATTRIBUTE_NAME;
    } else if (this._decodeEntities && c === "&") {
        this._emitToken("onattribdata");
        this._baseState = this._state;
        this._state = BEFORE_ENTITY;
        this._sectionStart = this._index;
    }
};

Tokenizer.prototype._stateInAttributeValueNoQuotes = function(c) {
    if (whitespace(c) || c === ">") {
        this._emitToken("onattribdata");
        this._cbs.onattribend();
        this._state = BEFORE_ATTRIBUTE_NAME;
        this._index--;
    } else if (this._decodeEntities && c === "&") {
        this._emitToken("onattribdata");
        this._baseState = this._state;
        this._state = BEFORE_ENTITY;
        this._sectionStart = this._index;
    }
};

Tokenizer.prototype._stateBeforeDeclaration = function(c) {
    this._state =
        c === "["
            ? BEFORE_CDATA_1
            : c === "-"
                ? BEFORE_COMMENT
                : IN_DECLARATION;
};

Tokenizer.prototype._stateInDeclaration = function(c) {
    if (c === ">") {
        this._cbs.ondeclaration(this._getSection());
        this._state = TEXT;
        this._sectionStart = this._index + 1;
    }
};

Tokenizer.prototype._stateInProcessingInstruction = function(c) {
    if (c === ">") {
        this._cbs.onprocessinginstruction(this._getSection());
        this._state = TEXT;
        this._sectionStart = this._index + 1;
    }
};

Tokenizer.prototype._stateBeforeComment = function(c) {
    if (c === "-") {
        this._state = IN_COMMENT;
        this._sectionStart = this._index + 1;
    } else {
        this._state = IN_DECLARATION;
    }
};

Tokenizer.prototype._stateInComment = function(c) {
    if (c === "-") this._state = AFTER_COMMENT_1;
};

Tokenizer.prototype._stateAfterComment1 = function(c) {
    if (c === "-") {
        this._state = AFTER_COMMENT_2;
    } else {
        this._state = IN_COMMENT;
    }
};

Tokenizer.prototype._stateAfterComment2 = function(c) {
    if (c === ">") {
        //remove 2 trailing chars
        this._cbs.oncomment(
            this._buffer.substring(this._sectionStart, this._index - 2)
        );
        this._state = TEXT;
        this._sectionStart = this._index + 1;
    } else if (c !== "-") {
        this._state = IN_COMMENT;
    }
    // else: stay in AFTER_COMMENT_2 (`--->`)
};

Tokenizer.prototype._stateBeforeCdata1 = ifElseState(
    "C",
    BEFORE_CDATA_2,
    IN_DECLARATION
);
Tokenizer.prototype._stateBeforeCdata2 = ifElseState(
    "D",
    BEFORE_CDATA_3,
    IN_DECLARATION
);
Tokenizer.prototype._stateBeforeCdata3 = ifElseState(
    "A",
    BEFORE_CDATA_4,
    IN_DECLARATION
);
Tokenizer.prototype._stateBeforeCdata4 = ifElseState(
    "T",
    BEFORE_CDATA_5,
    IN_DECLARATION
);
Tokenizer.prototype._stateBeforeCdata5 = ifElseState(
    "A",
    BEFORE_CDATA_6,
    IN_DECLARATION
);

Tokenizer.prototype._stateBeforeCdata6 = function(c) {
    if (c === "[") {
        this._state = IN_CDATA;
        this._sectionStart = this._index + 1;
    } else {
        this._state = IN_DECLARATION;
        this._index--;
    }
};

Tokenizer.prototype._stateInCdata = function(c) {
    if (c === "]") this._state = AFTER_CDATA_1;
};

Tokenizer.prototype._stateAfterCdata1 = function(c) {
    if (c === "]") this._state = AFTER_CDATA_2;
    else this._state = IN_CDATA;
};

Tokenizer.prototype._stateAfterCdata2 = function(c) {
    if (c === ">") {
        //remove 2 trailing chars
        this._cbs.oncdata(
            this._buffer.substring(this._sectionStart, this._index - 2)
        );
        this._state = TEXT;
        this._sectionStart = this._index + 1;
    } else if (c !== "]") {
        this._state = IN_CDATA;
    }
    //else: stay in AFTER_CDATA_2 (`]]]>`)
};

Tokenizer.prototype._stateBeforeSpecial = function(c) {
    if (c === "c" || c === "C") {
        this._state = BEFORE_SCRIPT_1;
    } else if (c === "t" || c === "T") {
        this._state = BEFORE_STYLE_1;
    } else {
        this._state = IN_TAG_NAME;
        this._index--; //consume the token again
    }
};

Tokenizer.prototype._stateBeforeSpecialEnd = function(c) {
    if (this._special === SPECIAL_SCRIPT && (c === "c" || c === "C")) {
        this._state = AFTER_SCRIPT_1;
    } else if (this._special === SPECIAL_STYLE && (c === "t" || c === "T")) {
        this._state = AFTER_STYLE_1;
    } else this._state = TEXT;
};

Tokenizer.prototype._stateBeforeScript1 = consumeSpecialNameChar(
    "R",
    BEFORE_SCRIPT_2
);
Tokenizer.prototype._stateBeforeScript2 = consumeSpecialNameChar(
    "I",
    BEFORE_SCRIPT_3
);
Tokenizer.prototype._stateBeforeScript3 = consumeSpecialNameChar(
    "P",
    BEFORE_SCRIPT_4
);
Tokenizer.prototype._stateBeforeScript4 = consumeSpecialNameChar(
    "T",
    BEFORE_SCRIPT_5
);

Tokenizer.prototype._stateBeforeScript5 = function(c) {
    if (c === "/" || c === ">" || whitespace(c)) {
        this._special = SPECIAL_SCRIPT;
    }
    this._state = IN_TAG_NAME;
    this._index--; //consume the token again
};

Tokenizer.prototype._stateAfterScript1 = ifElseState("R", AFTER_SCRIPT_2, TEXT);
Tokenizer.prototype._stateAfterScript2 = ifElseState("I", AFTER_SCRIPT_3, TEXT);
Tokenizer.prototype._stateAfterScript3 = ifElseState("P", AFTER_SCRIPT_4, TEXT);
Tokenizer.prototype._stateAfterScript4 = ifElseState("T", AFTER_SCRIPT_5, TEXT);

Tokenizer.prototype._stateAfterScript5 = function(c) {
    if (c === ">" || whitespace(c)) {
        this._special = SPECIAL_NONE;
        this._state = IN_CLOSING_TAG_NAME;
        this._sectionStart = this._index - 6;
        this._index--; //reconsume the token
    } else this._state = TEXT;
};

Tokenizer.prototype._stateBeforeStyle1 = consumeSpecialNameChar(
    "Y",
    BEFORE_STYLE_2
);
Tokenizer.prototype._stateBeforeStyle2 = consumeSpecialNameChar(
    "L",
    BEFORE_STYLE_3
);
Tokenizer.prototype._stateBeforeStyle3 = consumeSpecialNameChar(
    "E",
    BEFORE_STYLE_4
);

Tokenizer.prototype._stateBeforeStyle4 = function(c) {
    if (c === "/" || c === ">" || whitespace(c)) {
        this._special = SPECIAL_STYLE;
    }
    this._state = IN_TAG_NAME;
    this._index--; //consume the token again
};

Tokenizer.prototype._stateAfterStyle1 = ifElseState("Y", AFTER_STYLE_2, TEXT);
Tokenizer.prototype._stateAfterStyle2 = ifElseState("L", AFTER_STYLE_3, TEXT);
Tokenizer.prototype._stateAfterStyle3 = ifElseState("E", AFTER_STYLE_4, TEXT);

Tokenizer.prototype._stateAfterStyle4 = function(c) {
    if (c === ">" || whitespace(c)) {
        this._special = SPECIAL_NONE;
        this._state = IN_CLOSING_TAG_NAME;
        this._sectionStart = this._index - 5;
        this._index--; //reconsume the token
    } else this._state = TEXT;
};

Tokenizer.prototype._stateBeforeEntity = ifElseState(
    "#",
    BEFORE_NUMERIC_ENTITY,
    IN_NAMED_ENTITY
);
Tokenizer.prototype._stateBeforeNumericEntity = ifElseState(
    "X",
    IN_HEX_ENTITY,
    IN_NUMERIC_ENTITY
);

//for entities terminated with a semicolon
Tokenizer.prototype._parseNamedEntityStrict = function() {
    //offset = 1
    if (this._sectionStart + 1 < this._index) {
        var entity = this._buffer.substring(
                this._sectionStart + 1,
                this._index
            ),
            map = this._xmlMode ? xmlMap : entityMap;

        if (map.hasOwnProperty(entity)) {
            this._emitPartial(map[entity]);
            this._sectionStart = this._index + 1;
        }
    }
};

//parses legacy entities (without trailing semicolon)
Tokenizer.prototype._parseLegacyEntity = function() {
    var start = this._sectionStart + 1,
        limit = this._index - start;

    if (limit > 6) limit = 6; //the max length of legacy entities is 6

    while (limit >= 2) {
        //the min length of legacy entities is 2
        var entity = this._buffer.substr(start, limit);

        if (legacyMap.hasOwnProperty(entity)) {
            this._emitPartial(legacyMap[entity]);
            this._sectionStart += limit + 1;
            return;
        } else {
            limit--;
        }
    }
};

Tokenizer.prototype._stateInNamedEntity = function(c) {
    if (c === ";") {
        this._parseNamedEntityStrict();
        if (this._sectionStart + 1 < this._index && !this._xmlMode) {
            this._parseLegacyEntity();
        }
        this._state = this._baseState;
    } else if (
        (c < "a" || c > "z") &&
        (c < "A" || c > "Z") &&
        (c < "0" || c > "9")
    ) {
        if (this._xmlMode);
        else if (this._sectionStart + 1 === this._index);
        else if (this._baseState !== TEXT) {
            if (c !== "=") {
                this._parseNamedEntityStrict();
            }
        } else {
            this._parseLegacyEntity();
        }

        this._state = this._baseState;
        this._index--;
    }
};

Tokenizer.prototype._decodeNumericEntity = function(offset, base) {
    var sectionStart = this._sectionStart + offset;

    if (sectionStart !== this._index) {
        //parse entity
        var entity = this._buffer.substring(sectionStart, this._index);
        var parsed = parseInt(entity, base);

        this._emitPartial(decodeCodePoint(parsed));
        this._sectionStart = this._index;
    } else {
        this._sectionStart--;
    }

    this._state = this._baseState;
};

Tokenizer.prototype._stateInNumericEntity = function(c) {
    if (c === ";") {
        this._decodeNumericEntity(2, 10);
        this._sectionStart++;
    } else if (c < "0" || c > "9") {
        if (!this._xmlMode) {
            this._decodeNumericEntity(2, 10);
        } else {
            this._state = this._baseState;
        }
        this._index--;
    }
};

Tokenizer.prototype._stateInHexEntity = function(c) {
    if (c === ";") {
        this._decodeNumericEntity(3, 16);
        this._sectionStart++;
    } else if (
        (c < "a" || c > "f") &&
        (c < "A" || c > "F") &&
        (c < "0" || c > "9")
    ) {
        if (!this._xmlMode) {
            this._decodeNumericEntity(3, 16);
        } else {
            this._state = this._baseState;
        }
        this._index--;
    }
};

Tokenizer.prototype._cleanup = function() {
    if (this._sectionStart < 0) {
        this._buffer = "";
        this._bufferOffset += this._index;
        this._index = 0;
    } else if (this._running) {
        if (this._state === TEXT) {
            if (this._sectionStart !== this._index) {
                this._cbs.ontext(this._buffer.substr(this._sectionStart));
            }
            this._buffer = "";
            this._bufferOffset += this._index;
            this._index = 0;
        } else if (this._sectionStart === this._index) {
            //the section just started
            this._buffer = "";
            this._bufferOffset += this._index;
            this._index = 0;
        } else {
            //remove everything unnecessary
            this._buffer = this._buffer.substr(this._sectionStart);
            this._index -= this._sectionStart;
            this._bufferOffset += this._sectionStart;
        }

        this._sectionStart = 0;
    }
};

//TODO make events conditional
Tokenizer.prototype.write = function(chunk) {
    if (this._ended) this._cbs.onerror(Error(".write() after done!"));

    this._buffer += chunk;
    this._parse();
};

Tokenizer.prototype._parse = function() {
    while (this._index < this._buffer.length && this._running) {
        var c = this._buffer.charAt(this._index);
        if (this._state === TEXT) {
            this._stateText(c);
        } else if (this._state === BEFORE_TAG_NAME) {
            this._stateBeforeTagName(c);
        } else if (this._state === IN_TAG_NAME) {
            this._stateInTagName(c);
        } else if (this._state === BEFORE_CLOSING_TAG_NAME) {
            this._stateBeforeCloseingTagName(c);
        } else if (this._state === IN_CLOSING_TAG_NAME) {
            this._stateInCloseingTagName(c);
        } else if (this._state === AFTER_CLOSING_TAG_NAME) {
            this._stateAfterCloseingTagName(c);
        } else if (this._state === IN_SELF_CLOSING_TAG) {
            this._stateInSelfClosingTag(c);
        } else if (this._state === BEFORE_ATTRIBUTE_NAME) {

        /*
		*	attributes
		*/
            this._stateBeforeAttributeName(c);
        } else if (this._state === IN_ATTRIBUTE_NAME) {
            this._stateInAttributeName(c);
        } else if (this._state === AFTER_ATTRIBUTE_NAME) {
            this._stateAfterAttributeName(c);
        } else if (this._state === BEFORE_ATTRIBUTE_VALUE) {
            this._stateBeforeAttributeValue(c);
        } else if (this._state === IN_ATTRIBUTE_VALUE_DQ) {
            this._stateInAttributeValueDoubleQuotes(c);
        } else if (this._state === IN_ATTRIBUTE_VALUE_SQ) {
            this._stateInAttributeValueSingleQuotes(c);
        } else if (this._state === IN_ATTRIBUTE_VALUE_NQ) {
            this._stateInAttributeValueNoQuotes(c);
        } else if (this._state === BEFORE_DECLARATION) {

        /*
		*	declarations
		*/
            this._stateBeforeDeclaration(c);
        } else if (this._state === IN_DECLARATION) {
            this._stateInDeclaration(c);
        } else if (this._state === IN_PROCESSING_INSTRUCTION) {

        /*
		*	processing instructions
		*/
            this._stateInProcessingInstruction(c);
        } else if (this._state === BEFORE_COMMENT) {

        /*
		*	comments
		*/
            this._stateBeforeComment(c);
        } else if (this._state === IN_COMMENT) {
            this._stateInComment(c);
        } else if (this._state === AFTER_COMMENT_1) {
            this._stateAfterComment1(c);
        } else if (this._state === AFTER_COMMENT_2) {
            this._stateAfterComment2(c);
        } else if (this._state === BEFORE_CDATA_1) {

        /*
		*	cdata
		*/
            this._stateBeforeCdata1(c);
        } else if (this._state === BEFORE_CDATA_2) {
            this._stateBeforeCdata2(c);
        } else if (this._state === BEFORE_CDATA_3) {
            this._stateBeforeCdata3(c);
        } else if (this._state === BEFORE_CDATA_4) {
            this._stateBeforeCdata4(c);
        } else if (this._state === BEFORE_CDATA_5) {
            this._stateBeforeCdata5(c);
        } else if (this._state === BEFORE_CDATA_6) {
            this._stateBeforeCdata6(c);
        } else if (this._state === IN_CDATA) {
            this._stateInCdata(c);
        } else if (this._state === AFTER_CDATA_1) {
            this._stateAfterCdata1(c);
        } else if (this._state === AFTER_CDATA_2) {
            this._stateAfterCdata2(c);
        } else if (this._state === BEFORE_SPECIAL) {

        /*
		* special tags
		*/
            this._stateBeforeSpecial(c);
        } else if (this._state === BEFORE_SPECIAL_END) {
            this._stateBeforeSpecialEnd(c);
        } else if (this._state === BEFORE_SCRIPT_1) {

        /*
		* script
		*/
            this._stateBeforeScript1(c);
        } else if (this._state === BEFORE_SCRIPT_2) {
            this._stateBeforeScript2(c);
        } else if (this._state === BEFORE_SCRIPT_3) {
            this._stateBeforeScript3(c);
        } else if (this._state === BEFORE_SCRIPT_4) {
            this._stateBeforeScript4(c);
        } else if (this._state === BEFORE_SCRIPT_5) {
            this._stateBeforeScript5(c);
        } else if (this._state === AFTER_SCRIPT_1) {
            this._stateAfterScript1(c);
        } else if (this._state === AFTER_SCRIPT_2) {
            this._stateAfterScript2(c);
        } else if (this._state === AFTER_SCRIPT_3) {
            this._stateAfterScript3(c);
        } else if (this._state === AFTER_SCRIPT_4) {
            this._stateAfterScript4(c);
        } else if (this._state === AFTER_SCRIPT_5) {
            this._stateAfterScript5(c);
        } else if (this._state === BEFORE_STYLE_1) {

        /*
		* style
		*/
            this._stateBeforeStyle1(c);
        } else if (this._state === BEFORE_STYLE_2) {
            this._stateBeforeStyle2(c);
        } else if (this._state === BEFORE_STYLE_3) {
            this._stateBeforeStyle3(c);
        } else if (this._state === BEFORE_STYLE_4) {
            this._stateBeforeStyle4(c);
        } else if (this._state === AFTER_STYLE_1) {
            this._stateAfterStyle1(c);
        } else if (this._state === AFTER_STYLE_2) {
            this._stateAfterStyle2(c);
        } else if (this._state === AFTER_STYLE_3) {
            this._stateAfterStyle3(c);
        } else if (this._state === AFTER_STYLE_4) {
            this._stateAfterStyle4(c);
        } else if (this._state === BEFORE_ENTITY) {

        /*
		* entities
		*/
            this._stateBeforeEntity(c);
        } else if (this._state === BEFORE_NUMERIC_ENTITY) {
            this._stateBeforeNumericEntity(c);
        } else if (this._state === IN_NAMED_ENTITY) {
            this._stateInNamedEntity(c);
        } else if (this._state === IN_NUMERIC_ENTITY) {
            this._stateInNumericEntity(c);
        } else if (this._state === IN_HEX_ENTITY) {
            this._stateInHexEntity(c);
        } else {
            this._cbs.onerror(Error("unknown _state"), this._state);
        }

        this._index++;
    }

    this._cleanup();
};

Tokenizer.prototype.pause = function() {
    this._running = false;
};
Tokenizer.prototype.resume = function() {
    this._running = true;

    if (this._index < this._buffer.length) {
        this._parse();
    }
    if (this._ended) {
        this._finish();
    }
};

Tokenizer.prototype.end = function(chunk) {
    if (this._ended) this._cbs.onerror(Error(".end() after done!"));
    if (chunk) this.write(chunk);

    this._ended = true;

    if (this._running) this._finish();
};

Tokenizer.prototype._finish = function() {
    //if there is remaining data, emit it in a reasonable way
    if (this._sectionStart < this._index) {
        this._handleTrailingData();
    }

    this._cbs.onend();
};

Tokenizer.prototype._handleTrailingData = function() {
    var data = this._buffer.substr(this._sectionStart);

    if (
        this._state === IN_CDATA ||
        this._state === AFTER_CDATA_1 ||
        this._state === AFTER_CDATA_2
    ) {
        this._cbs.oncdata(data);
    } else if (
        this._state === IN_COMMENT ||
        this._state === AFTER_COMMENT_1 ||
        this._state === AFTER_COMMENT_2
    ) {
        this._cbs.oncomment(data);
    } else if (this._state === IN_NAMED_ENTITY && !this._xmlMode) {
        this._parseLegacyEntity();
        if (this._sectionStart < this._index) {
            this._state = this._baseState;
            this._handleTrailingData();
        }
    } else if (this._state === IN_NUMERIC_ENTITY && !this._xmlMode) {
        this._decodeNumericEntity(2, 10);
        if (this._sectionStart < this._index) {
            this._state = this._baseState;
            this._handleTrailingData();
        }
    } else if (this._state === IN_HEX_ENTITY && !this._xmlMode) {
        this._decodeNumericEntity(3, 16);
        if (this._sectionStart < this._index) {
            this._state = this._baseState;
            this._handleTrailingData();
        }
    } else if (
        this._state !== IN_TAG_NAME &&
        this._state !== BEFORE_ATTRIBUTE_NAME &&
        this._state !== BEFORE_ATTRIBUTE_VALUE &&
        this._state !== AFTER_ATTRIBUTE_NAME &&
        this._state !== IN_ATTRIBUTE_NAME &&
        this._state !== IN_ATTRIBUTE_VALUE_SQ &&
        this._state !== IN_ATTRIBUTE_VALUE_DQ &&
        this._state !== IN_ATTRIBUTE_VALUE_NQ &&
        this._state !== IN_CLOSING_TAG_NAME
    ) {
        this._cbs.ontext(data);
    }
    //else, ignore remaining data
    //TODO add a way to remove current tag
};

Tokenizer.prototype.reset = function() {
    Tokenizer.call(
        this,
        { xmlMode: this._xmlMode, decodeEntities: this._decodeEntities },
        this._cbs
    );
};

Tokenizer.prototype.getAbsoluteIndex = function() {
    return this._bufferOffset + this._index;
};

Tokenizer.prototype._getSection = function() {
    return this._buffer.substring(this._sectionStart, this._index);
};

Tokenizer.prototype._emitToken = function(name) {
    this._cbs[name](this._getSection());
    this._sectionStart = -1;
};

Tokenizer.prototype._emitPartial = function(value) {
    if (this._baseState !== TEXT) {
        this._cbs.onattribdata(value); //TODO implement the new event
    } else {
        this._cbs.ontext(value);
    }
};


/***/ }),

/***/ "./node_modules/htmlparser2/lib/WritableStream.js":
/*!********************************************************!*\
  !*** ./node_modules/htmlparser2/lib/WritableStream.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = Stream;

var Parser = __webpack_require__(/*! ./Parser.js */ "./node_modules/htmlparser2/lib/Parser.js");
var WritableStream = (__webpack_require__(/*! readable-stream */ "?13bc").Writable);
var StringDecoder = (__webpack_require__(/*! string_decoder */ "./node_modules/string_decoder/lib/string_decoder.js").StringDecoder);
var Buffer = (__webpack_require__(/*! buffer */ "./node_modules/buffer/index.js").Buffer);

function Stream(cbs, options) {
    var parser = (this._parser = new Parser(cbs, options));
    var decoder = (this._decoder = new StringDecoder());

    WritableStream.call(this, { decodeStrings: false });

    this.once("finish", function() {
        parser.end(decoder.end());
    });
}

__webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js")(Stream, WritableStream);

Stream.prototype._write = function(chunk, encoding, cb) {
    if (chunk instanceof Buffer) chunk = this._decoder.write(chunk);
    this._parser.write(chunk);
    cb();
};


/***/ }),

/***/ "./node_modules/htmlparser2/lib/index.js":
/*!***********************************************!*\
  !*** ./node_modules/htmlparser2/lib/index.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var Parser = __webpack_require__(/*! ./Parser.js */ "./node_modules/htmlparser2/lib/Parser.js");
var DomHandler = __webpack_require__(/*! domhandler */ "./node_modules/domhandler/index.js");

function defineProp(name, value) {
    delete module.exports[name];
    module.exports[name] = value;
    return value;
}

module.exports = {
    Parser: Parser,
    Tokenizer: __webpack_require__(/*! ./Tokenizer.js */ "./node_modules/htmlparser2/lib/Tokenizer.js"),
    ElementType: __webpack_require__(/*! domelementtype */ "./node_modules/domelementtype/index.js"),
    DomHandler: DomHandler,
    get FeedHandler() {
        return defineProp("FeedHandler", __webpack_require__(/*! ./FeedHandler.js */ "./node_modules/htmlparser2/lib/FeedHandler.js"));
    },
    get Stream() {
        return defineProp("Stream", __webpack_require__(/*! ./Stream.js */ "./node_modules/htmlparser2/lib/Stream.js"));
    },
    get WritableStream() {
        return defineProp("WritableStream", __webpack_require__(/*! ./WritableStream.js */ "./node_modules/htmlparser2/lib/WritableStream.js"));
    },
    get ProxyHandler() {
        return defineProp("ProxyHandler", __webpack_require__(/*! ./ProxyHandler.js */ "./node_modules/htmlparser2/lib/ProxyHandler.js"));
    },
    get DomUtils() {
        return defineProp("DomUtils", __webpack_require__(/*! domutils */ "./node_modules/domutils/index.js"));
    },
    get CollectingHandler() {
        return defineProp(
            "CollectingHandler",
            __webpack_require__(/*! ./CollectingHandler.js */ "./node_modules/htmlparser2/lib/CollectingHandler.js")
        );
    },
    // For legacy support
    DefaultHandler: DomHandler,
    get RssHandler() {
        return defineProp("RssHandler", this.FeedHandler);
    },
    //helper methods
    parseDOM: function(data, options) {
        var handler = new DomHandler(options);
        new Parser(handler, options).end(data);
        return handler.dom;
    },
    parseFeed: function(feed, options) {
        var handler = new module.exports.FeedHandler(options);
        new Parser(handler, options).end(feed);
        return handler.dom;
    },
    createDomStream: function(cb, options, elementCb) {
        var handler = new DomHandler(cb, options, elementCb);
        return new Parser(handler, options);
    },
    // List of all events that the parser emits
    EVENTS: {
        /* Format: eventname: number of arguments */
        attribute: 2,
        cdatastart: 0,
        cdataend: 0,
        text: 1,
        processinginstruction: 2,
        comment: 1,
        commentend: 0,
        closetag: 1,
        opentag: 2,
        opentagname: 1,
        error: 1,
        end: 0
    }
};


/***/ }),

/***/ "./node_modules/ieee754/index.js":
/*!***************************************!*\
  !*** ./node_modules/ieee754/index.js ***!
  \***************************************/
/***/ ((__unused_webpack_module, exports) => {

/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
exports.read = function (buffer, offset, isLE, mLen, nBytes) {
  var e, m
  var eLen = (nBytes * 8) - mLen - 1
  var eMax = (1 << eLen) - 1
  var eBias = eMax >> 1
  var nBits = -7
  var i = isLE ? (nBytes - 1) : 0
  var d = isLE ? -1 : 1
  var s = buffer[offset + i]

  i += d

  e = s & ((1 << (-nBits)) - 1)
  s >>= (-nBits)
  nBits += eLen
  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}

  m = e & ((1 << (-nBits)) - 1)
  e >>= (-nBits)
  nBits += mLen
  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}

  if (e === 0) {
    e = 1 - eBias
  } else if (e === eMax) {
    return m ? NaN : ((s ? -1 : 1) * Infinity)
  } else {
    m = m + Math.pow(2, mLen)
    e = e - eBias
  }
  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
}

exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
  var e, m, c
  var eLen = (nBytes * 8) - mLen - 1
  var eMax = (1 << eLen) - 1
  var eBias = eMax >> 1
  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
  var i = isLE ? 0 : (nBytes - 1)
  var d = isLE ? 1 : -1
  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0

  value = Math.abs(value)

  if (isNaN(value) || value === Infinity) {
    m = isNaN(value) ? 1 : 0
    e = eMax
  } else {
    e = Math.floor(Math.log(value) / Math.LN2)
    if (value * (c = Math.pow(2, -e)) < 1) {
      e--
      c *= 2
    }
    if (e + eBias >= 1) {
      value += rt / c
    } else {
      value += rt * Math.pow(2, 1 - eBias)
    }
    if (value * c >= 2) {
      e++
      c /= 2
    }

    if (e + eBias >= eMax) {
      m = 0
      e = eMax
    } else if (e + eBias >= 1) {
      m = ((value * c) - 1) * Math.pow(2, mLen)
      e = e + eBias
    } else {
      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
      e = 0
    }
  }

  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}

  e = (e << mLen) | m
  eLen += mLen
  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}

  buffer[offset + i - d] |= s * 128
}


/***/ }),

/***/ "./node_modules/inherits/inherits_browser.js":
/*!***************************************************!*\
  !*** ./node_modules/inherits/inherits_browser.js ***!
  \***************************************************/
/***/ ((module) => {

if (typeof Object.create === 'function') {
  // implementation from standard node.js 'util' module
  module.exports = function inherits(ctor, superCtor) {
    if (superCtor) {
      ctor.super_ = superCtor
      ctor.prototype = Object.create(superCtor.prototype, {
        constructor: {
          value: ctor,
          enumerable: false,
          writable: true,
          configurable: true
        }
      })
    }
  };
} else {
  // old school shim for old browsers
  module.exports = function inherits(ctor, superCtor) {
    if (superCtor) {
      ctor.super_ = superCtor
      var TempCtor = function () {}
      TempCtor.prototype = superCtor.prototype
      ctor.prototype = new TempCtor()
      ctor.prototype.constructor = ctor
    }
  }
}


/***/ }),

/***/ "./assets/src/common/all-config.scss":
/*!*******************************************!*\
  !*** ./assets/src/common/all-config.scss ***!
  \*******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
// extracted by mini-css-extract-plugin


/***/ }),

/***/ "./assets/src/common/skeleton/Common.scss":
/*!************************************************!*\
  !*** ./assets/src/common/skeleton/Common.scss ***!
  \************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
// extracted by mini-css-extract-plugin


/***/ }),

/***/ "./assets/src/common/skeleton/Rectangle.scss":
/*!***************************************************!*\
  !*** ./assets/src/common/skeleton/Rectangle.scss ***!
  \***************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
// extracted by mini-css-extract-plugin


/***/ }),

/***/ "./assets/src/common/skeleton/Skeleton.scss":
/*!**************************************************!*\
  !*** ./assets/src/common/skeleton/Skeleton.scss ***!
  \**************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
// extracted by mini-css-extract-plugin


/***/ }),

/***/ "./assets/src/common/skeleton/Spacer.scss":
/*!************************************************!*\
  !*** ./assets/src/common/skeleton/Spacer.scss ***!
  \************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
// extracted by mini-css-extract-plugin


/***/ }),

/***/ "./assets/src/common/skeleton/Text.scss":
/*!**********************************************!*\
  !*** ./assets/src/common/skeleton/Text.scss ***!
  \**********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
// extracted by mini-css-extract-plugin


/***/ }),

/***/ "./node_modules/object-assign/index.js":
/*!*********************************************!*\
  !*** ./node_modules/object-assign/index.js ***!
  \*********************************************/
/***/ ((module) => {

"use strict";
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/


/* eslint-disable no-unused-vars */
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var propIsEnumerable = Object.prototype.propertyIsEnumerable;

function toObject(val) {
	if (val === null || val === undefined) {
		throw new TypeError('Object.assign cannot be called with null or undefined');
	}

	return Object(val);
}

function shouldUseNative() {
	try {
		if (!Object.assign) {
			return false;
		}

		// Detect buggy property enumeration order in older V8 versions.

		// https://bugs.chromium.org/p/v8/issues/detail?id=4118
		var test1 = new String('abc');  // eslint-disable-line no-new-wrappers
		test1[5] = 'de';
		if (Object.getOwnPropertyNames(test1)[0] === '5') {
			return false;
		}

		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
		var test2 = {};
		for (var i = 0; i < 10; i++) {
			test2['_' + String.fromCharCode(i)] = i;
		}
		var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
			return test2[n];
		});
		if (order2.join('') !== '0123456789') {
			return false;
		}

		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
		var test3 = {};
		'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
			test3[letter] = letter;
		});
		if (Object.keys(Object.assign({}, test3)).join('') !==
				'abcdefghijklmnopqrst') {
			return false;
		}

		return true;
	} catch (err) {
		// We don't expect any of the above to throw, but better to be safe.
		return false;
	}
}

module.exports = shouldUseNative() ? Object.assign : function (target, source) {
	var from;
	var to = toObject(target);
	var symbols;

	for (var s = 1; s < arguments.length; s++) {
		from = Object(arguments[s]);

		for (var key in from) {
			if (hasOwnProperty.call(from, key)) {
				to[key] = from[key];
			}
		}

		if (getOwnPropertySymbols) {
			symbols = getOwnPropertySymbols(from);
			for (var i = 0; i < symbols.length; i++) {
				if (propIsEnumerable.call(from, symbols[i])) {
					to[symbols[i]] = from[symbols[i]];
				}
			}
		}
	}

	return to;
};


/***/ }),

/***/ "./node_modules/prop-types/checkPropTypes.js":
/*!***************************************************!*\
  !*** ./node_modules/prop-types/checkPropTypes.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



var printWarning = function() {};

if (true) {
  var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "./node_modules/prop-types/lib/ReactPropTypesSecret.js");
  var loggedTypeFailures = {};
  var has = __webpack_require__(/*! ./lib/has */ "./node_modules/prop-types/lib/has.js");

  printWarning = function(text) {
    var message = 'Warning: ' + text;
    if (typeof console !== 'undefined') {
      console.error(message);
    }
    try {
      // --- Welcome to debugging React ---
      // This error was thrown as a convenience so that you can use this stack
      // to find the callsite that caused this warning to fire.
      throw new Error(message);
    } catch (x) { /**/ }
  };
}

/**
 * Assert that the values match with the type specs.
 * Error messages are memorized and will only be shown once.
 *
 * @param {object} typeSpecs Map of name to a ReactPropType
 * @param {object} values Runtime values that need to be type-checked
 * @param {string} location e.g. "prop", "context", "child context"
 * @param {string} componentName Name of the component for error messages.
 * @param {?Function} getStack Returns the component stack.
 * @private
 */
function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
  if (true) {
    for (var typeSpecName in typeSpecs) {
      if (has(typeSpecs, typeSpecName)) {
        var error;
        // Prop type validation may throw. In case they do, we don't want to
        // fail the render phase where it didn't fail before. So we log it.
        // After these have been cleaned up, we'll let them throw.
        try {
          // This is intentionally an invariant that gets caught. It's the same
          // behavior as without this statement except with a better message.
          if (typeof typeSpecs[typeSpecName] !== 'function') {
            var err = Error(
              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +
              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +
              'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'
            );
            err.name = 'Invariant Violation';
            throw err;
          }
          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
        } catch (ex) {
          error = ex;
        }
        if (error && !(error instanceof Error)) {
          printWarning(
            (componentName || 'React class') + ': type specification of ' +
            location + ' `' + typeSpecName + '` is invalid; the type checker ' +
            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +
            'You may have forgotten to pass an argument to the type checker ' +
            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +
            'shape all require an argument).'
          );
        }
        if (error instanceof Error && !(error.message in loggedTypeFailures)) {
          // Only monitor this failure once because there tends to be a lot of the
          // same error.
          loggedTypeFailures[error.message] = true;

          var stack = getStack ? getStack() : '';

          printWarning(
            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')
          );
        }
      }
    }
  }
}

/**
 * Resets warning cache when testing.
 *
 * @private
 */
checkPropTypes.resetWarningCache = function() {
  if (true) {
    loggedTypeFailures = {};
  }
}

module.exports = checkPropTypes;


/***/ }),

/***/ "./node_modules/prop-types/factoryWithTypeCheckers.js":
/*!************************************************************!*\
  !*** ./node_modules/prop-types/factoryWithTypeCheckers.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



var ReactIs = __webpack_require__(/*! react-is */ "./node_modules/prop-types/node_modules/react-is/index.js");
var assign = __webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js");

var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "./node_modules/prop-types/lib/ReactPropTypesSecret.js");
var has = __webpack_require__(/*! ./lib/has */ "./node_modules/prop-types/lib/has.js");
var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "./node_modules/prop-types/checkPropTypes.js");

var printWarning = function() {};

if (true) {
  printWarning = function(text) {
    var message = 'Warning: ' + text;
    if (typeof console !== 'undefined') {
      console.error(message);
    }
    try {
      // --- Welcome to debugging React ---
      // This error was thrown as a convenience so that you can use this stack
      // to find the callsite that caused this warning to fire.
      throw new Error(message);
    } catch (x) {}
  };
}

function emptyFunctionThatReturnsNull() {
  return null;
}

module.exports = function(isValidElement, throwOnDirectAccess) {
  /* global Symbol */
  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.

  /**
   * Returns the iterator method function contained on the iterable object.
   *
   * Be sure to invoke the function with the iterable as context:
   *
   *     var iteratorFn = getIteratorFn(myIterable);
   *     if (iteratorFn) {
   *       var iterator = iteratorFn.call(myIterable);
   *       ...
   *     }
   *
   * @param {?object} maybeIterable
   * @return {?function}
   */
  function getIteratorFn(maybeIterable) {
    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
    if (typeof iteratorFn === 'function') {
      return iteratorFn;
    }
  }

  /**
   * Collection of methods that allow declaration and validation of props that are
   * supplied to React components. Example usage:
   *
   *   var Props = require('ReactPropTypes');
   *   var MyArticle = React.createClass({
   *     propTypes: {
   *       // An optional string prop named "description".
   *       description: Props.string,
   *
   *       // A required enum prop named "category".
   *       category: Props.oneOf(['News','Photos']).isRequired,
   *
   *       // A prop named "dialog" that requires an instance of Dialog.
   *       dialog: Props.instanceOf(Dialog).isRequired
   *     },
   *     render: function() { ... }
   *   });
   *
   * A more formal specification of how these methods are used:
   *
   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
   *   decl := ReactPropTypes.{type}(.isRequired)?
   *
   * Each and every declaration produces a function with the same signature. This
   * allows the creation of custom validation functions. For example:
   *
   *  var MyLink = React.createClass({
   *    propTypes: {
   *      // An optional string or URI prop named "href".
   *      href: function(props, propName, componentName) {
   *        var propValue = props[propName];
   *        if (propValue != null && typeof propValue !== 'string' &&
   *            !(propValue instanceof URI)) {
   *          return new Error(
   *            'Expected a string or an URI for ' + propName + ' in ' +
   *            componentName
   *          );
   *        }
   *      }
   *    },
   *    render: function() {...}
   *  });
   *
   * @internal
   */

  var ANONYMOUS = '<<anonymous>>';

  // Important!
  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
  var ReactPropTypes = {
    array: createPrimitiveTypeChecker('array'),
    bigint: createPrimitiveTypeChecker('bigint'),
    bool: createPrimitiveTypeChecker('boolean'),
    func: createPrimitiveTypeChecker('function'),
    number: createPrimitiveTypeChecker('number'),
    object: createPrimitiveTypeChecker('object'),
    string: createPrimitiveTypeChecker('string'),
    symbol: createPrimitiveTypeChecker('symbol'),

    any: createAnyTypeChecker(),
    arrayOf: createArrayOfTypeChecker,
    element: createElementTypeChecker(),
    elementType: createElementTypeTypeChecker(),
    instanceOf: createInstanceTypeChecker,
    node: createNodeChecker(),
    objectOf: createObjectOfTypeChecker,
    oneOf: createEnumTypeChecker,
    oneOfType: createUnionTypeChecker,
    shape: createShapeTypeChecker,
    exact: createStrictShapeTypeChecker,
  };

  /**
   * inlined Object.is polyfill to avoid requiring consumers ship their own
   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
   */
  /*eslint-disable no-self-compare*/
  function is(x, y) {
    // SameValue algorithm
    if (x === y) {
      // Steps 1-5, 7-10
      // Steps 6.b-6.e: +0 != -0
      return x !== 0 || 1 / x === 1 / y;
    } else {
      // Step 6.a: NaN == NaN
      return x !== x && y !== y;
    }
  }
  /*eslint-enable no-self-compare*/

  /**
   * We use an Error-like object for backward compatibility as people may call
   * PropTypes directly and inspect their output. However, we don't use real
   * Errors anymore. We don't inspect their stack anyway, and creating them
   * is prohibitively expensive if they are created too often, such as what
   * happens in oneOfType() for any type before the one that matched.
   */
  function PropTypeError(message, data) {
    this.message = message;
    this.data = data && typeof data === 'object' ? data: {};
    this.stack = '';
  }
  // Make `instanceof Error` still work for returned errors.
  PropTypeError.prototype = Error.prototype;

  function createChainableTypeChecker(validate) {
    if (true) {
      var manualPropTypeCallCache = {};
      var manualPropTypeWarningCount = 0;
    }
    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
      componentName = componentName || ANONYMOUS;
      propFullName = propFullName || propName;

      if (secret !== ReactPropTypesSecret) {
        if (throwOnDirectAccess) {
          // New behavior only for users of `prop-types` package
          var err = new Error(
            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
            'Use `PropTypes.checkPropTypes()` to call them. ' +
            'Read more at http://fb.me/use-check-prop-types'
          );
          err.name = 'Invariant Violation';
          throw err;
        } else if ( true && typeof console !== 'undefined') {
          // Old behavior for people using React.PropTypes
          var cacheKey = componentName + ':' + propName;
          if (
            !manualPropTypeCallCache[cacheKey] &&
            // Avoid spamming the console because they are often not actionable except for lib authors
            manualPropTypeWarningCount < 3
          ) {
            printWarning(
              'You are manually calling a React.PropTypes validation ' +
              'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +
              'and will throw in the standalone `prop-types` package. ' +
              'You may be seeing this warning due to a third-party PropTypes ' +
              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'
            );
            manualPropTypeCallCache[cacheKey] = true;
            manualPropTypeWarningCount++;
          }
        }
      }
      if (props[propName] == null) {
        if (isRequired) {
          if (props[propName] === null) {
            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
          }
          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
        }
        return null;
      } else {
        return validate(props, propName, componentName, location, propFullName);
      }
    }

    var chainedCheckType = checkType.bind(null, false);
    chainedCheckType.isRequired = checkType.bind(null, true);

    return chainedCheckType;
  }

  function createPrimitiveTypeChecker(expectedType) {
    function validate(props, propName, componentName, location, propFullName, secret) {
      var propValue = props[propName];
      var propType = getPropType(propValue);
      if (propType !== expectedType) {
        // `propValue` being instance of, say, date/regexp, pass the 'object'
        // check, but we can offer a more precise error message here rather than
        // 'of type `object`'.
        var preciseType = getPreciseType(propValue);

        return new PropTypeError(
          'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),
          {expectedType: expectedType}
        );
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createAnyTypeChecker() {
    return createChainableTypeChecker(emptyFunctionThatReturnsNull);
  }

  function createArrayOfTypeChecker(typeChecker) {
    function validate(props, propName, componentName, location, propFullName) {
      if (typeof typeChecker !== 'function') {
        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
      }
      var propValue = props[propName];
      if (!Array.isArray(propValue)) {
        var propType = getPropType(propValue);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
      }
      for (var i = 0; i < propValue.length; i++) {
        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
        if (error instanceof Error) {
          return error;
        }
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createElementTypeChecker() {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      if (!isValidElement(propValue)) {
        var propType = getPropType(propValue);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createElementTypeTypeChecker() {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      if (!ReactIs.isValidElementType(propValue)) {
        var propType = getPropType(propValue);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createInstanceTypeChecker(expectedClass) {
    function validate(props, propName, componentName, location, propFullName) {
      if (!(props[propName] instanceof expectedClass)) {
        var expectedClassName = expectedClass.name || ANONYMOUS;
        var actualClassName = getClassName(props[propName]);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createEnumTypeChecker(expectedValues) {
    if (!Array.isArray(expectedValues)) {
      if (true) {
        if (arguments.length > 1) {
          printWarning(
            'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +
            'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'
          );
        } else {
          printWarning('Invalid argument supplied to oneOf, expected an array.');
        }
      }
      return emptyFunctionThatReturnsNull;
    }

    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      for (var i = 0; i < expectedValues.length; i++) {
        if (is(propValue, expectedValues[i])) {
          return null;
        }
      }

      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {
        var type = getPreciseType(value);
        if (type === 'symbol') {
          return String(value);
        }
        return value;
      });
      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
    }
    return createChainableTypeChecker(validate);
  }

  function createObjectOfTypeChecker(typeChecker) {
    function validate(props, propName, componentName, location, propFullName) {
      if (typeof typeChecker !== 'function') {
        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
      }
      var propValue = props[propName];
      var propType = getPropType(propValue);
      if (propType !== 'object') {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
      }
      for (var key in propValue) {
        if (has(propValue, key)) {
          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
          if (error instanceof Error) {
            return error;
          }
        }
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createUnionTypeChecker(arrayOfTypeCheckers) {
    if (!Array.isArray(arrayOfTypeCheckers)) {
       true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0;
      return emptyFunctionThatReturnsNull;
    }

    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
      var checker = arrayOfTypeCheckers[i];
      if (typeof checker !== 'function') {
        printWarning(
          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +
          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'
        );
        return emptyFunctionThatReturnsNull;
      }
    }

    function validate(props, propName, componentName, location, propFullName) {
      var expectedTypes = [];
      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
        var checker = arrayOfTypeCheckers[i];
        var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);
        if (checkerResult == null) {
          return null;
        }
        if (checkerResult.data && has(checkerResult.data, 'expectedType')) {
          expectedTypes.push(checkerResult.data.expectedType);
        }
      }
      var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';
      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));
    }
    return createChainableTypeChecker(validate);
  }

  function createNodeChecker() {
    function validate(props, propName, componentName, location, propFullName) {
      if (!isNode(props[propName])) {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function invalidValidatorError(componentName, location, propFullName, key, type) {
    return new PropTypeError(
      (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +
      'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'
    );
  }

  function createShapeTypeChecker(shapeTypes) {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      var propType = getPropType(propValue);
      if (propType !== 'object') {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
      }
      for (var key in shapeTypes) {
        var checker = shapeTypes[key];
        if (typeof checker !== 'function') {
          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));
        }
        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
        if (error) {
          return error;
        }
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createStrictShapeTypeChecker(shapeTypes) {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      var propType = getPropType(propValue);
      if (propType !== 'object') {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
      }
      // We need to check all keys in case some are required but missing from props.
      var allKeys = assign({}, props[propName], shapeTypes);
      for (var key in allKeys) {
        var checker = shapeTypes[key];
        if (has(shapeTypes, key) && typeof checker !== 'function') {
          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));
        }
        if (!checker) {
          return new PropTypeError(
            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +
            '\nBad object: ' + JSON.stringify(props[propName], null, '  ') +
            '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, '  ')
          );
        }
        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
        if (error) {
          return error;
        }
      }
      return null;
    }

    return createChainableTypeChecker(validate);
  }

  function isNode(propValue) {
    switch (typeof propValue) {
      case 'number':
      case 'string':
      case 'undefined':
        return true;
      case 'boolean':
        return !propValue;
      case 'object':
        if (Array.isArray(propValue)) {
          return propValue.every(isNode);
        }
        if (propValue === null || isValidElement(propValue)) {
          return true;
        }

        var iteratorFn = getIteratorFn(propValue);
        if (iteratorFn) {
          var iterator = iteratorFn.call(propValue);
          var step;
          if (iteratorFn !== propValue.entries) {
            while (!(step = iterator.next()).done) {
              if (!isNode(step.value)) {
                return false;
              }
            }
          } else {
            // Iterator will provide entry [k,v] tuples rather than values.
            while (!(step = iterator.next()).done) {
              var entry = step.value;
              if (entry) {
                if (!isNode(entry[1])) {
                  return false;
                }
              }
            }
          }
        } else {
          return false;
        }

        return true;
      default:
        return false;
    }
  }

  function isSymbol(propType, propValue) {
    // Native Symbol.
    if (propType === 'symbol') {
      return true;
    }

    // falsy value can't be a Symbol
    if (!propValue) {
      return false;
    }

    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
    if (propValue['@@toStringTag'] === 'Symbol') {
      return true;
    }

    // Fallback for non-spec compliant Symbols which are polyfilled.
    if (typeof Symbol === 'function' && propValue instanceof Symbol) {
      return true;
    }

    return false;
  }

  // Equivalent of `typeof` but with special handling for array and regexp.
  function getPropType(propValue) {
    var propType = typeof propValue;
    if (Array.isArray(propValue)) {
      return 'array';
    }
    if (propValue instanceof RegExp) {
      // Old webkits (at least until Android 4.0) return 'function' rather than
      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
      // passes PropTypes.object.
      return 'object';
    }
    if (isSymbol(propType, propValue)) {
      return 'symbol';
    }
    return propType;
  }

  // This handles more types than `getPropType`. Only used for error messages.
  // See `createPrimitiveTypeChecker`.
  function getPreciseType(propValue) {
    if (typeof propValue === 'undefined' || propValue === null) {
      return '' + propValue;
    }
    var propType = getPropType(propValue);
    if (propType === 'object') {
      if (propValue instanceof Date) {
        return 'date';
      } else if (propValue instanceof RegExp) {
        return 'regexp';
      }
    }
    return propType;
  }

  // Returns a string that is postfixed to a warning about an invalid type.
  // For example, "undefined" or "of type array"
  function getPostfixForTypeWarning(value) {
    var type = getPreciseType(value);
    switch (type) {
      case 'array':
      case 'object':
        return 'an ' + type;
      case 'boolean':
      case 'date':
      case 'regexp':
        return 'a ' + type;
      default:
        return type;
    }
  }

  // Returns class name of the object, if any.
  function getClassName(propValue) {
    if (!propValue.constructor || !propValue.constructor.name) {
      return ANONYMOUS;
    }
    return propValue.constructor.name;
  }

  ReactPropTypes.checkPropTypes = checkPropTypes;
  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;
  ReactPropTypes.PropTypes = ReactPropTypes;

  return ReactPropTypes;
};


/***/ }),

/***/ "./node_modules/prop-types/index.js":
/*!******************************************!*\
  !*** ./node_modules/prop-types/index.js ***!
  \******************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

if (true) {
  var ReactIs = __webpack_require__(/*! react-is */ "./node_modules/prop-types/node_modules/react-is/index.js");

  // By explicitly using `prop-types` you are opting into new development behavior.
  // http://fb.me/prop-types-in-prod
  var throwOnDirectAccess = true;
  module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "./node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess);
} else {}


/***/ }),

/***/ "./node_modules/prop-types/lib/ReactPropTypesSecret.js":
/*!*************************************************************!*\
  !*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
  \*************************************************************/
/***/ ((module) => {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';

module.exports = ReactPropTypesSecret;


/***/ }),

/***/ "./node_modules/prop-types/lib/has.js":
/*!********************************************!*\
  !*** ./node_modules/prop-types/lib/has.js ***!
  \********************************************/
/***/ ((module) => {

module.exports = Function.call.bind(Object.prototype.hasOwnProperty);


/***/ }),

/***/ "./node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js ***!
  \***********************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";
/** @license React v16.13.1
 * react-is.development.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */





if (true) {
  (function() {
'use strict';

// The Symbol used to tag the ReactElement-like types. If there is no native Symbol
// nor polyfill, then a plain number is used for performance.
var hasSymbol = typeof Symbol === 'function' && Symbol.for;
var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
// (unstable) APIs that have been removed. Can we remove the symbols?

var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;
var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;

function isValidElementType(type) {
  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
}

function typeOf(object) {
  if (typeof object === 'object' && object !== null) {
    var $$typeof = object.$$typeof;

    switch ($$typeof) {
      case REACT_ELEMENT_TYPE:
        var type = object.type;

        switch (type) {
          case REACT_ASYNC_MODE_TYPE:
          case REACT_CONCURRENT_MODE_TYPE:
          case REACT_FRAGMENT_TYPE:
          case REACT_PROFILER_TYPE:
          case REACT_STRICT_MODE_TYPE:
          case REACT_SUSPENSE_TYPE:
            return type;

          default:
            var $$typeofType = type && type.$$typeof;

            switch ($$typeofType) {
              case REACT_CONTEXT_TYPE:
              case REACT_FORWARD_REF_TYPE:
              case REACT_LAZY_TYPE:
              case REACT_MEMO_TYPE:
              case REACT_PROVIDER_TYPE:
                return $$typeofType;

              default:
                return $$typeof;
            }

        }

      case REACT_PORTAL_TYPE:
        return $$typeof;
    }
  }

  return undefined;
} // AsyncMode is deprecated along with isAsyncMode

var AsyncMode = REACT_ASYNC_MODE_TYPE;
var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
var ContextConsumer = REACT_CONTEXT_TYPE;
var ContextProvider = REACT_PROVIDER_TYPE;
var Element = REACT_ELEMENT_TYPE;
var ForwardRef = REACT_FORWARD_REF_TYPE;
var Fragment = REACT_FRAGMENT_TYPE;
var Lazy = REACT_LAZY_TYPE;
var Memo = REACT_MEMO_TYPE;
var Portal = REACT_PORTAL_TYPE;
var Profiler = REACT_PROFILER_TYPE;
var StrictMode = REACT_STRICT_MODE_TYPE;
var Suspense = REACT_SUSPENSE_TYPE;
var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated

function isAsyncMode(object) {
  {
    if (!hasWarnedAboutDeprecatedIsAsyncMode) {
      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint

      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');
    }
  }

  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
}
function isConcurrentMode(object) {
  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
}
function isContextConsumer(object) {
  return typeOf(object) === REACT_CONTEXT_TYPE;
}
function isContextProvider(object) {
  return typeOf(object) === REACT_PROVIDER_TYPE;
}
function isElement(object) {
  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
}
function isForwardRef(object) {
  return typeOf(object) === REACT_FORWARD_REF_TYPE;
}
function isFragment(object) {
  return typeOf(object) === REACT_FRAGMENT_TYPE;
}
function isLazy(object) {
  return typeOf(object) === REACT_LAZY_TYPE;
}
function isMemo(object) {
  return typeOf(object) === REACT_MEMO_TYPE;
}
function isPortal(object) {
  return typeOf(object) === REACT_PORTAL_TYPE;
}
function isProfiler(object) {
  return typeOf(object) === REACT_PROFILER_TYPE;
}
function isStrictMode(object) {
  return typeOf(object) === REACT_STRICT_MODE_TYPE;
}
function isSuspense(object) {
  return typeOf(object) === REACT_SUSPENSE_TYPE;
}

exports.AsyncMode = AsyncMode;
exports.ConcurrentMode = ConcurrentMode;
exports.ContextConsumer = ContextConsumer;
exports.ContextProvider = ContextProvider;
exports.Element = Element;
exports.ForwardRef = ForwardRef;
exports.Fragment = Fragment;
exports.Lazy = Lazy;
exports.Memo = Memo;
exports.Portal = Portal;
exports.Profiler = Profiler;
exports.StrictMode = StrictMode;
exports.Suspense = Suspense;
exports.isAsyncMode = isAsyncMode;
exports.isConcurrentMode = isConcurrentMode;
exports.isContextConsumer = isContextConsumer;
exports.isContextProvider = isContextProvider;
exports.isElement = isElement;
exports.isForwardRef = isForwardRef;
exports.isFragment = isFragment;
exports.isLazy = isLazy;
exports.isMemo = isMemo;
exports.isPortal = isPortal;
exports.isProfiler = isProfiler;
exports.isStrictMode = isStrictMode;
exports.isSuspense = isSuspense;
exports.isValidElementType = isValidElementType;
exports.typeOf = typeOf;
  })();
}


/***/ }),

/***/ "./node_modules/prop-types/node_modules/react-is/index.js":
/*!****************************************************************!*\
  !*** ./node_modules/prop-types/node_modules/react-is/index.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


if (false) {} else {
  module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "./node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js");
}


/***/ }),

/***/ "./node_modules/react-html-parser/lib/HtmlParser.js":
/*!**********************************************************!*\
  !*** ./node_modules/react-html-parser/lib/HtmlParser.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = HtmlParser;

var _htmlparser = __webpack_require__(/*! htmlparser2 */ "./node_modules/htmlparser2/lib/index.js");

var _htmlparser2 = _interopRequireDefault(_htmlparser);

var _processNodes = __webpack_require__(/*! ./processNodes */ "./node_modules/react-html-parser/lib/processNodes.js");

var _processNodes2 = _interopRequireDefault(_processNodes);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/**
 * Parses a HTML string and returns a list of React components generated from it
 *
 * @param {String} html The HTML to convert into React component
 * @param {Object} options Options to pass
 * @returns {Array} List of top level React elements
 */
function HtmlParser(html) {
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
      _ref$decodeEntities = _ref.decodeEntities,
      decodeEntities = _ref$decodeEntities === undefined ? true : _ref$decodeEntities,
      transform = _ref.transform,
      _ref$preprocessNodes = _ref.preprocessNodes,
      preprocessNodes = _ref$preprocessNodes === undefined ? function (nodes) {
    return nodes;
  } : _ref$preprocessNodes;

  var nodes = preprocessNodes(_htmlparser2.default.parseDOM(html, { decodeEntities: decodeEntities }));
  return (0, _processNodes2.default)(nodes, transform);
}

/***/ }),

/***/ "./node_modules/react-html-parser/lib/convertNodeToElement.js":
/*!********************************************************************!*\
  !*** ./node_modules/react-html-parser/lib/convertNodeToElement.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = convertNodeToElement;

var _elementTypes = __webpack_require__(/*! ./elementTypes */ "./node_modules/react-html-parser/lib/elementTypes/index.js");

var _elementTypes2 = _interopRequireDefault(_elementTypes);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/**
 * Converts a htmlparser2 node to a React element
 *
 * @param {Object} node The htmlparser2 node to convert
 * @param {Number} index The index of the current node
 * @param {Function} transform Transform function to apply to children of the node
 * @returns {React.Element}
 */
function convertNodeToElement(node, index, transform) {
  return _elementTypes2.default[node.type](node, index, transform);
}

/***/ }),

/***/ "./node_modules/react-html-parser/lib/dom/attributes/BooleanAttributes.js":
/*!********************************************************************************!*\
  !*** ./node_modules/react-html-parser/lib/dom/attributes/BooleanAttributes.js ***!
  \********************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
/**
 * List of boolean attributes
 * These attributes should have their React attribute value set to be the same as their name
 * E.g. <input disabled> = <input disabled>
 *      <input disabled=""> = <input disabled>
 *      <input disabled="disabled"> = <input disabled>
 * @type {Array}
 */
exports["default"] = ['allowfullScreen', 'async', 'autoplay', 'capture', 'checked', 'controls', 'default', 'defer', 'disabled', 'formnovalidate', 'hidden', 'loop', 'multiple', 'muted', 'novalidate', 'open', 'playsinline', 'readonly', 'required', 'reversed', 'scoped', 'seamless', 'selected', 'itemscope'];

/***/ }),

/***/ "./node_modules/react-html-parser/lib/dom/attributes/ReactAttributes.js":
/*!******************************************************************************!*\
  !*** ./node_modules/react-html-parser/lib/dom/attributes/ReactAttributes.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
/**
 * Mapping of standard HTML attributes to their React counterparts
 * List taken and reversed from react/src/renderers/dom/shared/HTMLDOMPropertyConfig.js
 * https://github.com/facebook/react/blob/c9c3c339b757682f1154f1c915eb55e6a8766933/src/renderers/dom/shared/HTMLDOMPropertyConfig.js
 * @type {Object}
 */
exports["default"] = {
  /**
   * Standard Properties
   */
  accept: 'accept',
  'accept-charset': 'acceptCharset',
  accesskey: 'accessKey',
  action: 'action',
  allowfullscreen: 'allowFullScreen',
  allowtransparency: 'allowTransparency',
  alt: 'alt',
  as: 'as',
  async: 'async',
  autocomplete: 'autoComplete',
  autoplay: 'autoPlay',
  capture: 'capture',
  cellpadding: 'cellPadding',
  cellspacing: 'cellSpacing',
  charset: 'charSet',
  challenge: 'challenge',
  checked: 'checked',
  cite: 'cite',
  classid: 'classID',
  class: 'className',
  cols: 'cols',
  colspan: 'colSpan',
  content: 'content',
  contenteditable: 'contentEditable',
  contextmenu: 'contextMenu',
  controls: 'controls',
  controlsList: 'controlsList',
  coords: 'coords',
  crossorigin: 'crossOrigin',
  data: 'data',
  datetime: 'dateTime',
  default: 'default',
  defer: 'defer',
  dir: 'dir',
  disabled: 'disabled',
  download: 'download',
  draggable: 'draggable',
  enctype: 'encType',
  form: 'form',
  formaction: 'formAction',
  formenctype: 'formEncType',
  formmethod: 'formMethod',
  formnovalidate: 'formNoValidate',
  formtarget: 'formTarget',
  frameborder: 'frameBorder',
  headers: 'headers',
  height: 'height',
  hidden: 'hidden',
  high: 'high',
  href: 'href',
  hreflang: 'hrefLang',
  for: 'htmlFor',
  'http-equiv': 'httpEquiv',
  icon: 'icon',
  id: 'id',
  inputmode: 'inputMode',
  integrity: 'integrity',
  is: 'is',
  keyparams: 'keyParams',
  keytype: 'keyType',
  kind: 'kind',
  label: 'label',
  lang: 'lang',
  list: 'list',
  loop: 'loop',
  low: 'low',
  manifest: 'manifest',
  marginheight: 'marginHeight',
  marginwidth: 'marginWidth',
  max: 'max',
  maxlength: 'maxLength',
  media: 'media',
  mediagroup: 'mediaGroup',
  method: 'method',
  min: 'min',
  minlength: 'minLength',
  multiple: 'multiple',
  muted: 'muted',
  name: 'name',
  nonce: 'nonce',
  novalidate: 'noValidate',
  open: 'open',
  optimum: 'optimum',
  pattern: 'pattern',
  placeholder: 'placeholder',
  playsinline: 'playsInline',
  poster: 'poster',
  preload: 'preload',
  profile: 'profile',
  radiogroup: 'radioGroup',
  readonly: 'readOnly',
  referrerpolicy: 'referrerPolicy',
  rel: 'rel',
  required: 'required',
  reversed: 'reversed',
  role: 'role',
  rows: 'rows',
  rowspan: 'rowSpan',
  sandbox: 'sandbox',
  scope: 'scope',
  scoped: 'scoped',
  scrolling: 'scrolling',
  seamless: 'seamless',
  selected: 'selected',
  shape: 'shape',
  size: 'size',
  sizes: 'sizes',
  slot: 'slot',
  span: 'span',
  spellcheck: 'spellCheck',
  src: 'src',
  srcdoc: 'srcDoc',
  srclang: 'srcLang',
  srcset: 'srcSet',
  start: 'start',
  step: 'step',
  style: 'style',
  summary: 'summary',
  tabindex: 'tabIndex',
  target: 'target',
  title: 'title',
  type: 'type',
  usemap: 'useMap',
  value: 'value',
  width: 'width',
  wmode: 'wmode',
  wrap: 'wrap',
  /**
   * RDFa Properties
   */
  about: 'about',
  datatype: 'datatype',
  inlist: 'inlist',
  prefix: 'prefix',
  property: 'property',
  resource: 'resource',
  typeof: 'typeof',
  vocab: 'vocab',
  /**
   * Non-standard Properties
   */
  autocapitalize: 'autoCapitalize',
  autocorrect: 'autoCorrect',
  autosave: 'autoSave',
  color: 'color',
  itemprop: 'itemProp',
  itemscope: 'itemScope',
  itemtype: 'itemType',
  itemid: 'itemID',
  itemref: 'itemRef',
  results: 'results',
  security: 'security',
  unselectable: 'unselectable'
};

/***/ }),

/***/ "./node_modules/react-html-parser/lib/dom/elements/VoidElements.js":
/*!*************************************************************************!*\
  !*** ./node_modules/react-html-parser/lib/dom/elements/VoidElements.js ***!
  \*************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
/**
 * List of void elements
 * These elements are not allowed to have children
 * @type {Array}
 */
exports["default"] = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'];

/***/ }),

/***/ "./node_modules/react-html-parser/lib/elementTypes/StyleElementType.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/react-html-parser/lib/elementTypes/StyleElementType.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = StyleElementType;

var _react = __webpack_require__(/*! react */ "react");

var _react2 = _interopRequireDefault(_react);

var _generatePropsFromAttributes = __webpack_require__(/*! ../utils/generatePropsFromAttributes */ "./node_modules/react-html-parser/lib/utils/generatePropsFromAttributes.js");

var _generatePropsFromAttributes2 = _interopRequireDefault(_generatePropsFromAttributes);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/**
 * Converts a <style> element to a React element
 *
 * @param {Object} node The style node
 * @param {String} index The index of the React element relative to it's parent
 * @returns {React.Element} The React style element
 */
function StyleElementType(node, index) {

  // The style element only ever has a single child which is the styles so try and find this to add as
  // a child to the style element that will be created
  var styles = void 0;
  if (node.children.length > 0) {
    styles = node.children[0].data;
  }

  // generate props
  var props = (0, _generatePropsFromAttributes2.default)(node.attribs, index);

  // create and return the element
  return _react2.default.createElement('style', props, styles);
}

/***/ }),

/***/ "./node_modules/react-html-parser/lib/elementTypes/TagElementType.js":
/*!***************************************************************************!*\
  !*** ./node_modules/react-html-parser/lib/elementTypes/TagElementType.js ***!
  \***************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = TagElementType;

var _react = __webpack_require__(/*! react */ "react");

var _react2 = _interopRequireDefault(_react);

var _processNodes = __webpack_require__(/*! ../processNodes */ "./node_modules/react-html-parser/lib/processNodes.js");

var _processNodes2 = _interopRequireDefault(_processNodes);

var _generatePropsFromAttributes = __webpack_require__(/*! ../utils/generatePropsFromAttributes */ "./node_modules/react-html-parser/lib/utils/generatePropsFromAttributes.js");

var _generatePropsFromAttributes2 = _interopRequireDefault(_generatePropsFromAttributes);

var _VoidElements = __webpack_require__(/*! ../dom/elements/VoidElements */ "./node_modules/react-html-parser/lib/dom/elements/VoidElements.js");

var _VoidElements2 = _interopRequireDefault(_VoidElements);

var _isValidTagOrAttributeName = __webpack_require__(/*! ../utils/isValidTagOrAttributeName */ "./node_modules/react-html-parser/lib/utils/isValidTagOrAttributeName.js");

var _isValidTagOrAttributeName2 = _interopRequireDefault(_isValidTagOrAttributeName);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/**
 * Converts any element (excluding style - see StyleElementType - and script) to a react element.
 *
 * @param {Object} node The tag node
 * @param {String} index The index of the React element relative to it's parent
 * @param {Function} transform The transform function to apply to all children
 * @returns {React.Element} The React tag element
 */
function TagElementType(node, index, transform) {

  var tagName = node.name;

  // validate tag name
  if (!(0, _isValidTagOrAttributeName2.default)(tagName)) {
    return null;
  }

  // generate props
  var props = (0, _generatePropsFromAttributes2.default)(node.attribs, index);

  // If the node is not a void element and has children then process them
  var children = null;
  if (_VoidElements2.default.indexOf(tagName) === -1) {
    children = (0, _processNodes2.default)(node.children, transform);
  }

  // create and return the element
  return _react2.default.createElement(tagName, props, children);
}

/***/ }),

/***/ "./node_modules/react-html-parser/lib/elementTypes/TextElementType.js":
/*!****************************************************************************!*\
  !*** ./node_modules/react-html-parser/lib/elementTypes/TextElementType.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = TextElementType;
/**
 * Converts a text node to a React text element
 *
 * @param {Object} node The text node
 * @returns {String} The text
 */
function TextElementType(node) {

  // React will accept plain text for rendering so just return the node data
  return node.data;
}

/***/ }),

/***/ "./node_modules/react-html-parser/lib/elementTypes/UnsupportedElementType.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/react-html-parser/lib/elementTypes/UnsupportedElementType.js ***!
  \***********************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = UnsupportedElementType;
/**
 * Handles an unsupported element type by returning null so nothing is rendered
 * @returns {null}
 */
function UnsupportedElementType() {

  // do nothing because the element type is unsupported
  // comment, directive, script, cdata, doctype are all currently unsupported
  return null;
}

/***/ }),

/***/ "./node_modules/react-html-parser/lib/elementTypes/index.js":
/*!******************************************************************!*\
  !*** ./node_modules/react-html-parser/lib/elementTypes/index.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));

var _ElementType$Text$Ele;

var _htmlparser = __webpack_require__(/*! htmlparser2 */ "./node_modules/htmlparser2/lib/index.js");

var _TextElementType = __webpack_require__(/*! ./TextElementType */ "./node_modules/react-html-parser/lib/elementTypes/TextElementType.js");

var _TextElementType2 = _interopRequireDefault(_TextElementType);

var _TagElementType = __webpack_require__(/*! ./TagElementType */ "./node_modules/react-html-parser/lib/elementTypes/TagElementType.js");

var _TagElementType2 = _interopRequireDefault(_TagElementType);

var _StyleElementType = __webpack_require__(/*! ./StyleElementType */ "./node_modules/react-html-parser/lib/elementTypes/StyleElementType.js");

var _StyleElementType2 = _interopRequireDefault(_StyleElementType);

var _UnsupportedElementType = __webpack_require__(/*! ./UnsupportedElementType */ "./node_modules/react-html-parser/lib/elementTypes/UnsupportedElementType.js");

var _UnsupportedElementType2 = _interopRequireDefault(_UnsupportedElementType);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _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; } /*
                                                                                                                                                                                                                   * Map each htmlparser2 element type to a function which will convert that element type to a React element
                                                                                                                                                                                                                   * Not all of the element types are supported so the UnsupportedElementType is used for them which will not return any
                                                                                                                                                                                                                   * value
                                                                                                                                                                                                                   */

exports["default"] = (_ElementType$Text$Ele = {}, _defineProperty(_ElementType$Text$Ele, _htmlparser.ElementType.Text, _TextElementType2.default), _defineProperty(_ElementType$Text$Ele, _htmlparser.ElementType.Tag, _TagElementType2.default), _defineProperty(_ElementType$Text$Ele, _htmlparser.ElementType.Style, _StyleElementType2.default), _defineProperty(_ElementType$Text$Ele, _htmlparser.ElementType.Directive, _UnsupportedElementType2.default), _defineProperty(_ElementType$Text$Ele, _htmlparser.ElementType.Comment, _UnsupportedElementType2.default), _defineProperty(_ElementType$Text$Ele, _htmlparser.ElementType.Script, _UnsupportedElementType2.default), _defineProperty(_ElementType$Text$Ele, _htmlparser.ElementType.CDATA, _UnsupportedElementType2.default), _defineProperty(_ElementType$Text$Ele, _htmlparser.ElementType.Doctype, _UnsupportedElementType2.default), _ElementType$Text$Ele);

/***/ }),

/***/ "./node_modules/react-html-parser/lib/index.js":
/*!*****************************************************!*\
  !*** ./node_modules/react-html-parser/lib/index.js ***!
  \*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.htmlparser2 = exports.convertNodeToElement = exports.processNodes = undefined;

var _processNodes = __webpack_require__(/*! ./processNodes */ "./node_modules/react-html-parser/lib/processNodes.js");

Object.defineProperty(exports, "processNodes", ({
  enumerable: true,
  get: function get() {
    return _interopRequireDefault(_processNodes).default;
  }
}));

var _convertNodeToElement = __webpack_require__(/*! ./convertNodeToElement */ "./node_modules/react-html-parser/lib/convertNodeToElement.js");

Object.defineProperty(exports, "convertNodeToElement", ({
  enumerable: true,
  get: function get() {
    return _interopRequireDefault(_convertNodeToElement).default;
  }
}));

var _htmlparser = __webpack_require__(/*! htmlparser2 */ "./node_modules/htmlparser2/lib/index.js");

Object.defineProperty(exports, "htmlparser2", ({
  enumerable: true,
  get: function get() {
    return _interopRequireDefault(_htmlparser).default;
  }
}));

var _HtmlParser = __webpack_require__(/*! ./HtmlParser */ "./node_modules/react-html-parser/lib/HtmlParser.js");

var _HtmlParser2 = _interopRequireDefault(_HtmlParser);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

exports["default"] = _HtmlParser2.default;

/***/ }),

/***/ "./node_modules/react-html-parser/lib/processNodes.js":
/*!************************************************************!*\
  !*** ./node_modules/react-html-parser/lib/processNodes.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = processNodes;

var _isEmptyTextNode = __webpack_require__(/*! ./utils/isEmptyTextNode */ "./node_modules/react-html-parser/lib/utils/isEmptyTextNode.js");

var _isEmptyTextNode2 = _interopRequireDefault(_isEmptyTextNode);

var _convertNodeToElement = __webpack_require__(/*! ./convertNodeToElement */ "./node_modules/react-html-parser/lib/convertNodeToElement.js");

var _convertNodeToElement2 = _interopRequireDefault(_convertNodeToElement);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/**
 * Processes the nodes generated by htmlparser2 and convert them all into React elements
 *
 * @param {Object[]} nodes List of nodes to process
 * @param {Function} transform Transform function to optionally apply to nodes
 * @returns {React.Element[]} The list of processed React elements
 */
function processNodes(nodes, transform) {

  return nodes.filter(function (node) {
    return !(0, _isEmptyTextNode2.default)(node);
  }).map(function (node, index) {

    // return the result of the transform function if applicable
    var transformed = void 0;
    if (typeof transform === 'function') {
      transformed = transform(node, index);
      if (transformed === null || !!transformed) {
        return transformed;
      }
    }

    // otherwise convert the node as standard
    return (0, _convertNodeToElement2.default)(node, index, transform);
  });
}

/***/ }),

/***/ "./node_modules/react-html-parser/lib/utils/generatePropsFromAttributes.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/react-html-parser/lib/utils/generatePropsFromAttributes.js ***!
  \*********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));

var _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; };

exports["default"] = generatePropsFromAttributes;

var _htmlAttributesToReact = __webpack_require__(/*! ./htmlAttributesToReact */ "./node_modules/react-html-parser/lib/utils/htmlAttributesToReact.js");

var _htmlAttributesToReact2 = _interopRequireDefault(_htmlAttributesToReact);

var _inlineStyleToObject = __webpack_require__(/*! ./inlineStyleToObject */ "./node_modules/react-html-parser/lib/utils/inlineStyleToObject.js");

var _inlineStyleToObject2 = _interopRequireDefault(_inlineStyleToObject);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/**
 * Generates props for a React element from an object of HTML attributes
 *
 * @param {Object} attributes The HTML attributes
 * @param {String} key The key to give the react element
 */
function generatePropsFromAttributes(attributes, key) {

  // generate props
  var props = _extends({}, (0, _htmlAttributesToReact2.default)(attributes), { key: key });

  // if there is an inline/string style prop then convert it to a React style object
  // otherwise, it is invalid and omitted
  if (typeof props.style === 'string' || props.style instanceof String) {
    props.style = (0, _inlineStyleToObject2.default)(props.style);
  } else {
    delete props.style;
  }

  return props;
}

/***/ }),

/***/ "./node_modules/react-html-parser/lib/utils/htmlAttributesToReact.js":
/*!***************************************************************************!*\
  !*** ./node_modules/react-html-parser/lib/utils/htmlAttributesToReact.js ***!
  \***************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = htmlAttributesToReact;

var _BooleanAttributes = __webpack_require__(/*! ../dom/attributes/BooleanAttributes */ "./node_modules/react-html-parser/lib/dom/attributes/BooleanAttributes.js");

var _BooleanAttributes2 = _interopRequireDefault(_BooleanAttributes);

var _ReactAttributes = __webpack_require__(/*! ../dom/attributes/ReactAttributes */ "./node_modules/react-html-parser/lib/dom/attributes/ReactAttributes.js");

var _ReactAttributes2 = _interopRequireDefault(_ReactAttributes);

var _isValidTagOrAttributeName = __webpack_require__(/*! ./isValidTagOrAttributeName */ "./node_modules/react-html-parser/lib/utils/isValidTagOrAttributeName.js");

var _isValidTagOrAttributeName2 = _interopRequireDefault(_isValidTagOrAttributeName);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/**
 * Returns the parsed attribute value taking into account things like boolean attributes
 *
 * @param {String} attribute The name of the attribute
 * @param {*} value The value of the attribute from the HTML
 * @returns {*} The parsed attribute value
 */
var getParsedAttributeValue = function getParsedAttributeValue(attribute, value) {

  // if the attribute if a boolean then it's value should be the same as it's name
  // e.g. disabled="disabled"
  var lowerBooleanAttributes = _BooleanAttributes2.default.map(function (attr) {
    return attr.toLowerCase();
  });
  if (lowerBooleanAttributes.indexOf(attribute.toLowerCase()) >= 0) {
    value = attribute;
  }

  return value;
};

/**
 * Takes an object of standard HTML property names and converts them to their React counterpart. If the react
 * version does not exist for an attribute then just use it as it is
 *
 * @param {Object} attributes The HTML attributes to convert
 * @returns {Object} The React attributes
 */
function htmlAttributesToReact(attributes) {

  return Object.keys(attributes).filter(function (attr) {
    return (0, _isValidTagOrAttributeName2.default)(attr);
  }).reduce(function (mappedAttributes, attribute) {

    // lowercase the attribute name and find it in the react attribute map
    var lowerCaseAttribute = attribute.toLowerCase();

    // format the attribute name
    var name = _ReactAttributes2.default[lowerCaseAttribute] || lowerCaseAttribute;

    // add the parsed attribute value to the mapped attributes
    mappedAttributes[name] = getParsedAttributeValue(name, attributes[attribute]);

    return mappedAttributes;
  }, {});
}

/***/ }),

/***/ "./node_modules/react-html-parser/lib/utils/inlineStyleToObject.js":
/*!*************************************************************************!*\
  !*** ./node_modules/react-html-parser/lib/utils/inlineStyleToObject.js ***!
  \*************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));

var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();

exports["default"] = InlineStyleToObject;
/**
 * Converts an inline style string into an object of React style properties
 *
 * @param {String} inlineStyle='' The inline style to convert
 * @returns {Object} The converted style
 */
function InlineStyleToObject() {
  var inlineStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';


  // just return empty object if the inlineStyle is empty
  if (inlineStyle === '') {
    return {};
  }

  return inlineStyle.split(';').reduce(function (styleObject, stylePropertyValue) {

    // extract the style property name and value
    var _stylePropertyValue$s = stylePropertyValue.split(/^([^:]+):/).filter(function (val, i) {
      return i > 0;
    }).map(function (item) {
      return item.trim().toLowerCase();
    }),
        _stylePropertyValue$s2 = _slicedToArray(_stylePropertyValue$s, 2),
        property = _stylePropertyValue$s2[0],
        value = _stylePropertyValue$s2[1];

    // if there is no value (i.e. no : in the style) then ignore it


    if (value === undefined) {
      return styleObject;
    }

    // convert the property name into the correct React format
    // remove all hyphens and convert the letter immediately after each hyphen to upper case
    // additionally don't uppercase any -ms- prefix
    // e.g. -ms-style-property = msStyleProperty
    //      -webkit-style-property = WebkitStyleProperty
    property = property.replace(/^-ms-/, 'ms-').replace(/-(.)/g, function (_, character) {
      return character.toUpperCase();
    });

    // add the new style property and value to the style object
    styleObject[property] = value;

    return styleObject;
  }, {});
}

/***/ }),

/***/ "./node_modules/react-html-parser/lib/utils/isEmptyTextNode.js":
/*!*********************************************************************!*\
  !*** ./node_modules/react-html-parser/lib/utils/isEmptyTextNode.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = isEmptyTextNode;
/**
 * Tests a htmlparser2 node and returns whether is it a text node at the start and end of the line containing only
 * white space. This allows these node types to be excluded from the rendering because they are unnecessary.
 *
 * @param {Object} node The element object as created by htmlparser2
 * @returns {boolean} Whether the node is an empty text node
 */
function isEmptyTextNode(node) {
  return node.type === 'text' && /\r?\n/.test(node.data) && node.data.trim() === '';
}

/***/ }),

/***/ "./node_modules/react-html-parser/lib/utils/isValidTagOrAttributeName.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/react-html-parser/lib/utils/isValidTagOrAttributeName.js ***!
  \*******************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = isValidTagOrAttributeName;
var VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\.\-\d]*$/;

var nameCache = {};

function isValidTagOrAttributeName(tagName) {
  if (!nameCache.hasOwnProperty(tagName)) {
    nameCache[tagName] = VALID_TAG_REGEX.test(tagName);
  }
  return nameCache[tagName];
}

/***/ }),

/***/ "./node_modules/react-is/cjs/react-is.development.js":
/*!***********************************************************!*\
  !*** ./node_modules/react-is/cjs/react-is.development.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";
/** @license React v17.0.2
 * react-is.development.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



if (true) {
  (function() {
'use strict';

// ATTENTION
// When adding new symbols to this file,
// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
// The Symbol used to tag the ReactElement-like types. If there is no native Symbol
// nor polyfill, then a plain number is used for performance.
var REACT_ELEMENT_TYPE = 0xeac7;
var REACT_PORTAL_TYPE = 0xeaca;
var REACT_FRAGMENT_TYPE = 0xeacb;
var REACT_STRICT_MODE_TYPE = 0xeacc;
var REACT_PROFILER_TYPE = 0xead2;
var REACT_PROVIDER_TYPE = 0xeacd;
var REACT_CONTEXT_TYPE = 0xeace;
var REACT_FORWARD_REF_TYPE = 0xead0;
var REACT_SUSPENSE_TYPE = 0xead1;
var REACT_SUSPENSE_LIST_TYPE = 0xead8;
var REACT_MEMO_TYPE = 0xead3;
var REACT_LAZY_TYPE = 0xead4;
var REACT_BLOCK_TYPE = 0xead9;
var REACT_SERVER_BLOCK_TYPE = 0xeada;
var REACT_FUNDAMENTAL_TYPE = 0xead5;
var REACT_SCOPE_TYPE = 0xead7;
var REACT_OPAQUE_ID_TYPE = 0xeae0;
var REACT_DEBUG_TRACING_MODE_TYPE = 0xeae1;
var REACT_OFFSCREEN_TYPE = 0xeae2;
var REACT_LEGACY_HIDDEN_TYPE = 0xeae3;

if (typeof Symbol === 'function' && Symbol.for) {
  var symbolFor = Symbol.for;
  REACT_ELEMENT_TYPE = symbolFor('react.element');
  REACT_PORTAL_TYPE = symbolFor('react.portal');
  REACT_FRAGMENT_TYPE = symbolFor('react.fragment');
  REACT_STRICT_MODE_TYPE = symbolFor('react.strict_mode');
  REACT_PROFILER_TYPE = symbolFor('react.profiler');
  REACT_PROVIDER_TYPE = symbolFor('react.provider');
  REACT_CONTEXT_TYPE = symbolFor('react.context');
  REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref');
  REACT_SUSPENSE_TYPE = symbolFor('react.suspense');
  REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list');
  REACT_MEMO_TYPE = symbolFor('react.memo');
  REACT_LAZY_TYPE = symbolFor('react.lazy');
  REACT_BLOCK_TYPE = symbolFor('react.block');
  REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block');
  REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental');
  REACT_SCOPE_TYPE = symbolFor('react.scope');
  REACT_OPAQUE_ID_TYPE = symbolFor('react.opaque.id');
  REACT_DEBUG_TRACING_MODE_TYPE = symbolFor('react.debug_trace_mode');
  REACT_OFFSCREEN_TYPE = symbolFor('react.offscreen');
  REACT_LEGACY_HIDDEN_TYPE = symbolFor('react.legacy_hidden');
}

// Filter certain DOM attributes (e.g. src, href) if their values are empty strings.

var enableScopeAPI = false; // Experimental Create Event Handle API.

function isValidElementType(type) {
  if (typeof type === 'string' || typeof type === 'function') {
    return true;
  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).


  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || type === REACT_DEBUG_TRACING_MODE_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_LEGACY_HIDDEN_TYPE || enableScopeAPI ) {
    return true;
  }

  if (typeof type === 'object' && type !== null) {
    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_BLOCK_TYPE || type[0] === REACT_SERVER_BLOCK_TYPE) {
      return true;
    }
  }

  return false;
}

function typeOf(object) {
  if (typeof object === 'object' && object !== null) {
    var $$typeof = object.$$typeof;

    switch ($$typeof) {
      case REACT_ELEMENT_TYPE:
        var type = object.type;

        switch (type) {
          case REACT_FRAGMENT_TYPE:
          case REACT_PROFILER_TYPE:
          case REACT_STRICT_MODE_TYPE:
          case REACT_SUSPENSE_TYPE:
          case REACT_SUSPENSE_LIST_TYPE:
            return type;

          default:
            var $$typeofType = type && type.$$typeof;

            switch ($$typeofType) {
              case REACT_CONTEXT_TYPE:
              case REACT_FORWARD_REF_TYPE:
              case REACT_LAZY_TYPE:
              case REACT_MEMO_TYPE:
              case REACT_PROVIDER_TYPE:
                return $$typeofType;

              default:
                return $$typeof;
            }

        }

      case REACT_PORTAL_TYPE:
        return $$typeof;
    }
  }

  return undefined;
}
var ContextConsumer = REACT_CONTEXT_TYPE;
var ContextProvider = REACT_PROVIDER_TYPE;
var Element = REACT_ELEMENT_TYPE;
var ForwardRef = REACT_FORWARD_REF_TYPE;
var Fragment = REACT_FRAGMENT_TYPE;
var Lazy = REACT_LAZY_TYPE;
var Memo = REACT_MEMO_TYPE;
var Portal = REACT_PORTAL_TYPE;
var Profiler = REACT_PROFILER_TYPE;
var StrictMode = REACT_STRICT_MODE_TYPE;
var Suspense = REACT_SUSPENSE_TYPE;
var hasWarnedAboutDeprecatedIsAsyncMode = false;
var hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated

function isAsyncMode(object) {
  {
    if (!hasWarnedAboutDeprecatedIsAsyncMode) {
      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint

      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');
    }
  }

  return false;
}
function isConcurrentMode(object) {
  {
    if (!hasWarnedAboutDeprecatedIsConcurrentMode) {
      hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint

      console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');
    }
  }

  return false;
}
function isContextConsumer(object) {
  return typeOf(object) === REACT_CONTEXT_TYPE;
}
function isContextProvider(object) {
  return typeOf(object) === REACT_PROVIDER_TYPE;
}
function isElement(object) {
  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
}
function isForwardRef(object) {
  return typeOf(object) === REACT_FORWARD_REF_TYPE;
}
function isFragment(object) {
  return typeOf(object) === REACT_FRAGMENT_TYPE;
}
function isLazy(object) {
  return typeOf(object) === REACT_LAZY_TYPE;
}
function isMemo(object) {
  return typeOf(object) === REACT_MEMO_TYPE;
}
function isPortal(object) {
  return typeOf(object) === REACT_PORTAL_TYPE;
}
function isProfiler(object) {
  return typeOf(object) === REACT_PROFILER_TYPE;
}
function isStrictMode(object) {
  return typeOf(object) === REACT_STRICT_MODE_TYPE;
}
function isSuspense(object) {
  return typeOf(object) === REACT_SUSPENSE_TYPE;
}

exports.ContextConsumer = ContextConsumer;
exports.ContextProvider = ContextProvider;
exports.Element = Element;
exports.ForwardRef = ForwardRef;
exports.Fragment = Fragment;
exports.Lazy = Lazy;
exports.Memo = Memo;
exports.Portal = Portal;
exports.Profiler = Profiler;
exports.StrictMode = StrictMode;
exports.Suspense = Suspense;
exports.isAsyncMode = isAsyncMode;
exports.isConcurrentMode = isConcurrentMode;
exports.isContextConsumer = isContextConsumer;
exports.isContextProvider = isContextProvider;
exports.isElement = isElement;
exports.isForwardRef = isForwardRef;
exports.isFragment = isFragment;
exports.isLazy = isLazy;
exports.isMemo = isMemo;
exports.isPortal = isPortal;
exports.isProfiler = isProfiler;
exports.isStrictMode = isStrictMode;
exports.isSuspense = isSuspense;
exports.isValidElementType = isValidElementType;
exports.typeOf = typeOf;
  })();
}


/***/ }),

/***/ "./node_modules/react-is/index.js":
/*!****************************************!*\
  !*** ./node_modules/react-is/index.js ***!
  \****************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


if (false) {} else {
  module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "./node_modules/react-is/cjs/react-is.development.js");
}


/***/ }),

/***/ "./node_modules/react-redux/es/components/Context.js":
/*!***********************************************************!*\
  !*** ./node_modules/react-redux/es/components/Context.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   ReactReduxContext: () => (/* binding */ ReactReduxContext),
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);

var ReactReduxContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createContext(null);

if (true) {
  ReactReduxContext.displayName = 'ReactRedux';
}

/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ReactReduxContext);

/***/ }),

/***/ "./node_modules/react-redux/es/components/Provider.js":
/*!************************************************************!*\
  !*** ./node_modules/react-redux/es/components/Provider.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Context */ "./node_modules/react-redux/es/components/Context.js");
/* harmony import */ var _utils_Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/Subscription */ "./node_modules/react-redux/es/utils/Subscription.js");
/* harmony import */ var _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/useIsomorphicLayoutEffect */ "./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js");






function Provider(_ref) {
  var store = _ref.store,
      context = _ref.context,
      children = _ref.children;
  var contextValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {
    var subscription = (0,_utils_Subscription__WEBPACK_IMPORTED_MODULE_2__.createSubscription)(store);
    return {
      store: store,
      subscription: subscription
    };
  }, [store]);
  var previousState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {
    return store.getState();
  }, [store]);
  (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__.useIsomorphicLayoutEffect)(function () {
    var subscription = contextValue.subscription;
    subscription.onStateChange = subscription.notifyNestedSubs;
    subscription.trySubscribe();

    if (previousState !== store.getState()) {
      subscription.notifyNestedSubs();
    }

    return function () {
      subscription.tryUnsubscribe();
      subscription.onStateChange = null;
    };
  }, [contextValue, previousState]);
  var Context = context || _Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext;
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Context.Provider, {
    value: contextValue
  }, children);
}

if (true) {
  Provider.propTypes = {
    store: prop_types__WEBPACK_IMPORTED_MODULE_4___default().shape({
      subscribe: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func).isRequired,
      dispatch: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func).isRequired,
      getState: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func).isRequired
    }),
    context: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().object),
    children: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().any)
  };
}

/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Provider);

/***/ }),

/***/ "./node_modules/react-redux/es/components/connectAdvanced.js":
/*!*******************************************************************!*\
  !*** ./node_modules/react-redux/es/components/connectAdvanced.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ connectAdvanced)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js");
/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! hoist-non-react-statics */ "./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js");
/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-is */ "./node_modules/react-is/index.js");
/* harmony import */ var _utils_Subscription__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/Subscription */ "./node_modules/react-redux/es/utils/Subscription.js");
/* harmony import */ var _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/useIsomorphicLayoutEffect */ "./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js");
/* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Context */ "./node_modules/react-redux/es/components/Context.js");


var _excluded = ["getDisplayName", "methodName", "renderCountProp", "shouldHandleStateChanges", "storeKey", "withRef", "forwardRef", "context"],
    _excluded2 = ["reactReduxForwardedRef"];





 // Define some constant arrays just to avoid re-creating these

var EMPTY_ARRAY = [];
var NO_SUBSCRIPTION_ARRAY = [null, null];

var stringifyComponent = function stringifyComponent(Comp) {
  try {
    return JSON.stringify(Comp);
  } catch (err) {
    return String(Comp);
  }
};

function storeStateUpdatesReducer(state, action) {
  var updateCount = state[1];
  return [action.payload, updateCount + 1];
}

function useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {
  (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_6__.useIsomorphicLayoutEffect)(function () {
    return effectFunc.apply(void 0, effectArgs);
  }, dependencies);
}

function captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {
  // We want to capture the wrapper props and child props we used for later comparisons
  lastWrapperProps.current = wrapperProps;
  lastChildProps.current = actualChildProps;
  renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update

  if (childPropsFromStoreUpdate.current) {
    childPropsFromStoreUpdate.current = null;
    notifyNestedSubs();
  }
}

function subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {
  // If we're not subscribed to the store, nothing to do here
  if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts

  var didUnsubscribe = false;
  var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component

  var checkForUpdates = function checkForUpdates() {
    if (didUnsubscribe) {
      // Don't run stale listeners.
      // Redux doesn't guarantee unsubscriptions happen until next dispatch.
      return;
    }

    var latestStoreState = store.getState();
    var newChildProps, error;

    try {
      // Actually run the selector with the most recent store state and wrapper props
      // to determine what the child props should be
      newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);
    } catch (e) {
      error = e;
      lastThrownError = e;
    }

    if (!error) {
      lastThrownError = null;
    } // If the child props haven't changed, nothing to do here - cascade the subscription update


    if (newChildProps === lastChildProps.current) {
      if (!renderIsScheduled.current) {
        notifyNestedSubs();
      }
    } else {
      // Save references to the new child props.  Note that we track the "child props from store update"
      // as a ref instead of a useState/useReducer because we need a way to determine if that value has
      // been processed.  If this went into useState/useReducer, we couldn't clear out the value without
      // forcing another re-render, which we don't want.
      lastChildProps.current = newChildProps;
      childPropsFromStoreUpdate.current = newChildProps;
      renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render

      forceComponentUpdateDispatch({
        type: 'STORE_UPDATED',
        payload: {
          error: error
        }
      });
    }
  }; // Actually subscribe to the nearest connected ancestor (or store)


  subscription.onStateChange = checkForUpdates;
  subscription.trySubscribe(); // Pull data from the store after first render in case the store has
  // changed since we began.

  checkForUpdates();

  var unsubscribeWrapper = function unsubscribeWrapper() {
    didUnsubscribe = true;
    subscription.tryUnsubscribe();
    subscription.onStateChange = null;

    if (lastThrownError) {
      // It's possible that we caught an error due to a bad mapState function, but the
      // parent re-rendered without this component and we're about to unmount.
      // This shouldn't happen as long as we do top-down subscriptions correctly, but
      // if we ever do those wrong, this throw will surface the error in our tests.
      // In that case, throw the error from here so it doesn't get lost.
      throw lastThrownError;
    }
  };

  return unsubscribeWrapper;
}

var initStateUpdates = function initStateUpdates() {
  return [null, 0];
};

function connectAdvanced(
/*
  selectorFactory is a func that is responsible for returning the selector function used to
  compute new props from state, props, and dispatch. For example:
      export default connectAdvanced((dispatch, options) => (state, props) => ({
      thing: state.things[props.thingId],
      saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),
    }))(YourComponent)
    Access to dispatch is provided to the factory so selectorFactories can bind actionCreators
  outside of their selector as an optimization. Options passed to connectAdvanced are passed to
  the selectorFactory, along with displayName and WrappedComponent, as the second argument.
    Note that selectorFactory is responsible for all caching/memoization of inbound and outbound
  props. Do not use connectAdvanced directly without memoizing results between calls to your
  selector, otherwise the Connect component will re-render on every state or props change.
*/
selectorFactory, // options object:
_ref) {
  if (_ref === void 0) {
    _ref = {};
  }

  var _ref2 = _ref,
      _ref2$getDisplayName = _ref2.getDisplayName,
      getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {
    return "ConnectAdvanced(" + name + ")";
  } : _ref2$getDisplayName,
      _ref2$methodName = _ref2.methodName,
      methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,
      _ref2$renderCountProp = _ref2.renderCountProp,
      renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,
      _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,
      shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,
      _ref2$storeKey = _ref2.storeKey,
      storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,
      _ref2$withRef = _ref2.withRef,
      withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,
      _ref2$forwardRef = _ref2.forwardRef,
      forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,
      _ref2$context = _ref2.context,
      context = _ref2$context === void 0 ? _Context__WEBPACK_IMPORTED_MODULE_7__.ReactReduxContext : _ref2$context,
      connectOptions = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref2, _excluded);

  if (true) {
    if (renderCountProp !== undefined) {
      throw new Error("renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension");
    }

    if (withRef) {
      throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');
    }

    var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + "React.createContext(), and pass the context object to React Redux's Provider and specific components" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';

    if (storeKey !== 'store') {
      throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);
    }
  }

  var Context = context;
  return function wrapWithConnect(WrappedComponent) {
    if ( true && !(0,react_is__WEBPACK_IMPORTED_MODULE_4__.isValidElementType)(WrappedComponent)) {
      throw new Error("You must pass a component to the function returned by " + (methodName + ". Instead received " + stringifyComponent(WrappedComponent)));
    }

    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';
    var displayName = getDisplayName(wrappedComponentName);

    var selectorFactoryOptions = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, connectOptions, {
      getDisplayName: getDisplayName,
      methodName: methodName,
      renderCountProp: renderCountProp,
      shouldHandleStateChanges: shouldHandleStateChanges,
      storeKey: storeKey,
      displayName: displayName,
      wrappedComponentName: wrappedComponentName,
      WrappedComponent: WrappedComponent
    });

    var pure = connectOptions.pure;

    function createChildSelector(store) {
      return selectorFactory(store.dispatch, selectorFactoryOptions);
    } // If we aren't running in "pure" mode, we don't want to memoize values.
    // To avoid conditionally calling hooks, we fall back to a tiny wrapper
    // that just executes the given callback immediately.


    var usePureOnlyMemo = pure ? react__WEBPACK_IMPORTED_MODULE_3__.useMemo : function (callback) {
      return callback();
    };

    function ConnectFunction(props) {
      var _useMemo = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {
        // Distinguish between actual "data" props that were passed to the wrapper component,
        // and values needed to control behavior (forwarded refs, alternate context instances).
        // To maintain the wrapperProps object reference, memoize this destructuring.
        var reactReduxForwardedRef = props.reactReduxForwardedRef,
            wrapperProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(props, _excluded2);

        return [props.context, reactReduxForwardedRef, wrapperProps];
      }, [props]),
          propsContext = _useMemo[0],
          reactReduxForwardedRef = _useMemo[1],
          wrapperProps = _useMemo[2];

      var ContextToUse = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {
        // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.
        // Memoize the check that determines which context instance we should use.
        return propsContext && propsContext.Consumer && (0,react_is__WEBPACK_IMPORTED_MODULE_4__.isContextConsumer)( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(propsContext.Consumer, null)) ? propsContext : Context;
      }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available

      var contextValue = (0,react__WEBPACK_IMPORTED_MODULE_3__.useContext)(ContextToUse); // The store _must_ exist as either a prop or in context.
      // We'll check to see if it _looks_ like a Redux store first.
      // This allows us to pass through a `store` prop that is just a plain value.

      var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);
      var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);

      if ( true && !didStoreComeFromProps && !didStoreComeFromContext) {
        throw new Error("Could not find \"store\" in the context of " + ("\"" + displayName + "\". Either wrap the root component in a <Provider>, ") + "or pass a custom React context provider to <Provider> and the corresponding " + ("React context consumer to " + displayName + " in connect options."));
      } // Based on the previous check, one of these must be true


      var store = didStoreComeFromProps ? props.store : contextValue.store;
      var childPropsSelector = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {
        // The child props selector needs the store reference as an input.
        // Re-create this selector whenever the store changes.
        return createChildSelector(store);
      }, [store]);

      var _useMemo2 = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {
        if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component
        // connected to the store via props shouldn't use subscription from context, or vice versa.

        // This Subscription's source should match where store came from: props vs. context. A component
        // connected to the store via props shouldn't use subscription from context, or vice versa.
        var subscription = (0,_utils_Subscription__WEBPACK_IMPORTED_MODULE_5__.createSubscription)(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in
        // the middle of the notification loop, where `subscription` will then be null. This can
        // probably be avoided if Subscription's listeners logic is changed to not call listeners
        // that have been unsubscribed in the  middle of the notification loop.

        // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in
        // the middle of the notification loop, where `subscription` will then be null. This can
        // probably be avoided if Subscription's listeners logic is changed to not call listeners
        // that have been unsubscribed in the  middle of the notification loop.
        var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);
        return [subscription, notifyNestedSubs];
      }, [store, didStoreComeFromProps, contextValue]),
          subscription = _useMemo2[0],
          notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,
      // and memoize that value to avoid unnecessary context updates.


      var overriddenContextValue = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {
        if (didStoreComeFromProps) {
          // This component is directly subscribed to a store from props.
          // We don't want descendants reading from this store - pass down whatever
          // the existing context value is from the nearest connected ancestor.
          return contextValue;
        } // Otherwise, put this component's subscription instance into context, so that
        // connected descendants won't update until after this component is done


        return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, contextValue, {
          subscription: subscription
        });
      }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update
      // causes a change to the calculated child component props (or we caught an error in mapState)

      var _useReducer = (0,react__WEBPACK_IMPORTED_MODULE_3__.useReducer)(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),
          _useReducer$ = _useReducer[0],
          previousStateUpdateResult = _useReducer$[0],
          forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards


      if (previousStateUpdateResult && previousStateUpdateResult.error) {
        throw previousStateUpdateResult.error;
      } // Set up refs to coordinate values between the subscription effect and the render logic


      var lastChildProps = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)();
      var lastWrapperProps = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)(wrapperProps);
      var childPropsFromStoreUpdate = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)();
      var renderIsScheduled = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)(false);
      var actualChildProps = usePureOnlyMemo(function () {
        // Tricky logic here:
        // - This render may have been triggered by a Redux store update that produced new child props
        // - However, we may have gotten new wrapper props after that
        // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.
        // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.
        // So, we'll use the child props from store update only if the wrapper props are the same as last time.
        if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {
          return childPropsFromStoreUpdate.current;
        } // TODO We're reading the store directly in render() here. Bad idea?
        // This will likely cause Bad Things (TM) to happen in Concurrent Mode.
        // Note that we do this because on renders _not_ caused by store updates, we need the latest store state
        // to determine what the child props should be.


        return childPropsSelector(store.getState(), wrapperProps);
      }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns
      // about useLayoutEffect in SSR, so we try to detect environment and fall back to
      // just useEffect instead to avoid the warning, since neither will run anyway.

      useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes

      useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.
      // We memoize the elements for the rendered child component as an optimization.

      var renderedWrappedComponent = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {
        return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(WrappedComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, actualChildProps, {
          ref: reactReduxForwardedRef
        }));
      }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering
      // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.

      var renderedChild = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {
        if (shouldHandleStateChanges) {
          // If this component is subscribed to store updates, we need to pass its own
          // subscription instance down to our descendants. That means rendering the same
          // Context instance, and putting a different value into the context.
          return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(ContextToUse.Provider, {
            value: overriddenContextValue
          }, renderedWrappedComponent);
        }

        return renderedWrappedComponent;
      }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);
      return renderedChild;
    } // If we're in "pure" mode, ensure our wrapper component only re-renders when incoming props have changed.


    var Connect = pure ? react__WEBPACK_IMPORTED_MODULE_3___default().memo(ConnectFunction) : ConnectFunction;
    Connect.WrappedComponent = WrappedComponent;
    Connect.displayName = ConnectFunction.displayName = displayName;

    if (forwardRef) {
      var forwarded = react__WEBPACK_IMPORTED_MODULE_3___default().forwardRef(function forwardConnectRef(props, ref) {
        return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(Connect, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, {
          reactReduxForwardedRef: ref
        }));
      });
      forwarded.displayName = displayName;
      forwarded.WrappedComponent = WrappedComponent;
      return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(forwarded, WrappedComponent);
    }

    return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(Connect, WrappedComponent);
  };
}

/***/ }),

/***/ "./node_modules/react-redux/es/connect/connect.js":
/*!********************************************************!*\
  !*** ./node_modules/react-redux/es/connect/connect.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   createConnect: () => (/* binding */ createConnect),
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js");
/* harmony import */ var _components_connectAdvanced__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/connectAdvanced */ "./node_modules/react-redux/es/components/connectAdvanced.js");
/* harmony import */ var _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/shallowEqual */ "./node_modules/react-redux/es/utils/shallowEqual.js");
/* harmony import */ var _mapDispatchToProps__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mapDispatchToProps */ "./node_modules/react-redux/es/connect/mapDispatchToProps.js");
/* harmony import */ var _mapStateToProps__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mapStateToProps */ "./node_modules/react-redux/es/connect/mapStateToProps.js");
/* harmony import */ var _mergeProps__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./mergeProps */ "./node_modules/react-redux/es/connect/mergeProps.js");
/* harmony import */ var _selectorFactory__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./selectorFactory */ "./node_modules/react-redux/es/connect/selectorFactory.js");


var _excluded = ["pure", "areStatesEqual", "areOwnPropsEqual", "areStatePropsEqual", "areMergedPropsEqual"];






/*
  connect is a facade over connectAdvanced. It turns its args into a compatible
  selectorFactory, which has the signature:

    (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps
  
  connect passes its args to connectAdvanced as options, which will in turn pass them to
  selectorFactory each time a Connect component instance is instantiated or hot reloaded.

  selectorFactory returns a final props selector from its mapStateToProps,
  mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,
  mergePropsFactories, and pure args.

  The resulting final props selector is called by the Connect component instance whenever
  it receives new props or store state.
 */

function match(arg, factories, name) {
  for (var i = factories.length - 1; i >= 0; i--) {
    var result = factories[i](arg);
    if (result) return result;
  }

  return function (dispatch, options) {
    throw new Error("Invalid value of type " + typeof arg + " for " + name + " argument when connecting component " + options.wrappedComponentName + ".");
  };
}

function strictEqual(a, b) {
  return a === b;
} // createConnect with default args builds the 'official' connect behavior. Calling it with
// different options opens up some testing and extensibility scenarios


function createConnect(_temp) {
  var _ref = _temp === void 0 ? {} : _temp,
      _ref$connectHOC = _ref.connectHOC,
      connectHOC = _ref$connectHOC === void 0 ? _components_connectAdvanced__WEBPACK_IMPORTED_MODULE_2__["default"] : _ref$connectHOC,
      _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,
      mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? _mapStateToProps__WEBPACK_IMPORTED_MODULE_5__["default"] : _ref$mapStateToPropsF,
      _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,
      mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? _mapDispatchToProps__WEBPACK_IMPORTED_MODULE_4__["default"] : _ref$mapDispatchToPro,
      _ref$mergePropsFactor = _ref.mergePropsFactories,
      mergePropsFactories = _ref$mergePropsFactor === void 0 ? _mergeProps__WEBPACK_IMPORTED_MODULE_6__["default"] : _ref$mergePropsFactor,
      _ref$selectorFactory = _ref.selectorFactory,
      selectorFactory = _ref$selectorFactory === void 0 ? _selectorFactory__WEBPACK_IMPORTED_MODULE_7__["default"] : _ref$selectorFactory;

  return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {
    if (_ref2 === void 0) {
      _ref2 = {};
    }

    var _ref3 = _ref2,
        _ref3$pure = _ref3.pure,
        pure = _ref3$pure === void 0 ? true : _ref3$pure,
        _ref3$areStatesEqual = _ref3.areStatesEqual,
        areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,
        _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,
        areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_3__["default"] : _ref3$areOwnPropsEqua,
        _ref3$areStatePropsEq = _ref3.areStatePropsEqual,
        areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_3__["default"] : _ref3$areStatePropsEq,
        _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,
        areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_3__["default"] : _ref3$areMergedPropsE,
        extraOptions = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref3, _excluded);

    var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');
    var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');
    var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');
    return connectHOC(selectorFactory, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
      // used in error messages
      methodName: 'connect',
      // used to compute Connect's displayName from the wrapped component's displayName.
      getDisplayName: function getDisplayName(name) {
        return "Connect(" + name + ")";
      },
      // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes
      shouldHandleStateChanges: Boolean(mapStateToProps),
      // passed through to selectorFactory
      initMapStateToProps: initMapStateToProps,
      initMapDispatchToProps: initMapDispatchToProps,
      initMergeProps: initMergeProps,
      pure: pure,
      areStatesEqual: areStatesEqual,
      areOwnPropsEqual: areOwnPropsEqual,
      areStatePropsEqual: areStatePropsEqual,
      areMergedPropsEqual: areMergedPropsEqual
    }, extraOptions));
  };
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/*#__PURE__*/createConnect());

/***/ }),

/***/ "./node_modules/react-redux/es/connect/mapDispatchToProps.js":
/*!*******************************************************************!*\
  !*** ./node_modules/react-redux/es/connect/mapDispatchToProps.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__),
/* harmony export */   whenMapDispatchToPropsIsFunction: () => (/* binding */ whenMapDispatchToPropsIsFunction),
/* harmony export */   whenMapDispatchToPropsIsMissing: () => (/* binding */ whenMapDispatchToPropsIsMissing),
/* harmony export */   whenMapDispatchToPropsIsObject: () => (/* binding */ whenMapDispatchToPropsIsObject)
/* harmony export */ });
/* harmony import */ var _utils_bindActionCreators__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/bindActionCreators */ "./node_modules/react-redux/es/utils/bindActionCreators.js");
/* harmony import */ var _wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./wrapMapToProps */ "./node_modules/react-redux/es/connect/wrapMapToProps.js");


function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {
  return typeof mapDispatchToProps === 'function' ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsFunc)(mapDispatchToProps, 'mapDispatchToProps') : undefined;
}
function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {
  return !mapDispatchToProps ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsConstant)(function (dispatch) {
    return {
      dispatch: dispatch
    };
  }) : undefined;
}
function whenMapDispatchToPropsIsObject(mapDispatchToProps) {
  return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsConstant)(function (dispatch) {
    return (0,_utils_bindActionCreators__WEBPACK_IMPORTED_MODULE_0__["default"])(mapDispatchToProps, dispatch);
  }) : undefined;
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject]);

/***/ }),

/***/ "./node_modules/react-redux/es/connect/mapStateToProps.js":
/*!****************************************************************!*\
  !*** ./node_modules/react-redux/es/connect/mapStateToProps.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__),
/* harmony export */   whenMapStateToPropsIsFunction: () => (/* binding */ whenMapStateToPropsIsFunction),
/* harmony export */   whenMapStateToPropsIsMissing: () => (/* binding */ whenMapStateToPropsIsMissing)
/* harmony export */ });
/* harmony import */ var _wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./wrapMapToProps */ "./node_modules/react-redux/es/connect/wrapMapToProps.js");

function whenMapStateToPropsIsFunction(mapStateToProps) {
  return typeof mapStateToProps === 'function' ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__.wrapMapToPropsFunc)(mapStateToProps, 'mapStateToProps') : undefined;
}
function whenMapStateToPropsIsMissing(mapStateToProps) {
  return !mapStateToProps ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__.wrapMapToPropsConstant)(function () {
    return {};
  }) : undefined;
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing]);

/***/ }),

/***/ "./node_modules/react-redux/es/connect/mergeProps.js":
/*!***********************************************************!*\
  !*** ./node_modules/react-redux/es/connect/mergeProps.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__),
/* harmony export */   defaultMergeProps: () => (/* binding */ defaultMergeProps),
/* harmony export */   whenMergePropsIsFunction: () => (/* binding */ whenMergePropsIsFunction),
/* harmony export */   whenMergePropsIsOmitted: () => (/* binding */ whenMergePropsIsOmitted),
/* harmony export */   wrapMergePropsFunc: () => (/* binding */ wrapMergePropsFunc)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var _utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/verifyPlainObject */ "./node_modules/react-redux/es/utils/verifyPlainObject.js");


function defaultMergeProps(stateProps, dispatchProps, ownProps) {
  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, ownProps, stateProps, dispatchProps);
}
function wrapMergePropsFunc(mergeProps) {
  return function initMergePropsProxy(dispatch, _ref) {
    var displayName = _ref.displayName,
        pure = _ref.pure,
        areMergedPropsEqual = _ref.areMergedPropsEqual;
    var hasRunOnce = false;
    var mergedProps;
    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {
      var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);

      if (hasRunOnce) {
        if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;
      } else {
        hasRunOnce = true;
        mergedProps = nextMergedProps;
        if (true) (0,_utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_1__["default"])(mergedProps, displayName, 'mergeProps');
      }

      return mergedProps;
    };
  };
}
function whenMergePropsIsFunction(mergeProps) {
  return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;
}
function whenMergePropsIsOmitted(mergeProps) {
  return !mergeProps ? function () {
    return defaultMergeProps;
  } : undefined;
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([whenMergePropsIsFunction, whenMergePropsIsOmitted]);

/***/ }),

/***/ "./node_modules/react-redux/es/connect/selectorFactory.js":
/*!****************************************************************!*\
  !*** ./node_modules/react-redux/es/connect/selectorFactory.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ finalPropsSelectorFactory),
/* harmony export */   impureFinalPropsSelectorFactory: () => (/* binding */ impureFinalPropsSelectorFactory),
/* harmony export */   pureFinalPropsSelectorFactory: () => (/* binding */ pureFinalPropsSelectorFactory)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js");
/* harmony import */ var _verifySubselectors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./verifySubselectors */ "./node_modules/react-redux/es/connect/verifySubselectors.js");

var _excluded = ["initMapStateToProps", "initMapDispatchToProps", "initMergeProps"];

function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {
  return function impureFinalPropsSelector(state, ownProps) {
    return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);
  };
}
function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {
  var areStatesEqual = _ref.areStatesEqual,
      areOwnPropsEqual = _ref.areOwnPropsEqual,
      areStatePropsEqual = _ref.areStatePropsEqual;
  var hasRunAtLeastOnce = false;
  var state;
  var ownProps;
  var stateProps;
  var dispatchProps;
  var mergedProps;

  function handleFirstCall(firstState, firstOwnProps) {
    state = firstState;
    ownProps = firstOwnProps;
    stateProps = mapStateToProps(state, ownProps);
    dispatchProps = mapDispatchToProps(dispatch, ownProps);
    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);
    hasRunAtLeastOnce = true;
    return mergedProps;
  }

  function handleNewPropsAndNewState() {
    stateProps = mapStateToProps(state, ownProps);
    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);
    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);
    return mergedProps;
  }

  function handleNewProps() {
    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);
    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);
    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);
    return mergedProps;
  }

  function handleNewState() {
    var nextStateProps = mapStateToProps(state, ownProps);
    var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);
    stateProps = nextStateProps;
    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);
    return mergedProps;
  }

  function handleSubsequentCalls(nextState, nextOwnProps) {
    var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);
    var stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);
    state = nextState;
    ownProps = nextOwnProps;
    if (propsChanged && stateChanged) return handleNewPropsAndNewState();
    if (propsChanged) return handleNewProps();
    if (stateChanged) return handleNewState();
    return mergedProps;
  }

  return function pureFinalPropsSelector(nextState, nextOwnProps) {
    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);
  };
} // TODO: Add more comments
// If pure is true, the selector returned by selectorFactory will memoize its results,
// allowing connectAdvanced's shouldComponentUpdate to return false if final
// props have not changed. If false, the selector will always return a new
// object and shouldComponentUpdate will always return true.

function finalPropsSelectorFactory(dispatch, _ref2) {
  var initMapStateToProps = _ref2.initMapStateToProps,
      initMapDispatchToProps = _ref2.initMapDispatchToProps,
      initMergeProps = _ref2.initMergeProps,
      options = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(_ref2, _excluded);

  var mapStateToProps = initMapStateToProps(dispatch, options);
  var mapDispatchToProps = initMapDispatchToProps(dispatch, options);
  var mergeProps = initMergeProps(dispatch, options);

  if (true) {
    (0,_verifySubselectors__WEBPACK_IMPORTED_MODULE_1__["default"])(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);
  }

  var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;
  return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);
}

/***/ }),

/***/ "./node_modules/react-redux/es/connect/verifySubselectors.js":
/*!*******************************************************************!*\
  !*** ./node_modules/react-redux/es/connect/verifySubselectors.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ verifySubselectors)
/* harmony export */ });
/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/warning */ "./node_modules/react-redux/es/utils/warning.js");


function verify(selector, methodName, displayName) {
  if (!selector) {
    throw new Error("Unexpected value for " + methodName + " in " + displayName + ".");
  } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {
    if (!Object.prototype.hasOwnProperty.call(selector, 'dependsOnOwnProps')) {
      (0,_utils_warning__WEBPACK_IMPORTED_MODULE_0__["default"])("The selector for " + methodName + " of " + displayName + " did not specify a value for dependsOnOwnProps.");
    }
  }
}

function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) {
  verify(mapStateToProps, 'mapStateToProps', displayName);
  verify(mapDispatchToProps, 'mapDispatchToProps', displayName);
  verify(mergeProps, 'mergeProps', displayName);
}

/***/ }),

/***/ "./node_modules/react-redux/es/connect/wrapMapToProps.js":
/*!***************************************************************!*\
  !*** ./node_modules/react-redux/es/connect/wrapMapToProps.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   getDependsOnOwnProps: () => (/* binding */ getDependsOnOwnProps),
/* harmony export */   wrapMapToPropsConstant: () => (/* binding */ wrapMapToPropsConstant),
/* harmony export */   wrapMapToPropsFunc: () => (/* binding */ wrapMapToPropsFunc)
/* harmony export */ });
/* harmony import */ var _utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/verifyPlainObject */ "./node_modules/react-redux/es/utils/verifyPlainObject.js");

function wrapMapToPropsConstant(getConstant) {
  return function initConstantSelector(dispatch, options) {
    var constant = getConstant(dispatch, options);

    function constantSelector() {
      return constant;
    }

    constantSelector.dependsOnOwnProps = false;
    return constantSelector;
  };
} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args
// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine
// whether mapToProps needs to be invoked when props have changed.
//
// A length of one signals that mapToProps does not depend on props from the parent component.
// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and
// therefore not reporting its length accurately..

function getDependsOnOwnProps(mapToProps) {
  return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;
} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,
// this function wraps mapToProps in a proxy function which does several things:
//
//  * Detects whether the mapToProps function being called depends on props, which
//    is used by selectorFactory to decide if it should reinvoke on props changes.
//
//  * On first call, handles mapToProps if returns another function, and treats that
//    new function as the true mapToProps for subsequent calls.
//
//  * On first call, verifies the first result is a plain object, in order to warn
//    the developer that their mapToProps function is not returning a valid result.
//

function wrapMapToPropsFunc(mapToProps, methodName) {
  return function initProxySelector(dispatch, _ref) {
    var displayName = _ref.displayName;

    var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {
      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);
    }; // allow detectFactoryAndVerify to get ownProps


    proxy.dependsOnOwnProps = true;

    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {
      proxy.mapToProps = mapToProps;
      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);
      var props = proxy(stateOrDispatch, ownProps);

      if (typeof props === 'function') {
        proxy.mapToProps = props;
        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);
        props = proxy(stateOrDispatch, ownProps);
      }

      if (true) (0,_utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_0__["default"])(props, displayName, methodName);
      return props;
    };

    return proxy;
  };
}

/***/ }),

/***/ "./node_modules/react-redux/es/exports.js":
/*!************************************************!*\
  !*** ./node_modules/react-redux/es/exports.js ***!
  \************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Provider: () => (/* reexport safe */ _components_Provider__WEBPACK_IMPORTED_MODULE_0__["default"]),
/* harmony export */   ReactReduxContext: () => (/* reexport safe */ _components_Context__WEBPACK_IMPORTED_MODULE_2__.ReactReduxContext),
/* harmony export */   connect: () => (/* reexport safe */ _connect_connect__WEBPACK_IMPORTED_MODULE_3__["default"]),
/* harmony export */   connectAdvanced: () => (/* reexport safe */ _components_connectAdvanced__WEBPACK_IMPORTED_MODULE_1__["default"]),
/* harmony export */   createDispatchHook: () => (/* reexport safe */ _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_4__.createDispatchHook),
/* harmony export */   createSelectorHook: () => (/* reexport safe */ _hooks_useSelector__WEBPACK_IMPORTED_MODULE_5__.createSelectorHook),
/* harmony export */   createStoreHook: () => (/* reexport safe */ _hooks_useStore__WEBPACK_IMPORTED_MODULE_6__.createStoreHook),
/* harmony export */   shallowEqual: () => (/* reexport safe */ _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_7__["default"]),
/* harmony export */   useDispatch: () => (/* reexport safe */ _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_4__.useDispatch),
/* harmony export */   useSelector: () => (/* reexport safe */ _hooks_useSelector__WEBPACK_IMPORTED_MODULE_5__.useSelector),
/* harmony export */   useStore: () => (/* reexport safe */ _hooks_useStore__WEBPACK_IMPORTED_MODULE_6__.useStore)
/* harmony export */ });
/* harmony import */ var _components_Provider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/Provider */ "./node_modules/react-redux/es/components/Provider.js");
/* harmony import */ var _components_connectAdvanced__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/connectAdvanced */ "./node_modules/react-redux/es/components/connectAdvanced.js");
/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/Context */ "./node_modules/react-redux/es/components/Context.js");
/* harmony import */ var _connect_connect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./connect/connect */ "./node_modules/react-redux/es/connect/connect.js");
/* harmony import */ var _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks/useDispatch */ "./node_modules/react-redux/es/hooks/useDispatch.js");
/* harmony import */ var _hooks_useSelector__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hooks/useSelector */ "./node_modules/react-redux/es/hooks/useSelector.js");
/* harmony import */ var _hooks_useStore__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hooks/useStore */ "./node_modules/react-redux/es/hooks/useStore.js");
/* harmony import */ var _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/shallowEqual */ "./node_modules/react-redux/es/utils/shallowEqual.js");










/***/ }),

/***/ "./node_modules/react-redux/es/hooks/useDispatch.js":
/*!**********************************************************!*\
  !*** ./node_modules/react-redux/es/hooks/useDispatch.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   createDispatchHook: () => (/* binding */ createDispatchHook),
/* harmony export */   useDispatch: () => (/* binding */ useDispatch)
/* harmony export */ });
/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Context */ "./node_modules/react-redux/es/components/Context.js");
/* harmony import */ var _useStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useStore */ "./node_modules/react-redux/es/hooks/useStore.js");


/**
 * Hook factory, which creates a `useDispatch` hook bound to a given context.
 *
 * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.
 * @returns {Function} A `useDispatch` hook bound to the specified context.
 */

function createDispatchHook(context) {
  if (context === void 0) {
    context = _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext;
  }

  var useStore = context === _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext ? _useStore__WEBPACK_IMPORTED_MODULE_1__.useStore : (0,_useStore__WEBPACK_IMPORTED_MODULE_1__.createStoreHook)(context);
  return function useDispatch() {
    var store = useStore();
    return store.dispatch;
  };
}
/**
 * A hook to access the redux `dispatch` function.
 *
 * @returns {any|function} redux store's `dispatch` function
 *
 * @example
 *
 * import React, { useCallback } from 'react'
 * import { useDispatch } from 'react-redux'
 *
 * export const CounterComponent = ({ value }) => {
 *   const dispatch = useDispatch()
 *   const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])
 *   return (
 *     <div>
 *       <span>{value}</span>
 *       <button onClick={increaseCounter}>Increase counter</button>
 *     </div>
 *   )
 * }
 */

var useDispatch = /*#__PURE__*/createDispatchHook();

/***/ }),

/***/ "./node_modules/react-redux/es/hooks/useReduxContext.js":
/*!**************************************************************!*\
  !*** ./node_modules/react-redux/es/hooks/useReduxContext.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useReduxContext: () => (/* binding */ useReduxContext)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Context */ "./node_modules/react-redux/es/components/Context.js");


/**
 * A hook to access the value of the `ReactReduxContext`. This is a low-level
 * hook that you should usually not need to call directly.
 *
 * @returns {any} the value of the `ReactReduxContext`
 *
 * @example
 *
 * import React from 'react'
 * import { useReduxContext } from 'react-redux'
 *
 * export const CounterComponent = ({ value }) => {
 *   const { store } = useReduxContext()
 *   return <div>{store.getState()}</div>
 * }
 */

function useReduxContext() {
  var contextValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_components_Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext);

  if ( true && !contextValue) {
    throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');
  }

  return contextValue;
}

/***/ }),

/***/ "./node_modules/react-redux/es/hooks/useSelector.js":
/*!**********************************************************!*\
  !*** ./node_modules/react-redux/es/hooks/useSelector.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   createSelectorHook: () => (/* binding */ createSelectorHook),
/* harmony export */   useSelector: () => (/* binding */ useSelector)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _useReduxContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useReduxContext */ "./node_modules/react-redux/es/hooks/useReduxContext.js");
/* harmony import */ var _utils_Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/Subscription */ "./node_modules/react-redux/es/utils/Subscription.js");
/* harmony import */ var _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/useIsomorphicLayoutEffect */ "./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js");
/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/Context */ "./node_modules/react-redux/es/components/Context.js");






var refEquality = function refEquality(a, b) {
  return a === b;
};

function useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {
  var _useReducer = (0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)(function (s) {
    return s + 1;
  }, 0),
      forceRender = _useReducer[1];

  var subscription = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {
    return (0,_utils_Subscription__WEBPACK_IMPORTED_MODULE_2__.createSubscription)(store, contextSub);
  }, [store, contextSub]);
  var latestSubscriptionCallbackError = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
  var latestSelector = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
  var latestStoreState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
  var latestSelectedState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
  var storeState = store.getState();
  var selectedState;

  try {
    if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {
      var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references

      if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {
        selectedState = newSelectedState;
      } else {
        selectedState = latestSelectedState.current;
      }
    } else {
      selectedState = latestSelectedState.current;
    }
  } catch (err) {
    if (latestSubscriptionCallbackError.current) {
      err.message += "\nThe error may be correlated with this previous error:\n" + latestSubscriptionCallbackError.current.stack + "\n\n";
    }

    throw err;
  }

  (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__.useIsomorphicLayoutEffect)(function () {
    latestSelector.current = selector;
    latestStoreState.current = storeState;
    latestSelectedState.current = selectedState;
    latestSubscriptionCallbackError.current = undefined;
  });
  (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__.useIsomorphicLayoutEffect)(function () {
    function checkForUpdates() {
      try {
        var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed

        if (newStoreState === latestStoreState.current) {
          return;
        }

        var _newSelectedState = latestSelector.current(newStoreState);

        if (equalityFn(_newSelectedState, latestSelectedState.current)) {
          return;
        }

        latestSelectedState.current = _newSelectedState;
        latestStoreState.current = newStoreState;
      } catch (err) {
        // we ignore all errors here, since when the component
        // is re-rendered, the selectors are called again, and
        // will throw again, if neither props nor store state
        // changed
        latestSubscriptionCallbackError.current = err;
      }

      forceRender();
    }

    subscription.onStateChange = checkForUpdates;
    subscription.trySubscribe();
    checkForUpdates();
    return function () {
      return subscription.tryUnsubscribe();
    };
  }, [store, subscription]);
  return selectedState;
}
/**
 * Hook factory, which creates a `useSelector` hook bound to a given context.
 *
 * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.
 * @returns {Function} A `useSelector` hook bound to the specified context.
 */


function createSelectorHook(context) {
  if (context === void 0) {
    context = _components_Context__WEBPACK_IMPORTED_MODULE_4__.ReactReduxContext;
  }

  var useReduxContext = context === _components_Context__WEBPACK_IMPORTED_MODULE_4__.ReactReduxContext ? _useReduxContext__WEBPACK_IMPORTED_MODULE_1__.useReduxContext : function () {
    return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(context);
  };
  return function useSelector(selector, equalityFn) {
    if (equalityFn === void 0) {
      equalityFn = refEquality;
    }

    if (true) {
      if (!selector) {
        throw new Error("You must pass a selector to useSelector");
      }

      if (typeof selector !== 'function') {
        throw new Error("You must pass a function as a selector to useSelector");
      }

      if (typeof equalityFn !== 'function') {
        throw new Error("You must pass a function as an equality function to useSelector");
      }
    }

    var _useReduxContext = useReduxContext(),
        store = _useReduxContext.store,
        contextSub = _useReduxContext.subscription;

    var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);
    (0,react__WEBPACK_IMPORTED_MODULE_0__.useDebugValue)(selectedState);
    return selectedState;
  };
}
/**
 * A hook to access the redux store's state. This hook takes a selector function
 * as an argument. The selector is called with the store state.
 *
 * This hook takes an optional equality comparison function as the second parameter
 * that allows you to customize the way the selected state is compared to determine
 * whether the component needs to be re-rendered.
 *
 * @param {Function} selector the selector function
 * @param {Function=} equalityFn the function that will be used to determine equality
 *
 * @returns {any} the selected state
 *
 * @example
 *
 * import React from 'react'
 * import { useSelector } from 'react-redux'
 *
 * export const CounterComponent = () => {
 *   const counter = useSelector(state => state.counter)
 *   return <div>{counter}</div>
 * }
 */

var useSelector = /*#__PURE__*/createSelectorHook();

/***/ }),

/***/ "./node_modules/react-redux/es/hooks/useStore.js":
/*!*******************************************************!*\
  !*** ./node_modules/react-redux/es/hooks/useStore.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   createStoreHook: () => (/* binding */ createStoreHook),
/* harmony export */   useStore: () => (/* binding */ useStore)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Context */ "./node_modules/react-redux/es/components/Context.js");
/* harmony import */ var _useReduxContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./useReduxContext */ "./node_modules/react-redux/es/hooks/useReduxContext.js");



/**
 * Hook factory, which creates a `useStore` hook bound to a given context.
 *
 * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.
 * @returns {Function} A `useStore` hook bound to the specified context.
 */

function createStoreHook(context) {
  if (context === void 0) {
    context = _components_Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext;
  }

  var useReduxContext = context === _components_Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext ? _useReduxContext__WEBPACK_IMPORTED_MODULE_2__.useReduxContext : function () {
    return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(context);
  };
  return function useStore() {
    var _useReduxContext = useReduxContext(),
        store = _useReduxContext.store;

    return store;
  };
}
/**
 * A hook to access the redux store.
 *
 * @returns {any} the redux store
 *
 * @example
 *
 * import React from 'react'
 * import { useStore } from 'react-redux'
 *
 * export const ExampleComponent = () => {
 *   const store = useStore()
 *   return <div>{store.getState()}</div>
 * }
 */

var useStore = /*#__PURE__*/createStoreHook();

/***/ }),

/***/ "./node_modules/react-redux/es/index.js":
/*!**********************************************!*\
  !*** ./node_modules/react-redux/es/index.js ***!
  \**********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Provider: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.Provider),
/* harmony export */   ReactReduxContext: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext),
/* harmony export */   batch: () => (/* reexport safe */ _utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_1__.unstable_batchedUpdates),
/* harmony export */   connect: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.connect),
/* harmony export */   connectAdvanced: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.connectAdvanced),
/* harmony export */   createDispatchHook: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.createDispatchHook),
/* harmony export */   createSelectorHook: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.createSelectorHook),
/* harmony export */   createStoreHook: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.createStoreHook),
/* harmony export */   shallowEqual: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.shallowEqual),
/* harmony export */   useDispatch: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.useDispatch),
/* harmony export */   useSelector: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.useSelector),
/* harmony export */   useStore: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.useStore)
/* harmony export */ });
/* harmony import */ var _exports__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exports */ "./node_modules/react-redux/es/exports.js");
/* harmony import */ var _utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/reactBatchedUpdates */ "./node_modules/react-redux/es/utils/reactBatchedUpdates.js");
/* harmony import */ var _utils_batch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/batch */ "./node_modules/react-redux/es/utils/batch.js");


 // Enable batched updates in our subscriptions for use
// with standard React renderers (ReactDOM, React Native)

(0,_utils_batch__WEBPACK_IMPORTED_MODULE_2__.setBatch)(_utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_1__.unstable_batchedUpdates);


/***/ }),

/***/ "./node_modules/react-redux/es/utils/Subscription.js":
/*!***********************************************************!*\
  !*** ./node_modules/react-redux/es/utils/Subscription.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   createSubscription: () => (/* binding */ createSubscription)
/* harmony export */ });
/* harmony import */ var _batch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./batch */ "./node_modules/react-redux/es/utils/batch.js");
 // encapsulates the subscription logic for connecting a component to the redux store, as
// well as nesting subscriptions of descendant components, so that we can ensure the
// ancestor components re-render before descendants

function createListenerCollection() {
  var batch = (0,_batch__WEBPACK_IMPORTED_MODULE_0__.getBatch)();
  var first = null;
  var last = null;
  return {
    clear: function clear() {
      first = null;
      last = null;
    },
    notify: function notify() {
      batch(function () {
        var listener = first;

        while (listener) {
          listener.callback();
          listener = listener.next;
        }
      });
    },
    get: function get() {
      var listeners = [];
      var listener = first;

      while (listener) {
        listeners.push(listener);
        listener = listener.next;
      }

      return listeners;
    },
    subscribe: function subscribe(callback) {
      var isSubscribed = true;
      var listener = last = {
        callback: callback,
        next: null,
        prev: last
      };

      if (listener.prev) {
        listener.prev.next = listener;
      } else {
        first = listener;
      }

      return function unsubscribe() {
        if (!isSubscribed || first === null) return;
        isSubscribed = false;

        if (listener.next) {
          listener.next.prev = listener.prev;
        } else {
          last = listener.prev;
        }

        if (listener.prev) {
          listener.prev.next = listener.next;
        } else {
          first = listener.next;
        }
      };
    }
  };
}

var nullListeners = {
  notify: function notify() {},
  get: function get() {
    return [];
  }
};
function createSubscription(store, parentSub) {
  var unsubscribe;
  var listeners = nullListeners;

  function addNestedSub(listener) {
    trySubscribe();
    return listeners.subscribe(listener);
  }

  function notifyNestedSubs() {
    listeners.notify();
  }

  function handleChangeWrapper() {
    if (subscription.onStateChange) {
      subscription.onStateChange();
    }
  }

  function isSubscribed() {
    return Boolean(unsubscribe);
  }

  function trySubscribe() {
    if (!unsubscribe) {
      unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);
      listeners = createListenerCollection();
    }
  }

  function tryUnsubscribe() {
    if (unsubscribe) {
      unsubscribe();
      unsubscribe = undefined;
      listeners.clear();
      listeners = nullListeners;
    }
  }

  var subscription = {
    addNestedSub: addNestedSub,
    notifyNestedSubs: notifyNestedSubs,
    handleChangeWrapper: handleChangeWrapper,
    isSubscribed: isSubscribed,
    trySubscribe: trySubscribe,
    tryUnsubscribe: tryUnsubscribe,
    getListeners: function getListeners() {
      return listeners;
    }
  };
  return subscription;
}

/***/ }),

/***/ "./node_modules/react-redux/es/utils/batch.js":
/*!****************************************************!*\
  !*** ./node_modules/react-redux/es/utils/batch.js ***!
  \****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   getBatch: () => (/* binding */ getBatch),
/* harmony export */   setBatch: () => (/* binding */ setBatch)
/* harmony export */ });
// Default to a dummy "batch" implementation that just runs the callback
function defaultNoopBatch(callback) {
  callback();
}

var batch = defaultNoopBatch; // Allow injecting another batching function later

var setBatch = function setBatch(newBatch) {
  return batch = newBatch;
}; // Supply a getter just to skip dealing with ESM bindings

var getBatch = function getBatch() {
  return batch;
};

/***/ }),

/***/ "./node_modules/react-redux/es/utils/bindActionCreators.js":
/*!*****************************************************************!*\
  !*** ./node_modules/react-redux/es/utils/bindActionCreators.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ bindActionCreators)
/* harmony export */ });
function bindActionCreators(actionCreators, dispatch) {
  var boundActionCreators = {};

  var _loop = function _loop(key) {
    var actionCreator = actionCreators[key];

    if (typeof actionCreator === 'function') {
      boundActionCreators[key] = function () {
        return dispatch(actionCreator.apply(void 0, arguments));
      };
    }
  };

  for (var key in actionCreators) {
    _loop(key);
  }

  return boundActionCreators;
}

/***/ }),

/***/ "./node_modules/react-redux/es/utils/isPlainObject.js":
/*!************************************************************!*\
  !*** ./node_modules/react-redux/es/utils/isPlainObject.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ isPlainObject)
/* harmony export */ });
/**
 * @param {any} obj The object to inspect.
 * @returns {boolean} True if the argument appears to be a plain object.
 */
function isPlainObject(obj) {
  if (typeof obj !== 'object' || obj === null) return false;
  var proto = Object.getPrototypeOf(obj);
  if (proto === null) return true;
  var baseProto = proto;

  while (Object.getPrototypeOf(baseProto) !== null) {
    baseProto = Object.getPrototypeOf(baseProto);
  }

  return proto === baseProto;
}

/***/ }),

/***/ "./node_modules/react-redux/es/utils/reactBatchedUpdates.js":
/*!******************************************************************!*\
  !*** ./node_modules/react-redux/es/utils/reactBatchedUpdates.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   unstable_batchedUpdates: () => (/* reexport safe */ react_dom__WEBPACK_IMPORTED_MODULE_0__.unstable_batchedUpdates)
/* harmony export */ });
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-dom */ "react-dom");
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_0__);
/* eslint-disable import/no-unresolved */


/***/ }),

/***/ "./node_modules/react-redux/es/utils/shallowEqual.js":
/*!***********************************************************!*\
  !*** ./node_modules/react-redux/es/utils/shallowEqual.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ shallowEqual)
/* harmony export */ });
function is(x, y) {
  if (x === y) {
    return x !== 0 || y !== 0 || 1 / x === 1 / y;
  } else {
    return x !== x && y !== y;
  }
}

function shallowEqual(objA, objB) {
  if (is(objA, objB)) return true;

  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
    return false;
  }

  var keysA = Object.keys(objA);
  var keysB = Object.keys(objB);
  if (keysA.length !== keysB.length) return false;

  for (var i = 0; i < keysA.length; i++) {
    if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
      return false;
    }
  }

  return true;
}

/***/ }),

/***/ "./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js":
/*!************************************************************************!*\
  !*** ./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useIsomorphicLayoutEffect: () => (/* binding */ useIsomorphicLayoutEffect)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
 // React currently throws a warning when using useLayoutEffect on the server.
// To get around it, we can conditionally useEffect on the server (no-op) and
// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store
// subscription callback always has the selector from the latest render commit
// available, otherwise a store update may happen between render and the effect,
// which may cause missed updates; we also must ensure the store subscription
// is created synchronously, otherwise a store update may occur before the
// subscription is created and an inconsistent state may be observed

var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_0__.useEffect;

/***/ }),

/***/ "./node_modules/react-redux/es/utils/verifyPlainObject.js":
/*!****************************************************************!*\
  !*** ./node_modules/react-redux/es/utils/verifyPlainObject.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ verifyPlainObject)
/* harmony export */ });
/* harmony import */ var _isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isPlainObject */ "./node_modules/react-redux/es/utils/isPlainObject.js");
/* harmony import */ var _warning__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./warning */ "./node_modules/react-redux/es/utils/warning.js");


function verifyPlainObject(value, displayName, methodName) {
  if (!(0,_isPlainObject__WEBPACK_IMPORTED_MODULE_0__["default"])(value)) {
    (0,_warning__WEBPACK_IMPORTED_MODULE_1__["default"])(methodName + "() in " + displayName + " must return a plain object. Instead received " + value + ".");
  }
}

/***/ }),

/***/ "./node_modules/react-redux/es/utils/warning.js":
/*!******************************************************!*\
  !*** ./node_modules/react-redux/es/utils/warning.js ***!
  \******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ warning)
/* harmony export */ });
/**
 * Prints a warning in the console if it exists.
 *
 * @param {String} message The warning message.
 * @returns {void}
 */
function warning(message) {
  /* eslint-disable no-console */
  if (typeof console !== 'undefined' && typeof console.error === 'function') {
    console.error(message);
  }
  /* eslint-enable no-console */


  try {
    // This error was thrown as a convenience so that if you enable
    // "break on all exceptions" in your console,
    // it would pause the execution at this line.
    throw new Error(message);
    /* eslint-disable no-empty */
  } catch (e) {}
  /* eslint-enable no-empty */

}

/***/ }),

/***/ "./node_modules/react-router-dom/dist/index.js":
/*!*****************************************************!*\
  !*** ./node_modules/react-router-dom/dist/index.js ***!
  \*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   AbortedDeferredError: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.AbortedDeferredError),
/* harmony export */   Await: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.Await),
/* harmony export */   BrowserRouter: () => (/* binding */ BrowserRouter),
/* harmony export */   Form: () => (/* binding */ Form),
/* harmony export */   HashRouter: () => (/* binding */ HashRouter),
/* harmony export */   Link: () => (/* binding */ Link),
/* harmony export */   MemoryRouter: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.MemoryRouter),
/* harmony export */   NavLink: () => (/* binding */ NavLink),
/* harmony export */   Navigate: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.Navigate),
/* harmony export */   NavigationType: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.Action),
/* harmony export */   Outlet: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.Outlet),
/* harmony export */   Route: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.Route),
/* harmony export */   Router: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.Router),
/* harmony export */   RouterProvider: () => (/* binding */ RouterProvider),
/* harmony export */   Routes: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.Routes),
/* harmony export */   ScrollRestoration: () => (/* binding */ ScrollRestoration),
/* harmony export */   UNSAFE_DataRouterContext: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_DataRouterContext),
/* harmony export */   UNSAFE_DataRouterStateContext: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_DataRouterStateContext),
/* harmony export */   UNSAFE_ErrorResponseImpl: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_ErrorResponseImpl),
/* harmony export */   UNSAFE_FetchersContext: () => (/* binding */ FetchersContext),
/* harmony export */   UNSAFE_LocationContext: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_LocationContext),
/* harmony export */   UNSAFE_NavigationContext: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_NavigationContext),
/* harmony export */   UNSAFE_RouteContext: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_RouteContext),
/* harmony export */   UNSAFE_ViewTransitionContext: () => (/* binding */ ViewTransitionContext),
/* harmony export */   UNSAFE_useRouteId: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_useRouteId),
/* harmony export */   UNSAFE_useScrollRestoration: () => (/* binding */ useScrollRestoration),
/* harmony export */   createBrowserRouter: () => (/* binding */ createBrowserRouter),
/* harmony export */   createHashRouter: () => (/* binding */ createHashRouter),
/* harmony export */   createMemoryRouter: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.createMemoryRouter),
/* harmony export */   createPath: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.createPath),
/* harmony export */   createRoutesFromChildren: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.createRoutesFromChildren),
/* harmony export */   createRoutesFromElements: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.createRoutesFromElements),
/* harmony export */   createSearchParams: () => (/* binding */ createSearchParams),
/* harmony export */   defer: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.defer),
/* harmony export */   generatePath: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.generatePath),
/* harmony export */   isRouteErrorResponse: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.isRouteErrorResponse),
/* harmony export */   json: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.json),
/* harmony export */   matchPath: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.matchPath),
/* harmony export */   matchRoutes: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.matchRoutes),
/* harmony export */   parsePath: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.parsePath),
/* harmony export */   redirect: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.redirect),
/* harmony export */   redirectDocument: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.redirectDocument),
/* harmony export */   renderMatches: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.renderMatches),
/* harmony export */   replace: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.replace),
/* harmony export */   resolvePath: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.resolvePath),
/* harmony export */   unstable_HistoryRouter: () => (/* binding */ HistoryRouter),
/* harmony export */   unstable_usePrompt: () => (/* binding */ usePrompt),
/* harmony export */   useActionData: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useActionData),
/* harmony export */   useAsyncError: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useAsyncError),
/* harmony export */   useAsyncValue: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useAsyncValue),
/* harmony export */   useBeforeUnload: () => (/* binding */ useBeforeUnload),
/* harmony export */   useBlocker: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useBlocker),
/* harmony export */   useFetcher: () => (/* binding */ useFetcher),
/* harmony export */   useFetchers: () => (/* binding */ useFetchers),
/* harmony export */   useFormAction: () => (/* binding */ useFormAction),
/* harmony export */   useHref: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useHref),
/* harmony export */   useInRouterContext: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useInRouterContext),
/* harmony export */   useLinkClickHandler: () => (/* binding */ useLinkClickHandler),
/* harmony export */   useLoaderData: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useLoaderData),
/* harmony export */   useLocation: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useLocation),
/* harmony export */   useMatch: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useMatch),
/* harmony export */   useMatches: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useMatches),
/* harmony export */   useNavigate: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useNavigate),
/* harmony export */   useNavigation: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useNavigation),
/* harmony export */   useNavigationType: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useNavigationType),
/* harmony export */   useOutlet: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useOutlet),
/* harmony export */   useOutletContext: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useOutletContext),
/* harmony export */   useParams: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useParams),
/* harmony export */   useResolvedPath: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useResolvedPath),
/* harmony export */   useRevalidator: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useRevalidator),
/* harmony export */   useRouteError: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useRouteError),
/* harmony export */   useRouteLoaderData: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useRouteLoaderData),
/* harmony export */   useRoutes: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useRoutes),
/* harmony export */   useSearchParams: () => (/* binding */ useSearchParams),
/* harmony export */   useSubmit: () => (/* binding */ useSubmit),
/* harmony export */   useViewTransitionState: () => (/* binding */ useViewTransitionState)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ "react-dom");
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var react_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-router */ "./node_modules/react-router/dist/index.js");
/* harmony import */ var react_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @remix-run/router */ "./node_modules/@remix-run/router/dist/router.js");
/**
 * React Router DOM v6.28.0
 *
 * Copyright (c) Remix Software Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE.md file in the root directory of this source tree.
 *
 * @license MIT
 */







function _extends() {
  _extends = Object.assign ? Object.assign.bind() : 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;
  };
  return _extends.apply(this, arguments);
}
function _objectWithoutPropertiesLoose(source, excluded) {
  if (source == null) return {};
  var target = {};
  var sourceKeys = Object.keys(source);
  var key, i;
  for (i = 0; i < sourceKeys.length; i++) {
    key = sourceKeys[i];
    if (excluded.indexOf(key) >= 0) continue;
    target[key] = source[key];
  }
  return target;
}

const defaultMethod = "get";
const defaultEncType = "application/x-www-form-urlencoded";
function isHtmlElement(object) {
  return object != null && typeof object.tagName === "string";
}
function isButtonElement(object) {
  return isHtmlElement(object) && object.tagName.toLowerCase() === "button";
}
function isFormElement(object) {
  return isHtmlElement(object) && object.tagName.toLowerCase() === "form";
}
function isInputElement(object) {
  return isHtmlElement(object) && object.tagName.toLowerCase() === "input";
}
function isModifiedEvent(event) {
  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);
}
function shouldProcessLinkClick(event, target) {
  return event.button === 0 && (
  // Ignore everything but left clicks
  !target || target === "_self") &&
  // Let browser handle "target=_blank" etc.
  !isModifiedEvent(event) // Ignore clicks with modifier keys
  ;
}
/**
 * Creates a URLSearchParams object using the given initializer.
 *
 * This is identical to `new URLSearchParams(init)` except it also
 * supports arrays as values in the object form of the initializer
 * instead of just strings. This is convenient when you need multiple
 * values for a given key, but don't want to use an array initializer.
 *
 * For example, instead of:
 *
 *   let searchParams = new URLSearchParams([
 *     ['sort', 'name'],
 *     ['sort', 'price']
 *   ]);
 *
 * you can do:
 *
 *   let searchParams = createSearchParams({
 *     sort: ['name', 'price']
 *   });
 */
function createSearchParams(init) {
  if (init === void 0) {
    init = "";
  }
  return new URLSearchParams(typeof init === "string" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {
    let value = init[key];
    return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);
  }, []));
}
function getSearchParamsForLocation(locationSearch, defaultSearchParams) {
  let searchParams = createSearchParams(locationSearch);
  if (defaultSearchParams) {
    // Use `defaultSearchParams.forEach(...)` here instead of iterating of
    // `defaultSearchParams.keys()` to work-around a bug in Firefox related to
    // web extensions. Relevant Bugzilla tickets:
    // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602
    // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984
    defaultSearchParams.forEach((_, key) => {
      if (!searchParams.has(key)) {
        defaultSearchParams.getAll(key).forEach(value => {
          searchParams.append(key, value);
        });
      }
    });
  }
  return searchParams;
}
// One-time check for submitter support
let _formDataSupportsSubmitter = null;
function isFormDataSubmitterSupported() {
  if (_formDataSupportsSubmitter === null) {
    try {
      new FormData(document.createElement("form"),
      // @ts-expect-error if FormData supports the submitter parameter, this will throw
      0);
      _formDataSupportsSubmitter = false;
    } catch (e) {
      _formDataSupportsSubmitter = true;
    }
  }
  return _formDataSupportsSubmitter;
}
const supportedFormEncTypes = new Set(["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"]);
function getFormEncType(encType) {
  if (encType != null && !supportedFormEncTypes.has(encType)) {
     true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_warning)(false, "\"" + encType + "\" is not a valid `encType` for `<Form>`/`<fetcher.Form>` " + ("and will default to \"" + defaultEncType + "\"")) : 0;
    return null;
  }
  return encType;
}
function getFormSubmissionInfo(target, basename) {
  let method;
  let action;
  let encType;
  let formData;
  let body;
  if (isFormElement(target)) {
    // When grabbing the action from the element, it will have had the basename
    // prefixed to ensure non-JS scenarios work, so strip it since we'll
    // re-prefix in the router
    let attr = target.getAttribute("action");
    action = attr ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.stripBasename)(attr, basename) : null;
    method = target.getAttribute("method") || defaultMethod;
    encType = getFormEncType(target.getAttribute("enctype")) || defaultEncType;
    formData = new FormData(target);
  } else if (isButtonElement(target) || isInputElement(target) && (target.type === "submit" || target.type === "image")) {
    let form = target.form;
    if (form == null) {
      throw new Error("Cannot submit a <button> or <input type=\"submit\"> without a <form>");
    }
    // <button>/<input type="submit"> may override attributes of <form>
    // When grabbing the action from the element, it will have had the basename
    // prefixed to ensure non-JS scenarios work, so strip it since we'll
    // re-prefix in the router
    let attr = target.getAttribute("formaction") || form.getAttribute("action");
    action = attr ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.stripBasename)(attr, basename) : null;
    method = target.getAttribute("formmethod") || form.getAttribute("method") || defaultMethod;
    encType = getFormEncType(target.getAttribute("formenctype")) || getFormEncType(form.getAttribute("enctype")) || defaultEncType;
    // Build a FormData object populated from a form and submitter
    formData = new FormData(form, target);
    // If this browser doesn't support the `FormData(el, submitter)` format,
    // then tack on the submitter value at the end.  This is a lightweight
    // solution that is not 100% spec compliant.  For complete support in older
    // browsers, consider using the `formdata-submitter-polyfill` package
    if (!isFormDataSubmitterSupported()) {
      let {
        name,
        type,
        value
      } = target;
      if (type === "image") {
        let prefix = name ? name + "." : "";
        formData.append(prefix + "x", "0");
        formData.append(prefix + "y", "0");
      } else if (name) {
        formData.append(name, value);
      }
    }
  } else if (isHtmlElement(target)) {
    throw new Error("Cannot submit element that is not <form>, <button>, or " + "<input type=\"submit|image\">");
  } else {
    method = defaultMethod;
    action = null;
    encType = defaultEncType;
    body = target;
  }
  // Send body for <Form encType="text/plain" so we encode it into text
  if (formData && encType === "text/plain") {
    body = formData;
    formData = undefined;
  }
  return {
    action,
    method: method.toLowerCase(),
    encType,
    formData,
    body
  };
}

const _excluded = ["onClick", "relative", "reloadDocument", "replace", "state", "target", "to", "preventScrollReset", "viewTransition"],
  _excluded2 = ["aria-current", "caseSensitive", "className", "end", "style", "to", "viewTransition", "children"],
  _excluded3 = ["fetcherKey", "navigate", "reloadDocument", "replace", "state", "method", "action", "onSubmit", "relative", "preventScrollReset", "viewTransition"];
// HEY YOU! DON'T TOUCH THIS VARIABLE!
//
// It is replaced with the proper version at build time via a babel plugin in
// the rollup config.
//
// Export a global property onto the window for React Router detection by the
// Core Web Vitals Technology Report.  This way they can configure the `wappalyzer`
// to detect and properly classify live websites as being built with React Router:
// https://github.com/HTTPArchive/wappalyzer/blob/main/src/technologies/r.json
const REACT_ROUTER_VERSION = "6";
try {
  window.__reactRouterVersion = REACT_ROUTER_VERSION;
} catch (e) {
  // no-op
}
function createBrowserRouter(routes, opts) {
  return (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createRouter)({
    basename: opts == null ? void 0 : opts.basename,
    future: _extends({}, opts == null ? void 0 : opts.future, {
      v7_prependBasename: true
    }),
    history: (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createBrowserHistory)({
      window: opts == null ? void 0 : opts.window
    }),
    hydrationData: (opts == null ? void 0 : opts.hydrationData) || parseHydrationData(),
    routes,
    mapRouteProperties: react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_mapRouteProperties,
    dataStrategy: opts == null ? void 0 : opts.dataStrategy,
    patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation,
    window: opts == null ? void 0 : opts.window
  }).initialize();
}
function createHashRouter(routes, opts) {
  return (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createRouter)({
    basename: opts == null ? void 0 : opts.basename,
    future: _extends({}, opts == null ? void 0 : opts.future, {
      v7_prependBasename: true
    }),
    history: (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createHashHistory)({
      window: opts == null ? void 0 : opts.window
    }),
    hydrationData: (opts == null ? void 0 : opts.hydrationData) || parseHydrationData(),
    routes,
    mapRouteProperties: react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_mapRouteProperties,
    dataStrategy: opts == null ? void 0 : opts.dataStrategy,
    patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation,
    window: opts == null ? void 0 : opts.window
  }).initialize();
}
function parseHydrationData() {
  var _window;
  let state = (_window = window) == null ? void 0 : _window.__staticRouterHydrationData;
  if (state && state.errors) {
    state = _extends({}, state, {
      errors: deserializeErrors(state.errors)
    });
  }
  return state;
}
function deserializeErrors(errors) {
  if (!errors) return null;
  let entries = Object.entries(errors);
  let serialized = {};
  for (let [key, val] of entries) {
    // Hey you!  If you change this, please change the corresponding logic in
    // serializeErrors in react-router-dom/server.tsx :)
    if (val && val.__type === "RouteErrorResponse") {
      serialized[key] = new react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_ErrorResponseImpl(val.status, val.statusText, val.data, val.internal === true);
    } else if (val && val.__type === "Error") {
      // Attempt to reconstruct the right type of Error (i.e., ReferenceError)
      if (val.__subType) {
        let ErrorConstructor = window[val.__subType];
        if (typeof ErrorConstructor === "function") {
          try {
            // @ts-expect-error
            let error = new ErrorConstructor(val.message);
            // Wipe away the client-side stack trace.  Nothing to fill it in with
            // because we don't serialize SSR stack traces for security reasons
            error.stack = "";
            serialized[key] = error;
          } catch (e) {
            // no-op - fall through and create a normal Error
          }
        }
      }
      if (serialized[key] == null) {
        let error = new Error(val.message);
        // Wipe away the client-side stack trace.  Nothing to fill it in with
        // because we don't serialize SSR stack traces for security reasons
        error.stack = "";
        serialized[key] = error;
      }
    } else {
      serialized[key] = val;
    }
  }
  return serialized;
}
const ViewTransitionContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext({
  isTransitioning: false
});
if (true) {
  ViewTransitionContext.displayName = "ViewTransition";
}
const FetchersContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(new Map());
if (true) {
  FetchersContext.displayName = "Fetchers";
}
//#endregion
////////////////////////////////////////////////////////////////////////////////
//#region Components
////////////////////////////////////////////////////////////////////////////////
/**
  Webpack + React 17 fails to compile on any of the following because webpack
  complains that `startTransition` doesn't exist in `React`:
  * import { startTransition } from "react"
  * import * as React from from "react";
    "startTransition" in React ? React.startTransition(() => setState()) : setState()
  * import * as React from from "react";
    "startTransition" in React ? React["startTransition"](() => setState()) : setState()

  Moving it to a constant such as the following solves the Webpack/React 17 issue:
  * import * as React from from "react";
    const START_TRANSITION = "startTransition";
    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()

  However, that introduces webpack/terser minification issues in production builds
  in React 18 where minification/obfuscation ends up removing the call of
  React.startTransition entirely from the first half of the ternary.  Grabbing
  this exported reference once up front resolves that issue.

  See https://github.com/remix-run/react-router/issues/10579
*/
const START_TRANSITION = "startTransition";
const startTransitionImpl = react__WEBPACK_IMPORTED_MODULE_0__[START_TRANSITION];
const FLUSH_SYNC = "flushSync";
const flushSyncImpl = react_dom__WEBPACK_IMPORTED_MODULE_1__[FLUSH_SYNC];
const USE_ID = "useId";
const useIdImpl = react__WEBPACK_IMPORTED_MODULE_0__[USE_ID];
function startTransitionSafe(cb) {
  if (startTransitionImpl) {
    startTransitionImpl(cb);
  } else {
    cb();
  }
}
function flushSyncSafe(cb) {
  if (flushSyncImpl) {
    flushSyncImpl(cb);
  } else {
    cb();
  }
}
class Deferred {
  constructor() {
    this.status = "pending";
    this.promise = new Promise((resolve, reject) => {
      this.resolve = value => {
        if (this.status === "pending") {
          this.status = "resolved";
          resolve(value);
        }
      };
      this.reject = reason => {
        if (this.status === "pending") {
          this.status = "rejected";
          reject(reason);
        }
      };
    });
  }
}
/**
 * Given a Remix Router instance, render the appropriate UI
 */
function RouterProvider(_ref) {
  let {
    fallbackElement,
    router,
    future
  } = _ref;
  let [state, setStateImpl] = react__WEBPACK_IMPORTED_MODULE_0__.useState(router.state);
  let [pendingState, setPendingState] = react__WEBPACK_IMPORTED_MODULE_0__.useState();
  let [vtContext, setVtContext] = react__WEBPACK_IMPORTED_MODULE_0__.useState({
    isTransitioning: false
  });
  let [renderDfd, setRenderDfd] = react__WEBPACK_IMPORTED_MODULE_0__.useState();
  let [transition, setTransition] = react__WEBPACK_IMPORTED_MODULE_0__.useState();
  let [interruption, setInterruption] = react__WEBPACK_IMPORTED_MODULE_0__.useState();
  let fetcherData = react__WEBPACK_IMPORTED_MODULE_0__.useRef(new Map());
  let {
    v7_startTransition
  } = future || {};
  let optInStartTransition = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(cb => {
    if (v7_startTransition) {
      startTransitionSafe(cb);
    } else {
      cb();
    }
  }, [v7_startTransition]);
  let setState = react__WEBPACK_IMPORTED_MODULE_0__.useCallback((newState, _ref2) => {
    let {
      deletedFetchers,
      flushSync: flushSync,
      viewTransitionOpts: viewTransitionOpts
    } = _ref2;
    deletedFetchers.forEach(key => fetcherData.current.delete(key));
    newState.fetchers.forEach((fetcher, key) => {
      if (fetcher.data !== undefined) {
        fetcherData.current.set(key, fetcher.data);
      }
    });
    let isViewTransitionUnavailable = router.window == null || router.window.document == null || typeof router.window.document.startViewTransition !== "function";
    // If this isn't a view transition or it's not available in this browser,
    // just update and be done with it
    if (!viewTransitionOpts || isViewTransitionUnavailable) {
      if (flushSync) {
        flushSyncSafe(() => setStateImpl(newState));
      } else {
        optInStartTransition(() => setStateImpl(newState));
      }
      return;
    }
    // flushSync + startViewTransition
    if (flushSync) {
      // Flush through the context to mark DOM elements as transition=ing
      flushSyncSafe(() => {
        // Cancel any pending transitions
        if (transition) {
          renderDfd && renderDfd.resolve();
          transition.skipTransition();
        }
        setVtContext({
          isTransitioning: true,
          flushSync: true,
          currentLocation: viewTransitionOpts.currentLocation,
          nextLocation: viewTransitionOpts.nextLocation
        });
      });
      // Update the DOM
      let t = router.window.document.startViewTransition(() => {
        flushSyncSafe(() => setStateImpl(newState));
      });
      // Clean up after the animation completes
      t.finished.finally(() => {
        flushSyncSafe(() => {
          setRenderDfd(undefined);
          setTransition(undefined);
          setPendingState(undefined);
          setVtContext({
            isTransitioning: false
          });
        });
      });
      flushSyncSafe(() => setTransition(t));
      return;
    }
    // startTransition + startViewTransition
    if (transition) {
      // Interrupting an in-progress transition, cancel and let everything flush
      // out, and then kick off a new transition from the interruption state
      renderDfd && renderDfd.resolve();
      transition.skipTransition();
      setInterruption({
        state: newState,
        currentLocation: viewTransitionOpts.currentLocation,
        nextLocation: viewTransitionOpts.nextLocation
      });
    } else {
      // Completed navigation update with opted-in view transitions, let 'er rip
      setPendingState(newState);
      setVtContext({
        isTransitioning: true,
        flushSync: false,
        currentLocation: viewTransitionOpts.currentLocation,
        nextLocation: viewTransitionOpts.nextLocation
      });
    }
  }, [router.window, transition, renderDfd, fetcherData, optInStartTransition]);
  // Need to use a layout effect here so we are subscribed early enough to
  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)
  react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => router.subscribe(setState), [router, setState]);
  // When we start a view transition, create a Deferred we can use for the
  // eventual "completed" render
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
    if (vtContext.isTransitioning && !vtContext.flushSync) {
      setRenderDfd(new Deferred());
    }
  }, [vtContext]);
  // Once the deferred is created, kick off startViewTransition() to update the
  // DOM and then wait on the Deferred to resolve (indicating the DOM update has
  // happened)
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
    if (renderDfd && pendingState && router.window) {
      let newState = pendingState;
      let renderPromise = renderDfd.promise;
      let transition = router.window.document.startViewTransition(async () => {
        optInStartTransition(() => setStateImpl(newState));
        await renderPromise;
      });
      transition.finished.finally(() => {
        setRenderDfd(undefined);
        setTransition(undefined);
        setPendingState(undefined);
        setVtContext({
          isTransitioning: false
        });
      });
      setTransition(transition);
    }
  }, [optInStartTransition, pendingState, renderDfd, router.window]);
  // When the new location finally renders and is committed to the DOM, this
  // effect will run to resolve the transition
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
    if (renderDfd && pendingState && state.location.key === pendingState.location.key) {
      renderDfd.resolve();
    }
  }, [renderDfd, transition, state.location, pendingState]);
  // If we get interrupted with a new navigation during a transition, we skip
  // the active transition, let it cleanup, then kick it off again here
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
    if (!vtContext.isTransitioning && interruption) {
      setPendingState(interruption.state);
      setVtContext({
        isTransitioning: true,
        flushSync: false,
        currentLocation: interruption.currentLocation,
        nextLocation: interruption.nextLocation
      });
      setInterruption(undefined);
    }
  }, [vtContext.isTransitioning, interruption]);
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
     true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_warning)(fallbackElement == null || !router.future.v7_partialHydration, "`<RouterProvider fallbackElement>` is deprecated when using " + "`v7_partialHydration`, use a `HydrateFallback` component instead") : 0;
    // Only log this once on initial mount
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, []);
  let navigator = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => {
    return {
      createHref: router.createHref,
      encodeLocation: router.encodeLocation,
      go: n => router.navigate(n),
      push: (to, state, opts) => router.navigate(to, {
        state,
        preventScrollReset: opts == null ? void 0 : opts.preventScrollReset
      }),
      replace: (to, state, opts) => router.navigate(to, {
        replace: true,
        state,
        preventScrollReset: opts == null ? void 0 : opts.preventScrollReset
      })
    };
  }, [router]);
  let basename = router.basename || "/";
  let dataRouterContext = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => ({
    router,
    navigator,
    static: false,
    basename
  }), [router, navigator, basename]);
  let routerFuture = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => ({
    v7_relativeSplatPath: router.future.v7_relativeSplatPath
  }), [router.future.v7_relativeSplatPath]);
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => (0,react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_logV6DeprecationWarnings)(future, router.future), [future, router.future]);
  // The fragment and {null} here are important!  We need them to keep React 18's
  // useId happy when we are server-rendering since we may have a <script> here
  // containing the hydrated server-side staticContext (from StaticRouterProvider).
  // useId relies on the component tree structure to generate deterministic id's
  // so we need to ensure it remains the same on the client even though
  // we don't need the <script> tag
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_DataRouterContext.Provider, {
    value: dataRouterContext
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_DataRouterStateContext.Provider, {
    value: state
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(FetchersContext.Provider, {
    value: fetcherData.current
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(ViewTransitionContext.Provider, {
    value: vtContext
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router__WEBPACK_IMPORTED_MODULE_3__.Router, {
    basename: basename,
    location: state.location,
    navigationType: state.historyAction,
    navigator: navigator,
    future: routerFuture
  }, state.initialized || router.future.v7_partialHydration ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(MemoizedDataRoutes, {
    routes: router.routes,
    future: router.future,
    state: state
  }) : fallbackElement))))), null);
}
// Memoize to avoid re-renders when updating `ViewTransitionContext`
const MemoizedDataRoutes = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.memo(DataRoutes);
function DataRoutes(_ref3) {
  let {
    routes,
    future,
    state
  } = _ref3;
  return (0,react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_useRoutesImpl)(routes, undefined, state, future);
}
/**
 * A `<Router>` for use in web browsers. Provides the cleanest URLs.
 */
function BrowserRouter(_ref4) {
  let {
    basename,
    children,
    future,
    window
  } = _ref4;
  let historyRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef();
  if (historyRef.current == null) {
    historyRef.current = (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createBrowserHistory)({
      window,
      v5Compat: true
    });
  }
  let history = historyRef.current;
  let [state, setStateImpl] = react__WEBPACK_IMPORTED_MODULE_0__.useState({
    action: history.action,
    location: history.location
  });
  let {
    v7_startTransition
  } = future || {};
  let setState = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(newState => {
    v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);
  }, [setStateImpl, v7_startTransition]);
  react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => history.listen(setState), [history, setState]);
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => (0,react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_logV6DeprecationWarnings)(future), [future]);
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router__WEBPACK_IMPORTED_MODULE_3__.Router, {
    basename: basename,
    children: children,
    location: state.location,
    navigationType: state.action,
    navigator: history,
    future: future
  });
}
/**
 * A `<Router>` for use in web browsers. Stores the location in the hash
 * portion of the URL so it is not sent to the server.
 */
function HashRouter(_ref5) {
  let {
    basename,
    children,
    future,
    window
  } = _ref5;
  let historyRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef();
  if (historyRef.current == null) {
    historyRef.current = (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createHashHistory)({
      window,
      v5Compat: true
    });
  }
  let history = historyRef.current;
  let [state, setStateImpl] = react__WEBPACK_IMPORTED_MODULE_0__.useState({
    action: history.action,
    location: history.location
  });
  let {
    v7_startTransition
  } = future || {};
  let setState = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(newState => {
    v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);
  }, [setStateImpl, v7_startTransition]);
  react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => history.listen(setState), [history, setState]);
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => (0,react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_logV6DeprecationWarnings)(future), [future]);
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router__WEBPACK_IMPORTED_MODULE_3__.Router, {
    basename: basename,
    children: children,
    location: state.location,
    navigationType: state.action,
    navigator: history,
    future: future
  });
}
/**
 * A `<Router>` that accepts a pre-instantiated history object. It's important
 * to note that using your own history object is highly discouraged and may add
 * two versions of the history library to your bundles unless you use the same
 * version of the history library that React Router uses internally.
 */
function HistoryRouter(_ref6) {
  let {
    basename,
    children,
    future,
    history
  } = _ref6;
  let [state, setStateImpl] = react__WEBPACK_IMPORTED_MODULE_0__.useState({
    action: history.action,
    location: history.location
  });
  let {
    v7_startTransition
  } = future || {};
  let setState = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(newState => {
    v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);
  }, [setStateImpl, v7_startTransition]);
  react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => history.listen(setState), [history, setState]);
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => (0,react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_logV6DeprecationWarnings)(future), [future]);
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router__WEBPACK_IMPORTED_MODULE_3__.Router, {
    basename: basename,
    children: children,
    location: state.location,
    navigationType: state.action,
    navigator: history,
    future: future
  });
}
if (true) {
  HistoryRouter.displayName = "unstable_HistoryRouter";
}
const isBrowser = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined";
const ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;
/**
 * The public API for rendering a history-aware `<a>`.
 */
const Link = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function LinkWithRef(_ref7, ref) {
  let {
      onClick,
      relative,
      reloadDocument,
      replace,
      state,
      target,
      to,
      preventScrollReset,
      viewTransition
    } = _ref7,
    rest = _objectWithoutPropertiesLoose(_ref7, _excluded);
  let {
    basename
  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_NavigationContext);
  // Rendered into <a href> for absolute URLs
  let absoluteHref;
  let isExternal = false;
  if (typeof to === "string" && ABSOLUTE_URL_REGEX.test(to)) {
    // Render the absolute href server- and client-side
    absoluteHref = to;
    // Only check for external origins client-side
    if (isBrowser) {
      try {
        let currentUrl = new URL(window.location.href);
        let targetUrl = to.startsWith("//") ? new URL(currentUrl.protocol + to) : new URL(to);
        let path = (0,react_router__WEBPACK_IMPORTED_MODULE_2__.stripBasename)(targetUrl.pathname, basename);
        if (targetUrl.origin === currentUrl.origin && path != null) {
          // Strip the protocol/origin/basename for same-origin absolute URLs
          to = path + targetUrl.search + targetUrl.hash;
        } else {
          isExternal = true;
        }
      } catch (e) {
        // We can't do external URL detection without a valid URL
         true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_warning)(false, "<Link to=\"" + to + "\"> contains an invalid URL which will probably break " + "when clicked - please update to a valid URL path.") : 0;
      }
    }
  }
  // Rendered into <a href> for relative URLs
  let href = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useHref)(to, {
    relative
  });
  let internalOnClick = useLinkClickHandler(to, {
    replace,
    state,
    target,
    preventScrollReset,
    relative,
    viewTransition
  });
  function handleClick(event) {
    if (onClick) onClick(event);
    if (!event.defaultPrevented) {
      internalOnClick(event);
    }
  }
  return (
    /*#__PURE__*/
    // eslint-disable-next-line jsx-a11y/anchor-has-content
    react__WEBPACK_IMPORTED_MODULE_0__.createElement("a", _extends({}, rest, {
      href: absoluteHref || href,
      onClick: isExternal || reloadDocument ? onClick : handleClick,
      ref: ref,
      target: target
    }))
  );
});
if (true) {
  Link.displayName = "Link";
}
/**
 * A `<Link>` wrapper that knows if it's "active" or not.
 */
const NavLink = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function NavLinkWithRef(_ref8, ref) {
  let {
      "aria-current": ariaCurrentProp = "page",
      caseSensitive = false,
      className: classNameProp = "",
      end = false,
      style: styleProp,
      to,
      viewTransition,
      children
    } = _ref8,
    rest = _objectWithoutPropertiesLoose(_ref8, _excluded2);
  let path = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useResolvedPath)(to, {
    relative: rest.relative
  });
  let location = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useLocation)();
  let routerState = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_DataRouterStateContext);
  let {
    navigator,
    basename
  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_NavigationContext);
  let isTransitioning = routerState != null &&
  // Conditional usage is OK here because the usage of a data router is static
  // eslint-disable-next-line react-hooks/rules-of-hooks
  useViewTransitionState(path) && viewTransition === true;
  let toPathname = navigator.encodeLocation ? navigator.encodeLocation(path).pathname : path.pathname;
  let locationPathname = location.pathname;
  let nextLocationPathname = routerState && routerState.navigation && routerState.navigation.location ? routerState.navigation.location.pathname : null;
  if (!caseSensitive) {
    locationPathname = locationPathname.toLowerCase();
    nextLocationPathname = nextLocationPathname ? nextLocationPathname.toLowerCase() : null;
    toPathname = toPathname.toLowerCase();
  }
  if (nextLocationPathname && basename) {
    nextLocationPathname = (0,react_router__WEBPACK_IMPORTED_MODULE_2__.stripBasename)(nextLocationPathname, basename) || nextLocationPathname;
  }
  // If the `to` has a trailing slash, look at that exact spot.  Otherwise,
  // we're looking for a slash _after_ what's in `to`.  For example:
  //
  // <NavLink to="/users"> and <NavLink to="/users/">
  // both want to look for a / at index 6 to match URL `/users/matt`
  const endSlashPosition = toPathname !== "/" && toPathname.endsWith("/") ? toPathname.length - 1 : toPathname.length;
  let isActive = locationPathname === toPathname || !end && locationPathname.startsWith(toPathname) && locationPathname.charAt(endSlashPosition) === "/";
  let isPending = nextLocationPathname != null && (nextLocationPathname === toPathname || !end && nextLocationPathname.startsWith(toPathname) && nextLocationPathname.charAt(toPathname.length) === "/");
  let renderProps = {
    isActive,
    isPending,
    isTransitioning
  };
  let ariaCurrent = isActive ? ariaCurrentProp : undefined;
  let className;
  if (typeof classNameProp === "function") {
    className = classNameProp(renderProps);
  } else {
    // If the className prop is not a function, we use a default `active`
    // class for <NavLink />s that are active. In v5 `active` was the default
    // value for `activeClassName`, but we are removing that API and can still
    // use the old default behavior for a cleaner upgrade path and keep the
    // simple styling rules working as they currently do.
    className = [classNameProp, isActive ? "active" : null, isPending ? "pending" : null, isTransitioning ? "transitioning" : null].filter(Boolean).join(" ");
  }
  let style = typeof styleProp === "function" ? styleProp(renderProps) : styleProp;
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Link, _extends({}, rest, {
    "aria-current": ariaCurrent,
    className: className,
    ref: ref,
    style: style,
    to: to,
    viewTransition: viewTransition
  }), typeof children === "function" ? children(renderProps) : children);
});
if (true) {
  NavLink.displayName = "NavLink";
}
/**
 * A `@remix-run/router`-aware `<form>`. It behaves like a normal form except
 * that the interaction with the server is with `fetch` instead of new document
 * requests, allowing components to add nicer UX to the page as the form is
 * submitted and returns with data.
 */
const Form = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((_ref9, forwardedRef) => {
  let {
      fetcherKey,
      navigate,
      reloadDocument,
      replace,
      state,
      method = defaultMethod,
      action,
      onSubmit,
      relative,
      preventScrollReset,
      viewTransition
    } = _ref9,
    props = _objectWithoutPropertiesLoose(_ref9, _excluded3);
  let submit = useSubmit();
  let formAction = useFormAction(action, {
    relative
  });
  let formMethod = method.toLowerCase() === "get" ? "get" : "post";
  let submitHandler = event => {
    onSubmit && onSubmit(event);
    if (event.defaultPrevented) return;
    event.preventDefault();
    let submitter = event.nativeEvent.submitter;
    let submitMethod = (submitter == null ? void 0 : submitter.getAttribute("formmethod")) || method;
    submit(submitter || event.currentTarget, {
      fetcherKey,
      method: submitMethod,
      navigate,
      replace,
      state,
      relative,
      preventScrollReset,
      viewTransition
    });
  };
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("form", _extends({
    ref: forwardedRef,
    method: formMethod,
    action: formAction,
    onSubmit: reloadDocument ? onSubmit : submitHandler
  }, props));
});
if (true) {
  Form.displayName = "Form";
}
/**
 * This component will emulate the browser's scroll restoration on location
 * changes.
 */
function ScrollRestoration(_ref10) {
  let {
    getKey,
    storageKey
  } = _ref10;
  useScrollRestoration({
    getKey,
    storageKey
  });
  return null;
}
if (true) {
  ScrollRestoration.displayName = "ScrollRestoration";
}
//#endregion
////////////////////////////////////////////////////////////////////////////////
//#region Hooks
////////////////////////////////////////////////////////////////////////////////
var DataRouterHook;
(function (DataRouterHook) {
  DataRouterHook["UseScrollRestoration"] = "useScrollRestoration";
  DataRouterHook["UseSubmit"] = "useSubmit";
  DataRouterHook["UseSubmitFetcher"] = "useSubmitFetcher";
  DataRouterHook["UseFetcher"] = "useFetcher";
  DataRouterHook["useViewTransitionState"] = "useViewTransitionState";
})(DataRouterHook || (DataRouterHook = {}));
var DataRouterStateHook;
(function (DataRouterStateHook) {
  DataRouterStateHook["UseFetcher"] = "useFetcher";
  DataRouterStateHook["UseFetchers"] = "useFetchers";
  DataRouterStateHook["UseScrollRestoration"] = "useScrollRestoration";
})(DataRouterStateHook || (DataRouterStateHook = {}));
// Internal hooks
function getDataRouterConsoleError(hookName) {
  return hookName + " must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.";
}
function useDataRouterContext(hookName) {
  let ctx = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_DataRouterContext);
  !ctx ?  true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_invariant)(false, getDataRouterConsoleError(hookName)) : 0 : void 0;
  return ctx;
}
function useDataRouterState(hookName) {
  let state = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_DataRouterStateContext);
  !state ?  true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_invariant)(false, getDataRouterConsoleError(hookName)) : 0 : void 0;
  return state;
}
// External hooks
/**
 * Handles the click behavior for router `<Link>` components. This is useful if
 * you need to create custom `<Link>` components with the same click behavior we
 * use in our exported `<Link>`.
 */
function useLinkClickHandler(to, _temp) {
  let {
    target,
    replace: replaceProp,
    state,
    preventScrollReset,
    relative,
    viewTransition
  } = _temp === void 0 ? {} : _temp;
  let navigate = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useNavigate)();
  let location = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useLocation)();
  let path = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useResolvedPath)(to, {
    relative
  });
  return react__WEBPACK_IMPORTED_MODULE_0__.useCallback(event => {
    if (shouldProcessLinkClick(event, target)) {
      event.preventDefault();
      // If the URL hasn't changed, a regular <a> will do a replace instead of
      // a push, so do the same here unless the replace prop is explicitly set
      let replace = replaceProp !== undefined ? replaceProp : (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createPath)(location) === (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createPath)(path);
      navigate(to, {
        replace,
        state,
        preventScrollReset,
        relative,
        viewTransition
      });
    }
  }, [location, navigate, path, replaceProp, state, target, to, preventScrollReset, relative, viewTransition]);
}
/**
 * A convenient wrapper for reading and writing search parameters via the
 * URLSearchParams interface.
 */
function useSearchParams(defaultInit) {
   true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_warning)(typeof URLSearchParams !== "undefined", "You cannot use the `useSearchParams` hook in a browser that does not " + "support the URLSearchParams API. If you need to support Internet " + "Explorer 11, we recommend you load a polyfill such as " + "https://github.com/ungap/url-search-params.") : 0;
  let defaultSearchParamsRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(createSearchParams(defaultInit));
  let hasSetSearchParamsRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);
  let location = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useLocation)();
  let searchParams = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() =>
  // Only merge in the defaults if we haven't yet called setSearchParams.
  // Once we call that we want those to take precedence, otherwise you can't
  // remove a param with setSearchParams({}) if it has an initial value
  getSearchParamsForLocation(location.search, hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current), [location.search]);
  let navigate = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useNavigate)();
  let setSearchParams = react__WEBPACK_IMPORTED_MODULE_0__.useCallback((nextInit, navigateOptions) => {
    const newSearchParams = createSearchParams(typeof nextInit === "function" ? nextInit(searchParams) : nextInit);
    hasSetSearchParamsRef.current = true;
    navigate("?" + newSearchParams, navigateOptions);
  }, [navigate, searchParams]);
  return [searchParams, setSearchParams];
}
function validateClientSideSubmission() {
  if (typeof document === "undefined") {
    throw new Error("You are calling submit during the server render. " + "Try calling submit within a `useEffect` or callback instead.");
  }
}
let fetcherId = 0;
let getUniqueFetcherId = () => "__" + String(++fetcherId) + "__";
/**
 * Returns a function that may be used to programmatically submit a form (or
 * some arbitrary data) to the server.
 */
function useSubmit() {
  let {
    router
  } = useDataRouterContext(DataRouterHook.UseSubmit);
  let {
    basename
  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_NavigationContext);
  let currentRouteId = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_useRouteId)();
  return react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (target, options) {
    if (options === void 0) {
      options = {};
    }
    validateClientSideSubmission();
    let {
      action,
      method,
      encType,
      formData,
      body
    } = getFormSubmissionInfo(target, basename);
    if (options.navigate === false) {
      let key = options.fetcherKey || getUniqueFetcherId();
      router.fetch(key, currentRouteId, options.action || action, {
        preventScrollReset: options.preventScrollReset,
        formData,
        body,
        formMethod: options.method || method,
        formEncType: options.encType || encType,
        flushSync: options.flushSync
      });
    } else {
      router.navigate(options.action || action, {
        preventScrollReset: options.preventScrollReset,
        formData,
        body,
        formMethod: options.method || method,
        formEncType: options.encType || encType,
        replace: options.replace,
        state: options.state,
        fromRouteId: currentRouteId,
        flushSync: options.flushSync,
        viewTransition: options.viewTransition
      });
    }
  }, [router, basename, currentRouteId]);
}
// v7: Eventually we should deprecate this entirely in favor of using the
// router method directly?
function useFormAction(action, _temp2) {
  let {
    relative
  } = _temp2 === void 0 ? {} : _temp2;
  let {
    basename
  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_NavigationContext);
  let routeContext = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_RouteContext);
  !routeContext ?  true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_invariant)(false, "useFormAction must be used inside a RouteContext") : 0 : void 0;
  let [match] = routeContext.matches.slice(-1);
  // Shallow clone path so we can modify it below, otherwise we modify the
  // object referenced by useMemo inside useResolvedPath
  let path = _extends({}, (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useResolvedPath)(action ? action : ".", {
    relative
  }));
  // If no action was specified, browsers will persist current search params
  // when determining the path, so match that behavior
  // https://github.com/remix-run/remix/issues/927
  let location = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useLocation)();
  if (action == null) {
    // Safe to write to this directly here since if action was undefined, we
    // would have called useResolvedPath(".") which will never include a search
    path.search = location.search;
    // When grabbing search params from the URL, remove any included ?index param
    // since it might not apply to our contextual route.  We add it back based
    // on match.route.index below
    let params = new URLSearchParams(path.search);
    let indexValues = params.getAll("index");
    let hasNakedIndexParam = indexValues.some(v => v === "");
    if (hasNakedIndexParam) {
      params.delete("index");
      indexValues.filter(v => v).forEach(v => params.append("index", v));
      let qs = params.toString();
      path.search = qs ? "?" + qs : "";
    }
  }
  if ((!action || action === ".") && match.route.index) {
    path.search = path.search ? path.search.replace(/^\?/, "?index&") : "?index";
  }
  // If we're operating within a basename, prepend it to the pathname prior
  // to creating the form action.  If this is a root navigation, then just use
  // the raw basename which allows the basename to have full control over the
  // presence of a trailing slash on root actions
  if (basename !== "/") {
    path.pathname = path.pathname === "/" ? basename : (0,react_router__WEBPACK_IMPORTED_MODULE_2__.joinPaths)([basename, path.pathname]);
  }
  return (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createPath)(path);
}
// TODO: (v7) Change the useFetcher generic default from `any` to `unknown`
/**
 * Interacts with route loaders and actions without causing a navigation. Great
 * for any interaction that stays on the same page.
 */
function useFetcher(_temp3) {
  var _route$matches;
  let {
    key
  } = _temp3 === void 0 ? {} : _temp3;
  let {
    router
  } = useDataRouterContext(DataRouterHook.UseFetcher);
  let state = useDataRouterState(DataRouterStateHook.UseFetcher);
  let fetcherData = react__WEBPACK_IMPORTED_MODULE_0__.useContext(FetchersContext);
  let route = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_RouteContext);
  let routeId = (_route$matches = route.matches[route.matches.length - 1]) == null ? void 0 : _route$matches.route.id;
  !fetcherData ?  true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_invariant)(false, "useFetcher must be used inside a FetchersContext") : 0 : void 0;
  !route ?  true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_invariant)(false, "useFetcher must be used inside a RouteContext") : 0 : void 0;
  !(routeId != null) ?  true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_invariant)(false, "useFetcher can only be used on routes that contain a unique \"id\"") : 0 : void 0;
  // Fetcher key handling
  // OK to call conditionally to feature detect `useId`
  // eslint-disable-next-line react-hooks/rules-of-hooks
  let defaultKey = useIdImpl ? useIdImpl() : "";
  let [fetcherKey, setFetcherKey] = react__WEBPACK_IMPORTED_MODULE_0__.useState(key || defaultKey);
  if (key && key !== fetcherKey) {
    setFetcherKey(key);
  } else if (!fetcherKey) {
    // We will only fall through here when `useId` is not available
    setFetcherKey(getUniqueFetcherId());
  }
  // Registration/cleanup
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
    router.getFetcher(fetcherKey);
    return () => {
      // Tell the router we've unmounted - if v7_fetcherPersist is enabled this
      // will not delete immediately but instead queue up a delete after the
      // fetcher returns to an `idle` state
      router.deleteFetcher(fetcherKey);
    };
  }, [router, fetcherKey]);
  // Fetcher additions
  let load = react__WEBPACK_IMPORTED_MODULE_0__.useCallback((href, opts) => {
    !routeId ?  true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_invariant)(false, "No routeId available for fetcher.load()") : 0 : void 0;
    router.fetch(fetcherKey, routeId, href, opts);
  }, [fetcherKey, routeId, router]);
  let submitImpl = useSubmit();
  let submit = react__WEBPACK_IMPORTED_MODULE_0__.useCallback((target, opts) => {
    submitImpl(target, _extends({}, opts, {
      navigate: false,
      fetcherKey
    }));
  }, [fetcherKey, submitImpl]);
  let FetcherForm = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => {
    let FetcherForm = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, ref) => {
      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Form, _extends({}, props, {
        navigate: false,
        fetcherKey: fetcherKey,
        ref: ref
      }));
    });
    if (true) {
      FetcherForm.displayName = "fetcher.Form";
    }
    return FetcherForm;
  }, [fetcherKey]);
  // Exposed FetcherWithComponents
  let fetcher = state.fetchers.get(fetcherKey) || react_router__WEBPACK_IMPORTED_MODULE_2__.IDLE_FETCHER;
  let data = fetcherData.get(fetcherKey);
  let fetcherWithComponents = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => _extends({
    Form: FetcherForm,
    submit,
    load
  }, fetcher, {
    data
  }), [FetcherForm, submit, load, fetcher, data]);
  return fetcherWithComponents;
}
/**
 * Provides all fetchers currently on the page. Useful for layouts and parent
 * routes that need to provide pending/optimistic UI regarding the fetch.
 */
function useFetchers() {
  let state = useDataRouterState(DataRouterStateHook.UseFetchers);
  return Array.from(state.fetchers.entries()).map(_ref11 => {
    let [key, fetcher] = _ref11;
    return _extends({}, fetcher, {
      key
    });
  });
}
const SCROLL_RESTORATION_STORAGE_KEY = "react-router-scroll-positions";
let savedScrollPositions = {};
/**
 * When rendered inside a RouterProvider, will restore scroll positions on navigations
 */
function useScrollRestoration(_temp4) {
  let {
    getKey,
    storageKey
  } = _temp4 === void 0 ? {} : _temp4;
  let {
    router
  } = useDataRouterContext(DataRouterHook.UseScrollRestoration);
  let {
    restoreScrollPosition,
    preventScrollReset
  } = useDataRouterState(DataRouterStateHook.UseScrollRestoration);
  let {
    basename
  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_NavigationContext);
  let location = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useLocation)();
  let matches = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useMatches)();
  let navigation = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useNavigation)();
  // Trigger manual scroll restoration while we're active
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
    window.history.scrollRestoration = "manual";
    return () => {
      window.history.scrollRestoration = "auto";
    };
  }, []);
  // Save positions on pagehide
  usePageHide(react__WEBPACK_IMPORTED_MODULE_0__.useCallback(() => {
    if (navigation.state === "idle") {
      let key = (getKey ? getKey(location, matches) : null) || location.key;
      savedScrollPositions[key] = window.scrollY;
    }
    try {
      sessionStorage.setItem(storageKey || SCROLL_RESTORATION_STORAGE_KEY, JSON.stringify(savedScrollPositions));
    } catch (error) {
       true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_warning)(false, "Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (" + error + ").") : 0;
    }
    window.history.scrollRestoration = "auto";
  }, [storageKey, getKey, navigation.state, location, matches]));
  // Read in any saved scroll locations
  if (typeof document !== "undefined") {
    // eslint-disable-next-line react-hooks/rules-of-hooks
    react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => {
      try {
        let sessionPositions = sessionStorage.getItem(storageKey || SCROLL_RESTORATION_STORAGE_KEY);
        if (sessionPositions) {
          savedScrollPositions = JSON.parse(sessionPositions);
        }
      } catch (e) {
        // no-op, use default empty object
      }
    }, [storageKey]);
    // Enable scroll restoration in the router
    // eslint-disable-next-line react-hooks/rules-of-hooks
    react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => {
      let getKeyWithoutBasename = getKey && basename !== "/" ? (location, matches) => getKey( // Strip the basename to match useLocation()
      _extends({}, location, {
        pathname: (0,react_router__WEBPACK_IMPORTED_MODULE_2__.stripBasename)(location.pathname, basename) || location.pathname
      }), matches) : getKey;
      let disableScrollRestoration = router == null ? void 0 : router.enableScrollRestoration(savedScrollPositions, () => window.scrollY, getKeyWithoutBasename);
      return () => disableScrollRestoration && disableScrollRestoration();
    }, [router, basename, getKey]);
    // Restore scrolling when state.restoreScrollPosition changes
    // eslint-disable-next-line react-hooks/rules-of-hooks
    react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => {
      // Explicit false means don't do anything (used for submissions)
      if (restoreScrollPosition === false) {
        return;
      }
      // been here before, scroll to it
      if (typeof restoreScrollPosition === "number") {
        window.scrollTo(0, restoreScrollPosition);
        return;
      }
      // try to scroll to the hash
      if (location.hash) {
        let el = document.getElementById(decodeURIComponent(location.hash.slice(1)));
        if (el) {
          el.scrollIntoView();
          return;
        }
      }
      // Don't reset if this navigation opted out
      if (preventScrollReset === true) {
        return;
      }
      // otherwise go to the top on new locations
      window.scrollTo(0, 0);
    }, [location, restoreScrollPosition, preventScrollReset]);
  }
}
/**
 * Setup a callback to be fired on the window's `beforeunload` event. This is
 * useful for saving some data to `window.localStorage` just before the page
 * refreshes.
 *
 * Note: The `callback` argument should be a function created with
 * `React.useCallback()`.
 */
function useBeforeUnload(callback, options) {
  let {
    capture
  } = options || {};
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
    let opts = capture != null ? {
      capture
    } : undefined;
    window.addEventListener("beforeunload", callback, opts);
    return () => {
      window.removeEventListener("beforeunload", callback, opts);
    };
  }, [callback, capture]);
}
/**
 * Setup a callback to be fired on the window's `pagehide` event. This is
 * useful for saving some data to `window.localStorage` just before the page
 * refreshes.  This event is better supported than beforeunload across browsers.
 *
 * Note: The `callback` argument should be a function created with
 * `React.useCallback()`.
 */
function usePageHide(callback, options) {
  let {
    capture
  } = options || {};
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
    let opts = capture != null ? {
      capture
    } : undefined;
    window.addEventListener("pagehide", callback, opts);
    return () => {
      window.removeEventListener("pagehide", callback, opts);
    };
  }, [callback, capture]);
}
/**
 * Wrapper around useBlocker to show a window.confirm prompt to users instead
 * of building a custom UI with useBlocker.
 *
 * Warning: This has *a lot of rough edges* and behaves very differently (and
 * very incorrectly in some cases) across browsers if user click addition
 * back/forward navigations while the confirm is open.  Use at your own risk.
 */
function usePrompt(_ref12) {
  let {
    when,
    message
  } = _ref12;
  let blocker = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useBlocker)(when);
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
    if (blocker.state === "blocked") {
      let proceed = window.confirm(message);
      if (proceed) {
        // This timeout is needed to avoid a weird "race" on POP navigations
        // between the `window.history` revert navigation and the result of
        // `window.confirm`
        setTimeout(blocker.proceed, 0);
      } else {
        blocker.reset();
      }
    }
  }, [blocker, message]);
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
    if (blocker.state === "blocked" && !when) {
      blocker.reset();
    }
  }, [blocker, when]);
}
/**
 * Return a boolean indicating if there is an active view transition to the
 * given href.  You can use this value to render CSS classes or viewTransitionName
 * styles onto your elements
 *
 * @param href The destination href
 * @param [opts.relative] Relative routing type ("route" | "path")
 */
function useViewTransitionState(to, opts) {
  if (opts === void 0) {
    opts = {};
  }
  let vtContext = react__WEBPACK_IMPORTED_MODULE_0__.useContext(ViewTransitionContext);
  !(vtContext != null) ?  true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_invariant)(false, "`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`.  " + "Did you accidentally import `RouterProvider` from `react-router`?") : 0 : void 0;
  let {
    basename
  } = useDataRouterContext(DataRouterHook.useViewTransitionState);
  let path = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useResolvedPath)(to, {
    relative: opts.relative
  });
  if (!vtContext.isTransitioning) {
    return false;
  }
  let currentPath = (0,react_router__WEBPACK_IMPORTED_MODULE_2__.stripBasename)(vtContext.currentLocation.pathname, basename) || vtContext.currentLocation.pathname;
  let nextPath = (0,react_router__WEBPACK_IMPORTED_MODULE_2__.stripBasename)(vtContext.nextLocation.pathname, basename) || vtContext.nextLocation.pathname;
  // Transition is active if we're going to or coming from the indicated
  // destination.  This ensures that other PUSH navigations that reverse
  // an indicated transition apply.  I.e., on the list view you have:
  //
  //   <NavLink to="/details/1" viewTransition>
  //
  // If you click the breadcrumb back to the list view:
  //
  //   <NavLink to="/list" viewTransition>
  //
  // We should apply the transition because it's indicated as active going
  // from /list -> /details/1 and therefore should be active on the reverse
  // (even though this isn't strictly a POP reverse)
  return (0,react_router__WEBPACK_IMPORTED_MODULE_2__.matchPath)(path.pathname, nextPath) != null || (0,react_router__WEBPACK_IMPORTED_MODULE_2__.matchPath)(path.pathname, currentPath) != null;
}
//#endregion


//# sourceMappingURL=index.js.map


/***/ }),

/***/ "./node_modules/react-router/dist/index.js":
/*!*************************************************!*\
  !*** ./node_modules/react-router/dist/index.js ***!
  \*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   AbortedDeferredError: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.AbortedDeferredError),
/* harmony export */   Await: () => (/* binding */ Await),
/* harmony export */   MemoryRouter: () => (/* binding */ MemoryRouter),
/* harmony export */   Navigate: () => (/* binding */ Navigate),
/* harmony export */   NavigationType: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.Action),
/* harmony export */   Outlet: () => (/* binding */ Outlet),
/* harmony export */   Route: () => (/* binding */ Route),
/* harmony export */   Router: () => (/* binding */ Router),
/* harmony export */   RouterProvider: () => (/* binding */ RouterProvider),
/* harmony export */   Routes: () => (/* binding */ Routes),
/* harmony export */   UNSAFE_DataRouterContext: () => (/* binding */ DataRouterContext),
/* harmony export */   UNSAFE_DataRouterStateContext: () => (/* binding */ DataRouterStateContext),
/* harmony export */   UNSAFE_LocationContext: () => (/* binding */ LocationContext),
/* harmony export */   UNSAFE_NavigationContext: () => (/* binding */ NavigationContext),
/* harmony export */   UNSAFE_RouteContext: () => (/* binding */ RouteContext),
/* harmony export */   UNSAFE_logV6DeprecationWarnings: () => (/* binding */ logV6DeprecationWarnings),
/* harmony export */   UNSAFE_mapRouteProperties: () => (/* binding */ mapRouteProperties),
/* harmony export */   UNSAFE_useRouteId: () => (/* binding */ useRouteId),
/* harmony export */   UNSAFE_useRoutesImpl: () => (/* binding */ useRoutesImpl),
/* harmony export */   createMemoryRouter: () => (/* binding */ createMemoryRouter),
/* harmony export */   createPath: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.createPath),
/* harmony export */   createRoutesFromChildren: () => (/* binding */ createRoutesFromChildren),
/* harmony export */   createRoutesFromElements: () => (/* binding */ createRoutesFromChildren),
/* harmony export */   defer: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.defer),
/* harmony export */   generatePath: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.generatePath),
/* harmony export */   isRouteErrorResponse: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.isRouteErrorResponse),
/* harmony export */   json: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.json),
/* harmony export */   matchPath: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.matchPath),
/* harmony export */   matchRoutes: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.matchRoutes),
/* harmony export */   parsePath: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.parsePath),
/* harmony export */   redirect: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.redirect),
/* harmony export */   redirectDocument: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.redirectDocument),
/* harmony export */   renderMatches: () => (/* binding */ renderMatches),
/* harmony export */   replace: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.replace),
/* harmony export */   resolvePath: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.resolvePath),
/* harmony export */   useActionData: () => (/* binding */ useActionData),
/* harmony export */   useAsyncError: () => (/* binding */ useAsyncError),
/* harmony export */   useAsyncValue: () => (/* binding */ useAsyncValue),
/* harmony export */   useBlocker: () => (/* binding */ useBlocker),
/* harmony export */   useHref: () => (/* binding */ useHref),
/* harmony export */   useInRouterContext: () => (/* binding */ useInRouterContext),
/* harmony export */   useLoaderData: () => (/* binding */ useLoaderData),
/* harmony export */   useLocation: () => (/* binding */ useLocation),
/* harmony export */   useMatch: () => (/* binding */ useMatch),
/* harmony export */   useMatches: () => (/* binding */ useMatches),
/* harmony export */   useNavigate: () => (/* binding */ useNavigate),
/* harmony export */   useNavigation: () => (/* binding */ useNavigation),
/* harmony export */   useNavigationType: () => (/* binding */ useNavigationType),
/* harmony export */   useOutlet: () => (/* binding */ useOutlet),
/* harmony export */   useOutletContext: () => (/* binding */ useOutletContext),
/* harmony export */   useParams: () => (/* binding */ useParams),
/* harmony export */   useResolvedPath: () => (/* binding */ useResolvedPath),
/* harmony export */   useRevalidator: () => (/* binding */ useRevalidator),
/* harmony export */   useRouteError: () => (/* binding */ useRouteError),
/* harmony export */   useRouteLoaderData: () => (/* binding */ useRouteLoaderData),
/* harmony export */   useRoutes: () => (/* binding */ useRoutes)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _remix_run_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @remix-run/router */ "./node_modules/@remix-run/router/dist/router.js");
/**
 * React Router v6.28.0
 *
 * Copyright (c) Remix Software Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE.md file in the root directory of this source tree.
 *
 * @license MIT
 */




function _extends() {
  _extends = Object.assign ? Object.assign.bind() : 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;
  };
  return _extends.apply(this, arguments);
}

// Create react-specific types from the agnostic types in @remix-run/router to
// export from react-router
const DataRouterContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);
if (true) {
  DataRouterContext.displayName = "DataRouter";
}
const DataRouterStateContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);
if (true) {
  DataRouterStateContext.displayName = "DataRouterState";
}
const AwaitContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);
if (true) {
  AwaitContext.displayName = "Await";
}

/**
 * A Navigator is a "location changer"; it's how you get to different locations.
 *
 * Every history instance conforms to the Navigator interface, but the
 * distinction is useful primarily when it comes to the low-level `<Router>` API
 * where both the location and a navigator must be provided separately in order
 * to avoid "tearing" that may occur in a suspense-enabled app if the action
 * and/or location were to be read directly from the history instance.
 */

const NavigationContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);
if (true) {
  NavigationContext.displayName = "Navigation";
}
const LocationContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);
if (true) {
  LocationContext.displayName = "Location";
}
const RouteContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext({
  outlet: null,
  matches: [],
  isDataRoute: false
});
if (true) {
  RouteContext.displayName = "Route";
}
const RouteErrorContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);
if (true) {
  RouteErrorContext.displayName = "RouteError";
}

/**
 * Returns the full href for the given "to" value. This is useful for building
 * custom links that are also accessible and preserve right-click behavior.
 *
 * @see https://reactrouter.com/v6/hooks/use-href
 */
function useHref(to, _temp) {
  let {
    relative
  } = _temp === void 0 ? {} : _temp;
  !useInRouterContext() ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, // TODO: This error is probably because they somehow have 2 versions of the
  // router loaded. We can help them understand how to avoid that.
  "useHref() may be used only in the context of a <Router> component.") : 0 : void 0;
  let {
    basename,
    navigator
  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext);
  let {
    hash,
    pathname,
    search
  } = useResolvedPath(to, {
    relative
  });
  let joinedPathname = pathname;

  // If we're operating within a basename, prepend it to the pathname prior
  // to creating the href.  If this is a root navigation, then just use the raw
  // basename which allows the basename to have full control over the presence
  // of a trailing slash on root links
  if (basename !== "/") {
    joinedPathname = pathname === "/" ? basename : (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.joinPaths)([basename, pathname]);
  }
  return navigator.createHref({
    pathname: joinedPathname,
    search,
    hash
  });
}

/**
 * Returns true if this component is a descendant of a `<Router>`.
 *
 * @see https://reactrouter.com/v6/hooks/use-in-router-context
 */
function useInRouterContext() {
  return react__WEBPACK_IMPORTED_MODULE_0__.useContext(LocationContext) != null;
}

/**
 * Returns the current location object, which represents the current URL in web
 * browsers.
 *
 * Note: If you're using this it may mean you're doing some of your own
 * "routing" in your app, and we'd like to know what your use case is. We may
 * be able to provide something higher-level to better suit your needs.
 *
 * @see https://reactrouter.com/v6/hooks/use-location
 */
function useLocation() {
  !useInRouterContext() ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, // TODO: This error is probably because they somehow have 2 versions of the
  // router loaded. We can help them understand how to avoid that.
  "useLocation() may be used only in the context of a <Router> component.") : 0 : void 0;
  return react__WEBPACK_IMPORTED_MODULE_0__.useContext(LocationContext).location;
}

/**
 * Returns the current navigation action which describes how the router came to
 * the current location, either by a pop, push, or replace on the history stack.
 *
 * @see https://reactrouter.com/v6/hooks/use-navigation-type
 */
function useNavigationType() {
  return react__WEBPACK_IMPORTED_MODULE_0__.useContext(LocationContext).navigationType;
}

/**
 * Returns a PathMatch object if the given pattern matches the current URL.
 * This is useful for components that need to know "active" state, e.g.
 * `<NavLink>`.
 *
 * @see https://reactrouter.com/v6/hooks/use-match
 */
function useMatch(pattern) {
  !useInRouterContext() ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, // TODO: This error is probably because they somehow have 2 versions of the
  // router loaded. We can help them understand how to avoid that.
  "useMatch() may be used only in the context of a <Router> component.") : 0 : void 0;
  let {
    pathname
  } = useLocation();
  return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.matchPath)(pattern, (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_decodePath)(pathname)), [pathname, pattern]);
}

/**
 * The interface for the navigate() function returned from useNavigate().
 */

const navigateEffectWarning = "You should call navigate() in a React.useEffect(), not when " + "your component is first rendered.";

// Mute warnings for calls to useNavigate in SSR environments
function useIsomorphicLayoutEffect(cb) {
  let isStatic = react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext).static;
  if (!isStatic) {
    // We should be able to get rid of this once react 18.3 is released
    // See: https://github.com/facebook/react/pull/26395
    // eslint-disable-next-line react-hooks/rules-of-hooks
    react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(cb);
  }
}

/**
 * Returns an imperative method for changing the location. Used by `<Link>`s, but
 * may also be used by other elements to change the location.
 *
 * @see https://reactrouter.com/v6/hooks/use-navigate
 */
function useNavigate() {
  let {
    isDataRoute
  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);
  // Conditional usage is OK here because the usage of a data router is static
  // eslint-disable-next-line react-hooks/rules-of-hooks
  return isDataRoute ? useNavigateStable() : useNavigateUnstable();
}
function useNavigateUnstable() {
  !useInRouterContext() ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, // TODO: This error is probably because they somehow have 2 versions of the
  // router loaded. We can help them understand how to avoid that.
  "useNavigate() may be used only in the context of a <Router> component.") : 0 : void 0;
  let dataRouterContext = react__WEBPACK_IMPORTED_MODULE_0__.useContext(DataRouterContext);
  let {
    basename,
    future,
    navigator
  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext);
  let {
    matches
  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);
  let {
    pathname: locationPathname
  } = useLocation();
  let routePathnamesJson = JSON.stringify((0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_getResolveToMatches)(matches, future.v7_relativeSplatPath));
  let activeRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);
  useIsomorphicLayoutEffect(() => {
    activeRef.current = true;
  });
  let navigate = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (to, options) {
    if (options === void 0) {
      options = {};
    }
     true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(activeRef.current, navigateEffectWarning) : 0;

    // Short circuit here since if this happens on first render the navigate
    // is useless because we haven't wired up our history listener yet
    if (!activeRef.current) return;
    if (typeof to === "number") {
      navigator.go(to);
      return;
    }
    let path = (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.resolveTo)(to, JSON.parse(routePathnamesJson), locationPathname, options.relative === "path");

    // If we're operating within a basename, prepend it to the pathname prior
    // to handing off to history (but only if we're not in a data router,
    // otherwise it'll prepend the basename inside of the router).
    // If this is a root navigation, then we navigate to the raw basename
    // which allows the basename to have full control over the presence of a
    // trailing slash on root links
    if (dataRouterContext == null && basename !== "/") {
      path.pathname = path.pathname === "/" ? basename : (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.joinPaths)([basename, path.pathname]);
    }
    (!!options.replace ? navigator.replace : navigator.push)(path, options.state, options);
  }, [basename, navigator, routePathnamesJson, locationPathname, dataRouterContext]);
  return navigate;
}
const OutletContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);

/**
 * Returns the context (if provided) for the child route at this level of the route
 * hierarchy.
 * @see https://reactrouter.com/v6/hooks/use-outlet-context
 */
function useOutletContext() {
  return react__WEBPACK_IMPORTED_MODULE_0__.useContext(OutletContext);
}

/**
 * Returns the element for the child route at this level of the route
 * hierarchy. Used internally by `<Outlet>` to render child routes.
 *
 * @see https://reactrouter.com/v6/hooks/use-outlet
 */
function useOutlet(context) {
  let outlet = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext).outlet;
  if (outlet) {
    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(OutletContext.Provider, {
      value: context
    }, outlet);
  }
  return outlet;
}

/**
 * Returns an object of key/value pairs of the dynamic params from the current
 * URL that were matched by the route path.
 *
 * @see https://reactrouter.com/v6/hooks/use-params
 */
function useParams() {
  let {
    matches
  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);
  let routeMatch = matches[matches.length - 1];
  return routeMatch ? routeMatch.params : {};
}

/**
 * Resolves the pathname of the given `to` value against the current location.
 *
 * @see https://reactrouter.com/v6/hooks/use-resolved-path
 */
function useResolvedPath(to, _temp2) {
  let {
    relative
  } = _temp2 === void 0 ? {} : _temp2;
  let {
    future
  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext);
  let {
    matches
  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);
  let {
    pathname: locationPathname
  } = useLocation();
  let routePathnamesJson = JSON.stringify((0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_getResolveToMatches)(matches, future.v7_relativeSplatPath));
  return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.resolveTo)(to, JSON.parse(routePathnamesJson), locationPathname, relative === "path"), [to, routePathnamesJson, locationPathname, relative]);
}

/**
 * Returns the element of the route that matched the current location, prepared
 * with the correct context to render the remainder of the route tree. Route
 * elements in the tree must render an `<Outlet>` to render their child route's
 * element.
 *
 * @see https://reactrouter.com/v6/hooks/use-routes
 */
function useRoutes(routes, locationArg) {
  return useRoutesImpl(routes, locationArg);
}

// Internal implementation with accept optional param for RouterProvider usage
function useRoutesImpl(routes, locationArg, dataRouterState, future) {
  !useInRouterContext() ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, // TODO: This error is probably because they somehow have 2 versions of the
  // router loaded. We can help them understand how to avoid that.
  "useRoutes() may be used only in the context of a <Router> component.") : 0 : void 0;
  let {
    navigator
  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext);
  let {
    matches: parentMatches
  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);
  let routeMatch = parentMatches[parentMatches.length - 1];
  let parentParams = routeMatch ? routeMatch.params : {};
  let parentPathname = routeMatch ? routeMatch.pathname : "/";
  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : "/";
  let parentRoute = routeMatch && routeMatch.route;
  if (true) {
    // You won't get a warning about 2 different <Routes> under a <Route>
    // without a trailing *, but this is a best-effort warning anyway since we
    // cannot even give the warning unless they land at the parent route.
    //
    // Example:
    //
    // <Routes>
    //   {/* This route path MUST end with /* because otherwise
    //       it will never match /blog/post/123 */}
    //   <Route path="blog" element={<Blog />} />
    //   <Route path="blog/feed" element={<BlogFeed />} />
    // </Routes>
    //
    // function Blog() {
    //   return (
    //     <Routes>
    //       <Route path="post/:id" element={<Post />} />
    //     </Routes>
    //   );
    // }
    let parentPath = parentRoute && parentRoute.path || "";
    warningOnce(parentPathname, !parentRoute || parentPath.endsWith("*"), "You rendered descendant <Routes> (or called `useRoutes()`) at " + ("\"" + parentPathname + "\" (under <Route path=\"" + parentPath + "\">) but the ") + "parent route path has no trailing \"*\". This means if you navigate " + "deeper, the parent won't match anymore and therefore the child " + "routes will never render.\n\n" + ("Please change the parent <Route path=\"" + parentPath + "\"> to <Route ") + ("path=\"" + (parentPath === "/" ? "*" : parentPath + "/*") + "\">."));
  }
  let locationFromContext = useLocation();
  let location;
  if (locationArg) {
    var _parsedLocationArg$pa;
    let parsedLocationArg = typeof locationArg === "string" ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.parsePath)(locationArg) : locationArg;
    !(parentPathnameBase === "/" || ((_parsedLocationArg$pa = parsedLocationArg.pathname) == null ? void 0 : _parsedLocationArg$pa.startsWith(parentPathnameBase))) ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, "When overriding the location using `<Routes location>` or `useRoutes(routes, location)`, " + "the location pathname must begin with the portion of the URL pathname that was " + ("matched by all parent routes. The current pathname base is \"" + parentPathnameBase + "\" ") + ("but pathname \"" + parsedLocationArg.pathname + "\" was given in the `location` prop.")) : 0 : void 0;
    location = parsedLocationArg;
  } else {
    location = locationFromContext;
  }
  let pathname = location.pathname || "/";
  let remainingPathname = pathname;
  if (parentPathnameBase !== "/") {
    // Determine the remaining pathname by removing the # of URL segments the
    // parentPathnameBase has, instead of removing based on character count.
    // This is because we can't guarantee that incoming/outgoing encodings/
    // decodings will match exactly.
    // We decode paths before matching on a per-segment basis with
    // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they
    // match what `window.location.pathname` would reflect.  Those don't 100%
    // align when it comes to encoded URI characters such as % and &.
    //
    // So we may end up with:
    //   pathname:           "/descendant/a%25b/match"
    //   parentPathnameBase: "/descendant/a%b"
    //
    // And the direct substring removal approach won't work :/
    let parentSegments = parentPathnameBase.replace(/^\//, "").split("/");
    let segments = pathname.replace(/^\//, "").split("/");
    remainingPathname = "/" + segments.slice(parentSegments.length).join("/");
  }
  let matches = (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.matchRoutes)(routes, {
    pathname: remainingPathname
  });
  if (true) {
     true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(parentRoute || matches != null, "No routes matched location \"" + location.pathname + location.search + location.hash + "\" ") : 0;
     true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(matches == null || matches[matches.length - 1].route.element !== undefined || matches[matches.length - 1].route.Component !== undefined || matches[matches.length - 1].route.lazy !== undefined, "Matched leaf route at location \"" + location.pathname + location.search + location.hash + "\" " + "does not have an element or Component. This means it will render an <Outlet /> with a " + "null value by default resulting in an \"empty\" page.") : 0;
  }
  let renderedMatches = _renderMatches(matches && matches.map(match => Object.assign({}, match, {
    params: Object.assign({}, parentParams, match.params),
    pathname: (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.joinPaths)([parentPathnameBase,
    // Re-encode pathnames that were decoded inside matchRoutes
    navigator.encodeLocation ? navigator.encodeLocation(match.pathname).pathname : match.pathname]),
    pathnameBase: match.pathnameBase === "/" ? parentPathnameBase : (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.joinPaths)([parentPathnameBase,
    // Re-encode pathnames that were decoded inside matchRoutes
    navigator.encodeLocation ? navigator.encodeLocation(match.pathnameBase).pathname : match.pathnameBase])
  })), parentMatches, dataRouterState, future);

  // When a user passes in a `locationArg`, the associated routes need to
  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`
  // to use the scoped location instead of the global location.
  if (locationArg && renderedMatches) {
    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(LocationContext.Provider, {
      value: {
        location: _extends({
          pathname: "/",
          search: "",
          hash: "",
          state: null,
          key: "default"
        }, location),
        navigationType: _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.Action.Pop
      }
    }, renderedMatches);
  }
  return renderedMatches;
}
function DefaultErrorComponent() {
  let error = useRouteError();
  let message = (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.isRouteErrorResponse)(error) ? error.status + " " + error.statusText : error instanceof Error ? error.message : JSON.stringify(error);
  let stack = error instanceof Error ? error.stack : null;
  let lightgrey = "rgba(200,200,200, 0.5)";
  let preStyles = {
    padding: "0.5rem",
    backgroundColor: lightgrey
  };
  let codeStyles = {
    padding: "2px 4px",
    backgroundColor: lightgrey
  };
  let devInfo = null;
  if (true) {
    console.error("Error handled by React Router default ErrorBoundary:", error);
    devInfo = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("p", null, "\uD83D\uDCBF Hey developer \uD83D\uDC4B"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("p", null, "You can provide a way better UX than this when your app throws errors by providing your own ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("code", {
      style: codeStyles
    }, "ErrorBoundary"), " or", " ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("code", {
      style: codeStyles
    }, "errorElement"), " prop on your route."));
  }
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("h2", null, "Unexpected Application Error!"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("h3", {
    style: {
      fontStyle: "italic"
    }
  }, message), stack ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("pre", {
    style: preStyles
  }, stack) : null, devInfo);
}
const defaultErrorElement = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(DefaultErrorComponent, null);
class RenderErrorBoundary extends react__WEBPACK_IMPORTED_MODULE_0__.Component {
  constructor(props) {
    super(props);
    this.state = {
      location: props.location,
      revalidation: props.revalidation,
      error: props.error
    };
  }
  static getDerivedStateFromError(error) {
    return {
      error: error
    };
  }
  static getDerivedStateFromProps(props, state) {
    // When we get into an error state, the user will likely click "back" to the
    // previous page that didn't have an error. Because this wraps the entire
    // application, that will have no effect--the error page continues to display.
    // This gives us a mechanism to recover from the error when the location changes.
    //
    // Whether we're in an error state or not, we update the location in state
    // so that when we are in an error state, it gets reset when a new location
    // comes in and the user recovers from the error.
    if (state.location !== props.location || state.revalidation !== "idle" && props.revalidation === "idle") {
      return {
        error: props.error,
        location: props.location,
        revalidation: props.revalidation
      };
    }

    // If we're not changing locations, preserve the location but still surface
    // any new errors that may come through. We retain the existing error, we do
    // this because the error provided from the app state may be cleared without
    // the location changing.
    return {
      error: props.error !== undefined ? props.error : state.error,
      location: state.location,
      revalidation: props.revalidation || state.revalidation
    };
  }
  componentDidCatch(error, errorInfo) {
    console.error("React Router caught the following error during render", error, errorInfo);
  }
  render() {
    return this.state.error !== undefined ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(RouteContext.Provider, {
      value: this.props.routeContext
    }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(RouteErrorContext.Provider, {
      value: this.state.error,
      children: this.props.component
    })) : this.props.children;
  }
}
function RenderedRoute(_ref) {
  let {
    routeContext,
    match,
    children
  } = _ref;
  let dataRouterContext = react__WEBPACK_IMPORTED_MODULE_0__.useContext(DataRouterContext);

  // Track how deep we got in our render pass to emulate SSR componentDidCatch
  // in a DataStaticRouter
  if (dataRouterContext && dataRouterContext.static && dataRouterContext.staticContext && (match.route.errorElement || match.route.ErrorBoundary)) {
    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;
  }
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(RouteContext.Provider, {
    value: routeContext
  }, children);
}
function _renderMatches(matches, parentMatches, dataRouterState, future) {
  var _dataRouterState;
  if (parentMatches === void 0) {
    parentMatches = [];
  }
  if (dataRouterState === void 0) {
    dataRouterState = null;
  }
  if (future === void 0) {
    future = null;
  }
  if (matches == null) {
    var _future;
    if (!dataRouterState) {
      return null;
    }
    if (dataRouterState.errors) {
      // Don't bail if we have data router errors so we can render them in the
      // boundary.  Use the pre-matched (or shimmed) matches
      matches = dataRouterState.matches;
    } else if ((_future = future) != null && _future.v7_partialHydration && parentMatches.length === 0 && !dataRouterState.initialized && dataRouterState.matches.length > 0) {
      // Don't bail if we're initializing with partial hydration and we have
      // router matches.  That means we're actively running `patchRoutesOnNavigation`
      // so we should render down the partial matches to the appropriate
      // `HydrateFallback`.  We only do this if `parentMatches` is empty so it
      // only impacts the root matches for `RouterProvider` and no descendant
      // `<Routes>`
      matches = dataRouterState.matches;
    } else {
      return null;
    }
  }
  let renderedMatches = matches;

  // If we have data errors, trim matches to the highest error boundary
  let errors = (_dataRouterState = dataRouterState) == null ? void 0 : _dataRouterState.errors;
  if (errors != null) {
    let errorIndex = renderedMatches.findIndex(m => m.route.id && (errors == null ? void 0 : errors[m.route.id]) !== undefined);
    !(errorIndex >= 0) ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, "Could not find a matching route for errors on route IDs: " + Object.keys(errors).join(",")) : 0 : void 0;
    renderedMatches = renderedMatches.slice(0, Math.min(renderedMatches.length, errorIndex + 1));
  }

  // If we're in a partial hydration mode, detect if we need to render down to
  // a given HydrateFallback while we load the rest of the hydration data
  let renderFallback = false;
  let fallbackIndex = -1;
  if (dataRouterState && future && future.v7_partialHydration) {
    for (let i = 0; i < renderedMatches.length; i++) {
      let match = renderedMatches[i];
      // Track the deepest fallback up until the first route without data
      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {
        fallbackIndex = i;
      }
      if (match.route.id) {
        let {
          loaderData,
          errors
        } = dataRouterState;
        let needsToRunLoader = match.route.loader && loaderData[match.route.id] === undefined && (!errors || errors[match.route.id] === undefined);
        if (match.route.lazy || needsToRunLoader) {
          // We found the first route that's not ready to render (waiting on
          // lazy, or has a loader that hasn't run yet).  Flag that we need to
          // render a fallback and render up until the appropriate fallback
          renderFallback = true;
          if (fallbackIndex >= 0) {
            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);
          } else {
            renderedMatches = [renderedMatches[0]];
          }
          break;
        }
      }
    }
  }
  return renderedMatches.reduceRight((outlet, match, index) => {
    // Only data routers handle errors/fallbacks
    let error;
    let shouldRenderHydrateFallback = false;
    let errorElement = null;
    let hydrateFallbackElement = null;
    if (dataRouterState) {
      error = errors && match.route.id ? errors[match.route.id] : undefined;
      errorElement = match.route.errorElement || defaultErrorElement;
      if (renderFallback) {
        if (fallbackIndex < 0 && index === 0) {
          warningOnce("route-fallback", false, "No `HydrateFallback` element provided to render during initial hydration");
          shouldRenderHydrateFallback = true;
          hydrateFallbackElement = null;
        } else if (fallbackIndex === index) {
          shouldRenderHydrateFallback = true;
          hydrateFallbackElement = match.route.hydrateFallbackElement || null;
        }
      }
    }
    let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));
    let getChildren = () => {
      let children;
      if (error) {
        children = errorElement;
      } else if (shouldRenderHydrateFallback) {
        children = hydrateFallbackElement;
      } else if (match.route.Component) {
        // Note: This is a de-optimized path since React won't re-use the
        // ReactElement since it's identity changes with each new
        // React.createElement call.  We keep this so folks can use
        // `<Route Component={...}>` in `<Routes>` but generally `Component`
        // usage is only advised in `RouterProvider` when we can convert it to
        // `element` ahead of time.
        children = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(match.route.Component, null);
      } else if (match.route.element) {
        children = match.route.element;
      } else {
        children = outlet;
      }
      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(RenderedRoute, {
        match: match,
        routeContext: {
          outlet,
          matches,
          isDataRoute: dataRouterState != null
        },
        children: children
      });
    };
    // Only wrap in an error boundary within data router usages when we have an
    // ErrorBoundary/errorElement on this route.  Otherwise let it bubble up to
    // an ancestor ErrorBoundary/errorElement
    return dataRouterState && (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(RenderErrorBoundary, {
      location: dataRouterState.location,
      revalidation: dataRouterState.revalidation,
      component: errorElement,
      error: error,
      children: getChildren(),
      routeContext: {
        outlet: null,
        matches,
        isDataRoute: true
      }
    }) : getChildren();
  }, null);
}
var DataRouterHook = /*#__PURE__*/function (DataRouterHook) {
  DataRouterHook["UseBlocker"] = "useBlocker";
  DataRouterHook["UseRevalidator"] = "useRevalidator";
  DataRouterHook["UseNavigateStable"] = "useNavigate";
  return DataRouterHook;
}(DataRouterHook || {});
var DataRouterStateHook = /*#__PURE__*/function (DataRouterStateHook) {
  DataRouterStateHook["UseBlocker"] = "useBlocker";
  DataRouterStateHook["UseLoaderData"] = "useLoaderData";
  DataRouterStateHook["UseActionData"] = "useActionData";
  DataRouterStateHook["UseRouteError"] = "useRouteError";
  DataRouterStateHook["UseNavigation"] = "useNavigation";
  DataRouterStateHook["UseRouteLoaderData"] = "useRouteLoaderData";
  DataRouterStateHook["UseMatches"] = "useMatches";
  DataRouterStateHook["UseRevalidator"] = "useRevalidator";
  DataRouterStateHook["UseNavigateStable"] = "useNavigate";
  DataRouterStateHook["UseRouteId"] = "useRouteId";
  return DataRouterStateHook;
}(DataRouterStateHook || {});
function getDataRouterConsoleError(hookName) {
  return hookName + " must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.";
}
function useDataRouterContext(hookName) {
  let ctx = react__WEBPACK_IMPORTED_MODULE_0__.useContext(DataRouterContext);
  !ctx ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, getDataRouterConsoleError(hookName)) : 0 : void 0;
  return ctx;
}
function useDataRouterState(hookName) {
  let state = react__WEBPACK_IMPORTED_MODULE_0__.useContext(DataRouterStateContext);
  !state ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, getDataRouterConsoleError(hookName)) : 0 : void 0;
  return state;
}
function useRouteContext(hookName) {
  let route = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);
  !route ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, getDataRouterConsoleError(hookName)) : 0 : void 0;
  return route;
}

// Internal version with hookName-aware debugging
function useCurrentRouteId(hookName) {
  let route = useRouteContext(hookName);
  let thisRoute = route.matches[route.matches.length - 1];
  !thisRoute.route.id ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, hookName + " can only be used on routes that contain a unique \"id\"") : 0 : void 0;
  return thisRoute.route.id;
}

/**
 * Returns the ID for the nearest contextual route
 */
function useRouteId() {
  return useCurrentRouteId(DataRouterStateHook.UseRouteId);
}

/**
 * Returns the current navigation, defaulting to an "idle" navigation when
 * no navigation is in progress
 */
function useNavigation() {
  let state = useDataRouterState(DataRouterStateHook.UseNavigation);
  return state.navigation;
}

/**
 * Returns a revalidate function for manually triggering revalidation, as well
 * as the current state of any manual revalidations
 */
function useRevalidator() {
  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);
  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);
  return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => ({
    revalidate: dataRouterContext.router.revalidate,
    state: state.revalidation
  }), [dataRouterContext.router.revalidate, state.revalidation]);
}

/**
 * Returns the active route matches, useful for accessing loaderData for
 * parent/child routes or the route "handle" property
 */
function useMatches() {
  let {
    matches,
    loaderData
  } = useDataRouterState(DataRouterStateHook.UseMatches);
  return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => matches.map(m => (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_convertRouteMatchToUiMatch)(m, loaderData)), [matches, loaderData]);
}

/**
 * Returns the loader data for the nearest ancestor Route loader
 */
function useLoaderData() {
  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);
  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);
  if (state.errors && state.errors[routeId] != null) {
    console.error("You cannot `useLoaderData` in an errorElement (routeId: " + routeId + ")");
    return undefined;
  }
  return state.loaderData[routeId];
}

/**
 * Returns the loaderData for the given routeId
 */
function useRouteLoaderData(routeId) {
  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);
  return state.loaderData[routeId];
}

/**
 * Returns the action data for the nearest ancestor Route action
 */
function useActionData() {
  let state = useDataRouterState(DataRouterStateHook.UseActionData);
  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);
  return state.actionData ? state.actionData[routeId] : undefined;
}

/**
 * Returns the nearest ancestor Route error, which could be a loader/action
 * error or a render error.  This is intended to be called from your
 * ErrorBoundary/errorElement to display a proper error message.
 */
function useRouteError() {
  var _state$errors;
  let error = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteErrorContext);
  let state = useDataRouterState(DataRouterStateHook.UseRouteError);
  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);

  // If this was a render error, we put it in a RouteError context inside
  // of RenderErrorBoundary
  if (error !== undefined) {
    return error;
  }

  // Otherwise look for errors from our data router state
  return (_state$errors = state.errors) == null ? void 0 : _state$errors[routeId];
}

/**
 * Returns the happy-path data from the nearest ancestor `<Await />` value
 */
function useAsyncValue() {
  let value = react__WEBPACK_IMPORTED_MODULE_0__.useContext(AwaitContext);
  return value == null ? void 0 : value._data;
}

/**
 * Returns the error from the nearest ancestor `<Await />` value
 */
function useAsyncError() {
  let value = react__WEBPACK_IMPORTED_MODULE_0__.useContext(AwaitContext);
  return value == null ? void 0 : value._error;
}
let blockerId = 0;

/**
 * Allow the application to block navigations within the SPA and present the
 * user a confirmation dialog to confirm the navigation.  Mostly used to avoid
 * using half-filled form data.  This does not handle hard-reloads or
 * cross-origin navigations.
 */
function useBlocker(shouldBlock) {
  let {
    router,
    basename
  } = useDataRouterContext(DataRouterHook.UseBlocker);
  let state = useDataRouterState(DataRouterStateHook.UseBlocker);
  let [blockerKey, setBlockerKey] = react__WEBPACK_IMPORTED_MODULE_0__.useState("");
  let blockerFunction = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(arg => {
    if (typeof shouldBlock !== "function") {
      return !!shouldBlock;
    }
    if (basename === "/") {
      return shouldBlock(arg);
    }

    // If they provided us a function and we've got an active basename, strip
    // it from the locations we expose to the user to match the behavior of
    // useLocation
    let {
      currentLocation,
      nextLocation,
      historyAction
    } = arg;
    return shouldBlock({
      currentLocation: _extends({}, currentLocation, {
        pathname: (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.stripBasename)(currentLocation.pathname, basename) || currentLocation.pathname
      }),
      nextLocation: _extends({}, nextLocation, {
        pathname: (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.stripBasename)(nextLocation.pathname, basename) || nextLocation.pathname
      }),
      historyAction
    });
  }, [basename, shouldBlock]);

  // This effect is in charge of blocker key assignment and deletion (which is
  // tightly coupled to the key)
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
    let key = String(++blockerId);
    setBlockerKey(key);
    return () => router.deleteBlocker(key);
  }, [router]);

  // This effect handles assigning the blockerFunction.  This is to handle
  // unstable blocker function identities, and happens only after the prior
  // effect so we don't get an orphaned blockerFunction in the router with a
  // key of "".  Until then we just have the IDLE_BLOCKER.
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
    if (blockerKey !== "") {
      router.getBlocker(blockerKey, blockerFunction);
    }
  }, [router, blockerKey, blockerFunction]);

  // Prefer the blocker from `state` not `router.state` since DataRouterContext
  // is memoized so this ensures we update on blocker state updates
  return blockerKey && state.blockers.has(blockerKey) ? state.blockers.get(blockerKey) : _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.IDLE_BLOCKER;
}

/**
 * Stable version of useNavigate that is used when we are in the context of
 * a RouterProvider.
 */
function useNavigateStable() {
  let {
    router
  } = useDataRouterContext(DataRouterHook.UseNavigateStable);
  let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);
  let activeRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);
  useIsomorphicLayoutEffect(() => {
    activeRef.current = true;
  });
  let navigate = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (to, options) {
    if (options === void 0) {
      options = {};
    }
     true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(activeRef.current, navigateEffectWarning) : 0;

    // Short circuit here since if this happens on first render the navigate
    // is useless because we haven't wired up our router subscriber yet
    if (!activeRef.current) return;
    if (typeof to === "number") {
      router.navigate(to);
    } else {
      router.navigate(to, _extends({
        fromRouteId: id
      }, options));
    }
  }, [router, id]);
  return navigate;
}
const alreadyWarned$1 = {};
function warningOnce(key, cond, message) {
  if (!cond && !alreadyWarned$1[key]) {
    alreadyWarned$1[key] = true;
     true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(false, message) : 0;
  }
}

const alreadyWarned = {};
function warnOnce(key, message) {
  if (!alreadyWarned[message]) {
    alreadyWarned[message] = true;
    console.warn(message);
  }
}
const logDeprecation = (flag, msg, link) => warnOnce(flag, "\u26A0\uFE0F React Router Future Flag Warning: " + msg + ". " + ("You can use the `" + flag + "` future flag to opt-in early. ") + ("For more information, see " + link + "."));
function logV6DeprecationWarnings(renderFuture, routerFuture) {
  if (!(renderFuture != null && renderFuture.v7_startTransition)) {
    logDeprecation("v7_startTransition", "React Router will begin wrapping state updates in `React.startTransition` in v7", "https://reactrouter.com/v6/upgrading/future#v7_starttransition");
  }
  if (!(renderFuture != null && renderFuture.v7_relativeSplatPath) && (!routerFuture || !routerFuture.v7_relativeSplatPath)) {
    logDeprecation("v7_relativeSplatPath", "Relative route resolution within Splat routes is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath");
  }
  if (routerFuture) {
    if (!routerFuture.v7_fetcherPersist) {
      logDeprecation("v7_fetcherPersist", "The persistence behavior of fetchers is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist");
    }
    if (!routerFuture.v7_normalizeFormMethod) {
      logDeprecation("v7_normalizeFormMethod", "Casing of `formMethod` fields is being normalized to uppercase in v7", "https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod");
    }
    if (!routerFuture.v7_partialHydration) {
      logDeprecation("v7_partialHydration", "`RouterProvider` hydration behavior is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_partialhydration");
    }
    if (!routerFuture.v7_skipActionErrorRevalidation) {
      logDeprecation("v7_skipActionErrorRevalidation", "The revalidation behavior after 4xx/5xx `action` responses is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation");
    }
  }
}

/**
  Webpack + React 17 fails to compile on any of the following because webpack
  complains that `startTransition` doesn't exist in `React`:
  * import { startTransition } from "react"
  * import * as React from from "react";
    "startTransition" in React ? React.startTransition(() => setState()) : setState()
  * import * as React from from "react";
    "startTransition" in React ? React["startTransition"](() => setState()) : setState()

  Moving it to a constant such as the following solves the Webpack/React 17 issue:
  * import * as React from from "react";
    const START_TRANSITION = "startTransition";
    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()

  However, that introduces webpack/terser minification issues in production builds
  in React 18 where minification/obfuscation ends up removing the call of
  React.startTransition entirely from the first half of the ternary.  Grabbing
  this exported reference once up front resolves that issue.

  See https://github.com/remix-run/react-router/issues/10579
*/
const START_TRANSITION = "startTransition";
const startTransitionImpl = react__WEBPACK_IMPORTED_MODULE_0__[START_TRANSITION];

/**
 * Given a Remix Router instance, render the appropriate UI
 */
function RouterProvider(_ref) {
  let {
    fallbackElement,
    router,
    future
  } = _ref;
  let [state, setStateImpl] = react__WEBPACK_IMPORTED_MODULE_0__.useState(router.state);
  let {
    v7_startTransition
  } = future || {};
  let setState = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(newState => {
    if (v7_startTransition && startTransitionImpl) {
      startTransitionImpl(() => setStateImpl(newState));
    } else {
      setStateImpl(newState);
    }
  }, [setStateImpl, v7_startTransition]);

  // Need to use a layout effect here so we are subscribed early enough to
  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)
  react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => router.subscribe(setState), [router, setState]);
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
     true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(fallbackElement == null || !router.future.v7_partialHydration, "`<RouterProvider fallbackElement>` is deprecated when using " + "`v7_partialHydration`, use a `HydrateFallback` component instead") : 0;
    // Only log this once on initial mount
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, []);
  let navigator = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => {
    return {
      createHref: router.createHref,
      encodeLocation: router.encodeLocation,
      go: n => router.navigate(n),
      push: (to, state, opts) => router.navigate(to, {
        state,
        preventScrollReset: opts == null ? void 0 : opts.preventScrollReset
      }),
      replace: (to, state, opts) => router.navigate(to, {
        replace: true,
        state,
        preventScrollReset: opts == null ? void 0 : opts.preventScrollReset
      })
    };
  }, [router]);
  let basename = router.basename || "/";
  let dataRouterContext = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => ({
    router,
    navigator,
    static: false,
    basename
  }), [router, navigator, basename]);
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => logV6DeprecationWarnings(future, router.future), [router, future]);

  // The fragment and {null} here are important!  We need them to keep React 18's
  // useId happy when we are server-rendering since we may have a <script> here
  // containing the hydrated server-side staticContext (from StaticRouterProvider).
  // useId relies on the component tree structure to generate deterministic id's
  // so we need to ensure it remains the same on the client even though
  // we don't need the <script> tag
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(DataRouterContext.Provider, {
    value: dataRouterContext
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(DataRouterStateContext.Provider, {
    value: state
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Router, {
    basename: basename,
    location: state.location,
    navigationType: state.historyAction,
    navigator: navigator,
    future: {
      v7_relativeSplatPath: router.future.v7_relativeSplatPath
    }
  }, state.initialized || router.future.v7_partialHydration ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(DataRoutes, {
    routes: router.routes,
    future: router.future,
    state: state
  }) : fallbackElement))), null);
}
function DataRoutes(_ref2) {
  let {
    routes,
    future,
    state
  } = _ref2;
  return useRoutesImpl(routes, undefined, state, future);
}
/**
 * A `<Router>` that stores all entries in memory.
 *
 * @see https://reactrouter.com/v6/router-components/memory-router
 */
function MemoryRouter(_ref3) {
  let {
    basename,
    children,
    initialEntries,
    initialIndex,
    future
  } = _ref3;
  let historyRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef();
  if (historyRef.current == null) {
    historyRef.current = (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.createMemoryHistory)({
      initialEntries,
      initialIndex,
      v5Compat: true
    });
  }
  let history = historyRef.current;
  let [state, setStateImpl] = react__WEBPACK_IMPORTED_MODULE_0__.useState({
    action: history.action,
    location: history.location
  });
  let {
    v7_startTransition
  } = future || {};
  let setState = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(newState => {
    v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);
  }, [setStateImpl, v7_startTransition]);
  react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => history.listen(setState), [history, setState]);
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => logV6DeprecationWarnings(future), [future]);
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Router, {
    basename: basename,
    children: children,
    location: state.location,
    navigationType: state.action,
    navigator: history,
    future: future
  });
}
/**
 * Changes the current location.
 *
 * Note: This API is mostly useful in React.Component subclasses that are not
 * able to use hooks. In functional components, we recommend you use the
 * `useNavigate` hook instead.
 *
 * @see https://reactrouter.com/v6/components/navigate
 */
function Navigate(_ref4) {
  let {
    to,
    replace,
    state,
    relative
  } = _ref4;
  !useInRouterContext() ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, // TODO: This error is probably because they somehow have 2 versions of
  // the router loaded. We can help them understand how to avoid that.
  "<Navigate> may be used only in the context of a <Router> component.") : 0 : void 0;
  let {
    future,
    static: isStatic
  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext);
   true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(!isStatic, "<Navigate> must not be used on the initial render in a <StaticRouter>. " + "This is a no-op, but you should modify your code so the <Navigate> is " + "only ever rendered in response to some user interaction or state change.") : 0;
  let {
    matches
  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);
  let {
    pathname: locationPathname
  } = useLocation();
  let navigate = useNavigate();

  // Resolve the path outside of the effect so that when effects run twice in
  // StrictMode they navigate to the same place
  let path = (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.resolveTo)(to, (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_getResolveToMatches)(matches, future.v7_relativeSplatPath), locationPathname, relative === "path");
  let jsonPath = JSON.stringify(path);
  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => navigate(JSON.parse(jsonPath), {
    replace,
    state,
    relative
  }), [navigate, jsonPath, relative, replace, state]);
  return null;
}
/**
 * Renders the child route's element, if there is one.
 *
 * @see https://reactrouter.com/v6/components/outlet
 */
function Outlet(props) {
  return useOutlet(props.context);
}
/**
 * Declares an element that should be rendered at a certain URL path.
 *
 * @see https://reactrouter.com/v6/components/route
 */
function Route(_props) {
   true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, "A <Route> is only ever to be used as the child of <Routes> element, " + "never rendered directly. Please wrap your <Route> in a <Routes>.") : 0 ;
}
/**
 * Provides location context for the rest of the app.
 *
 * Note: You usually won't render a `<Router>` directly. Instead, you'll render a
 * router that is more specific to your environment such as a `<BrowserRouter>`
 * in web browsers or a `<StaticRouter>` for server rendering.
 *
 * @see https://reactrouter.com/v6/router-components/router
 */
function Router(_ref5) {
  let {
    basename: basenameProp = "/",
    children = null,
    location: locationProp,
    navigationType = _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.Action.Pop,
    navigator,
    static: staticProp = false,
    future
  } = _ref5;
  !!useInRouterContext() ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, "You cannot render a <Router> inside another <Router>." + " You should never have more than one in your app.") : 0 : void 0;

  // Preserve trailing slashes on basename, so we can let the user control
  // the enforcement of trailing slashes throughout the app
  let basename = basenameProp.replace(/^\/*/, "/");
  let navigationContext = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => ({
    basename,
    navigator,
    static: staticProp,
    future: _extends({
      v7_relativeSplatPath: false
    }, future)
  }), [basename, future, navigator, staticProp]);
  if (typeof locationProp === "string") {
    locationProp = (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.parsePath)(locationProp);
  }
  let {
    pathname = "/",
    search = "",
    hash = "",
    state = null,
    key = "default"
  } = locationProp;
  let locationContext = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => {
    let trailingPathname = (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.stripBasename)(pathname, basename);
    if (trailingPathname == null) {
      return null;
    }
    return {
      location: {
        pathname: trailingPathname,
        search,
        hash,
        state,
        key
      },
      navigationType
    };
  }, [basename, pathname, search, hash, state, key, navigationType]);
   true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(locationContext != null, "<Router basename=\"" + basename + "\"> is not able to match the URL " + ("\"" + pathname + search + hash + "\" because it does not start with the ") + "basename, so the <Router> won't render anything.") : 0;
  if (locationContext == null) {
    return null;
  }
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(NavigationContext.Provider, {
    value: navigationContext
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(LocationContext.Provider, {
    children: children,
    value: locationContext
  }));
}
/**
 * A container for a nested tree of `<Route>` elements that renders the branch
 * that best matches the current location.
 *
 * @see https://reactrouter.com/v6/components/routes
 */
function Routes(_ref6) {
  let {
    children,
    location
  } = _ref6;
  return useRoutes(createRoutesFromChildren(children), location);
}
/**
 * Component to use for rendering lazily loaded data from returning defer()
 * in a loader function
 */
function Await(_ref7) {
  let {
    children,
    errorElement,
    resolve
  } = _ref7;
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(AwaitErrorBoundary, {
    resolve: resolve,
    errorElement: errorElement
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(ResolveAwait, null, children));
}
var AwaitRenderStatus = /*#__PURE__*/function (AwaitRenderStatus) {
  AwaitRenderStatus[AwaitRenderStatus["pending"] = 0] = "pending";
  AwaitRenderStatus[AwaitRenderStatus["success"] = 1] = "success";
  AwaitRenderStatus[AwaitRenderStatus["error"] = 2] = "error";
  return AwaitRenderStatus;
}(AwaitRenderStatus || {});
const neverSettledPromise = new Promise(() => {});
class AwaitErrorBoundary extends react__WEBPACK_IMPORTED_MODULE_0__.Component {
  constructor(props) {
    super(props);
    this.state = {
      error: null
    };
  }
  static getDerivedStateFromError(error) {
    return {
      error
    };
  }
  componentDidCatch(error, errorInfo) {
    console.error("<Await> caught the following error during render", error, errorInfo);
  }
  render() {
    let {
      children,
      errorElement,
      resolve
    } = this.props;
    let promise = null;
    let status = AwaitRenderStatus.pending;
    if (!(resolve instanceof Promise)) {
      // Didn't get a promise - provide as a resolved promise
      status = AwaitRenderStatus.success;
      promise = Promise.resolve();
      Object.defineProperty(promise, "_tracked", {
        get: () => true
      });
      Object.defineProperty(promise, "_data", {
        get: () => resolve
      });
    } else if (this.state.error) {
      // Caught a render error, provide it as a rejected promise
      status = AwaitRenderStatus.error;
      let renderError = this.state.error;
      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings
      Object.defineProperty(promise, "_tracked", {
        get: () => true
      });
      Object.defineProperty(promise, "_error", {
        get: () => renderError
      });
    } else if (resolve._tracked) {
      // Already tracked promise - check contents
      promise = resolve;
      status = "_error" in promise ? AwaitRenderStatus.error : "_data" in promise ? AwaitRenderStatus.success : AwaitRenderStatus.pending;
    } else {
      // Raw (untracked) promise - track it
      status = AwaitRenderStatus.pending;
      Object.defineProperty(resolve, "_tracked", {
        get: () => true
      });
      promise = resolve.then(data => Object.defineProperty(resolve, "_data", {
        get: () => data
      }), error => Object.defineProperty(resolve, "_error", {
        get: () => error
      }));
    }
    if (status === AwaitRenderStatus.error && promise._error instanceof _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.AbortedDeferredError) {
      // Freeze the UI by throwing a never resolved promise
      throw neverSettledPromise;
    }
    if (status === AwaitRenderStatus.error && !errorElement) {
      // No errorElement, throw to the nearest route-level error boundary
      throw promise._error;
    }
    if (status === AwaitRenderStatus.error) {
      // Render via our errorElement
      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(AwaitContext.Provider, {
        value: promise,
        children: errorElement
      });
    }
    if (status === AwaitRenderStatus.success) {
      // Render children with resolved value
      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(AwaitContext.Provider, {
        value: promise,
        children: children
      });
    }

    // Throw to the suspense boundary
    throw promise;
  }
}

/**
 * @private
 * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`
 */
function ResolveAwait(_ref8) {
  let {
    children
  } = _ref8;
  let data = useAsyncValue();
  let toRender = typeof children === "function" ? children(data) : children;
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, toRender);
}

///////////////////////////////////////////////////////////////////////////////
// UTILS
///////////////////////////////////////////////////////////////////////////////

/**
 * Creates a route config from a React "children" object, which is usually
 * either a `<Route>` element or an array of them. Used internally by
 * `<Routes>` to create a route config from its children.
 *
 * @see https://reactrouter.com/v6/utils/create-routes-from-children
 */
function createRoutesFromChildren(children, parentPath) {
  if (parentPath === void 0) {
    parentPath = [];
  }
  let routes = [];
  react__WEBPACK_IMPORTED_MODULE_0__.Children.forEach(children, (element, index) => {
    if (! /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(element)) {
      // Ignore non-elements. This allows people to more easily inline
      // conditionals in their route config.
      return;
    }
    let treePath = [...parentPath, index];
    if (element.type === react__WEBPACK_IMPORTED_MODULE_0__.Fragment) {
      // Transparently support React.Fragment and its children.
      routes.push.apply(routes, createRoutesFromChildren(element.props.children, treePath));
      return;
    }
    !(element.type === Route) ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, "[" + (typeof element.type === "string" ? element.type : element.type.name) + "] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>") : 0 : void 0;
    !(!element.props.index || !element.props.children) ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, "An index route cannot have child routes.") : 0 : void 0;
    let route = {
      id: element.props.id || treePath.join("-"),
      caseSensitive: element.props.caseSensitive,
      element: element.props.element,
      Component: element.props.Component,
      index: element.props.index,
      path: element.props.path,
      loader: element.props.loader,
      action: element.props.action,
      errorElement: element.props.errorElement,
      ErrorBoundary: element.props.ErrorBoundary,
      hasErrorBoundary: element.props.ErrorBoundary != null || element.props.errorElement != null,
      shouldRevalidate: element.props.shouldRevalidate,
      handle: element.props.handle,
      lazy: element.props.lazy
    };
    if (element.props.children) {
      route.children = createRoutesFromChildren(element.props.children, treePath);
    }
    routes.push(route);
  });
  return routes;
}

/**
 * Renders the result of `matchRoutes()` into a React element.
 */
function renderMatches(matches) {
  return _renderMatches(matches);
}

function mapRouteProperties(route) {
  let updates = {
    // Note: this check also occurs in createRoutesFromChildren so update
    // there if you change this -- please and thank you!
    hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null
  };
  if (route.Component) {
    if (true) {
      if (route.element) {
         true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(false, "You should not include both `Component` and `element` on your route - " + "`Component` will be used.") : 0;
      }
    }
    Object.assign(updates, {
      element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(route.Component),
      Component: undefined
    });
  }
  if (route.HydrateFallback) {
    if (true) {
      if (route.hydrateFallbackElement) {
         true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(false, "You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - " + "`HydrateFallback` will be used.") : 0;
      }
    }
    Object.assign(updates, {
      hydrateFallbackElement: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(route.HydrateFallback),
      HydrateFallback: undefined
    });
  }
  if (route.ErrorBoundary) {
    if (true) {
      if (route.errorElement) {
         true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(false, "You should not include both `ErrorBoundary` and `errorElement` on your route - " + "`ErrorBoundary` will be used.") : 0;
      }
    }
    Object.assign(updates, {
      errorElement: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(route.ErrorBoundary),
      ErrorBoundary: undefined
    });
  }
  return updates;
}
function createMemoryRouter(routes, opts) {
  return (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.createRouter)({
    basename: opts == null ? void 0 : opts.basename,
    future: _extends({}, opts == null ? void 0 : opts.future, {
      v7_prependBasename: true
    }),
    history: (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.createMemoryHistory)({
      initialEntries: opts == null ? void 0 : opts.initialEntries,
      initialIndex: opts == null ? void 0 : opts.initialIndex
    }),
    hydrationData: opts == null ? void 0 : opts.hydrationData,
    routes,
    mapRouteProperties,
    dataStrategy: opts == null ? void 0 : opts.dataStrategy,
    patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation
  }).initialize();
}


//# sourceMappingURL=index.js.map


/***/ }),

/***/ "./node_modules/redux/es/redux.js":
/*!****************************************!*\
  !*** ./node_modules/redux/es/redux.js ***!
  \****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   __DO_NOT_USE__ActionTypes: () => (/* binding */ ActionTypes),
/* harmony export */   applyMiddleware: () => (/* binding */ applyMiddleware),
/* harmony export */   bindActionCreators: () => (/* binding */ bindActionCreators),
/* harmony export */   combineReducers: () => (/* binding */ combineReducers),
/* harmony export */   compose: () => (/* binding */ compose),
/* harmony export */   createStore: () => (/* binding */ createStore),
/* harmony export */   legacy_createStore: () => (/* binding */ legacy_createStore)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ "./node_modules/@babel/runtime/helpers/esm/objectSpread2.js");


/**
 * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js
 *
 * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes
 * during build.
 * @param {number} code
 */
function formatProdErrorMessage(code) {
  return "Minified Redux error #" + code + "; visit https://redux.js.org/Errors?code=" + code + " for the full message or " + 'use the non-minified dev environment for full errors. ';
}

// Inlined version of the `symbol-observable` polyfill
var $$observable = (function () {
  return typeof Symbol === 'function' && Symbol.observable || '@@observable';
})();

/**
 * These are private action types reserved by Redux.
 * For any unknown actions, you must return the current state.
 * If the current state is undefined, you must return the initial state.
 * Do not reference these action types directly in your code.
 */
var randomString = function randomString() {
  return Math.random().toString(36).substring(7).split('').join('.');
};

var ActionTypes = {
  INIT: "@@redux/INIT" + randomString(),
  REPLACE: "@@redux/REPLACE" + randomString(),
  PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {
    return "@@redux/PROBE_UNKNOWN_ACTION" + randomString();
  }
};

/**
 * @param {any} obj The object to inspect.
 * @returns {boolean} True if the argument appears to be a plain object.
 */
function isPlainObject(obj) {
  if (typeof obj !== 'object' || obj === null) return false;
  var proto = obj;

  while (Object.getPrototypeOf(proto) !== null) {
    proto = Object.getPrototypeOf(proto);
  }

  return Object.getPrototypeOf(obj) === proto;
}

// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of
function miniKindOf(val) {
  if (val === void 0) return 'undefined';
  if (val === null) return 'null';
  var type = typeof val;

  switch (type) {
    case 'boolean':
    case 'string':
    case 'number':
    case 'symbol':
    case 'function':
      {
        return type;
      }
  }

  if (Array.isArray(val)) return 'array';
  if (isDate(val)) return 'date';
  if (isError(val)) return 'error';
  var constructorName = ctorName(val);

  switch (constructorName) {
    case 'Symbol':
    case 'Promise':
    case 'WeakMap':
    case 'WeakSet':
    case 'Map':
    case 'Set':
      return constructorName;
  } // other


  return type.slice(8, -1).toLowerCase().replace(/\s/g, '');
}

function ctorName(val) {
  return typeof val.constructor === 'function' ? val.constructor.name : null;
}

function isError(val) {
  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';
}

function isDate(val) {
  if (val instanceof Date) return true;
  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';
}

function kindOf(val) {
  var typeOfVal = typeof val;

  if (true) {
    typeOfVal = miniKindOf(val);
  }

  return typeOfVal;
}

/**
 * @deprecated
 *
 * **We recommend using the `configureStore` method
 * of the `@reduxjs/toolkit` package**, which replaces `createStore`.
 *
 * Redux Toolkit is our recommended approach for writing Redux logic today,
 * including store setup, reducers, data fetching, and more.
 *
 * **For more details, please read this Redux docs page:**
 * **https://redux.js.org/introduction/why-rtk-is-redux-today**
 *
 * `configureStore` from Redux Toolkit is an improved version of `createStore` that
 * simplifies setup and helps avoid common bugs.
 *
 * You should not be using the `redux` core package by itself today, except for learning purposes.
 * The `createStore` method from the core `redux` package will not be removed, but we encourage
 * all users to migrate to using Redux Toolkit for all Redux code.
 *
 * If you want to use `createStore` without this visual deprecation warning, use
 * the `legacy_createStore` import instead:
 *
 * `import { legacy_createStore as createStore} from 'redux'`
 *
 */

function createStore(reducer, preloadedState, enhancer) {
  var _ref2;

  if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {
    throw new Error( false ? 0 : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');
  }

  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {
    enhancer = preloadedState;
    preloadedState = undefined;
  }

  if (typeof enhancer !== 'undefined') {
    if (typeof enhancer !== 'function') {
      throw new Error( false ? 0 : "Expected the enhancer to be a function. Instead, received: '" + kindOf(enhancer) + "'");
    }

    return enhancer(createStore)(reducer, preloadedState);
  }

  if (typeof reducer !== 'function') {
    throw new Error( false ? 0 : "Expected the root reducer to be a function. Instead, received: '" + kindOf(reducer) + "'");
  }

  var currentReducer = reducer;
  var currentState = preloadedState;
  var currentListeners = [];
  var nextListeners = currentListeners;
  var isDispatching = false;
  /**
   * This makes a shallow copy of currentListeners so we can use
   * nextListeners as a temporary list while dispatching.
   *
   * This prevents any bugs around consumers calling
   * subscribe/unsubscribe in the middle of a dispatch.
   */

  function ensureCanMutateNextListeners() {
    if (nextListeners === currentListeners) {
      nextListeners = currentListeners.slice();
    }
  }
  /**
   * Reads the state tree managed by the store.
   *
   * @returns {any} The current state tree of your application.
   */


  function getState() {
    if (isDispatching) {
      throw new Error( false ? 0 : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');
    }

    return currentState;
  }
  /**
   * Adds a change listener. It will be called any time an action is dispatched,
   * and some part of the state tree may potentially have changed. You may then
   * call `getState()` to read the current state tree inside the callback.
   *
   * You may call `dispatch()` from a change listener, with the following
   * caveats:
   *
   * 1. The subscriptions are snapshotted just before every `dispatch()` call.
   * If you subscribe or unsubscribe while the listeners are being invoked, this
   * will not have any effect on the `dispatch()` that is currently in progress.
   * However, the next `dispatch()` call, whether nested or not, will use a more
   * recent snapshot of the subscription list.
   *
   * 2. The listener should not expect to see all state changes, as the state
   * might have been updated multiple times during a nested `dispatch()` before
   * the listener is called. It is, however, guaranteed that all subscribers
   * registered before the `dispatch()` started will be called with the latest
   * state by the time it exits.
   *
   * @param {Function} listener A callback to be invoked on every dispatch.
   * @returns {Function} A function to remove this change listener.
   */


  function subscribe(listener) {
    if (typeof listener !== 'function') {
      throw new Error( false ? 0 : "Expected the listener to be a function. Instead, received: '" + kindOf(listener) + "'");
    }

    if (isDispatching) {
      throw new Error( false ? 0 : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');
    }

    var isSubscribed = true;
    ensureCanMutateNextListeners();
    nextListeners.push(listener);
    return function unsubscribe() {
      if (!isSubscribed) {
        return;
      }

      if (isDispatching) {
        throw new Error( false ? 0 : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');
      }

      isSubscribed = false;
      ensureCanMutateNextListeners();
      var index = nextListeners.indexOf(listener);
      nextListeners.splice(index, 1);
      currentListeners = null;
    };
  }
  /**
   * Dispatches an action. It is the only way to trigger a state change.
   *
   * The `reducer` function, used to create the store, will be called with the
   * current state tree and the given `action`. Its return value will
   * be considered the **next** state of the tree, and the change listeners
   * will be notified.
   *
   * The base implementation only supports plain object actions. If you want to
   * dispatch a Promise, an Observable, a thunk, or something else, you need to
   * wrap your store creating function into the corresponding middleware. For
   * example, see the documentation for the `redux-thunk` package. Even the
   * middleware will eventually dispatch plain object actions using this method.
   *
   * @param {Object} action A plain object representing “what changed”. It is
   * a good idea to keep actions serializable so you can record and replay user
   * sessions, or use the time travelling `redux-devtools`. An action must have
   * a `type` property which may not be `undefined`. It is a good idea to use
   * string constants for action types.
   *
   * @returns {Object} For convenience, the same action object you dispatched.
   *
   * Note that, if you use a custom middleware, it may wrap `dispatch()` to
   * return something else (for example, a Promise you can await).
   */


  function dispatch(action) {
    if (!isPlainObject(action)) {
      throw new Error( false ? 0 : "Actions must be plain objects. Instead, the actual type was: '" + kindOf(action) + "'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.");
    }

    if (typeof action.type === 'undefined') {
      throw new Error( false ? 0 : 'Actions may not have an undefined "type" property. You may have misspelled an action type string constant.');
    }

    if (isDispatching) {
      throw new Error( false ? 0 : 'Reducers may not dispatch actions.');
    }

    try {
      isDispatching = true;
      currentState = currentReducer(currentState, action);
    } finally {
      isDispatching = false;
    }

    var listeners = currentListeners = nextListeners;

    for (var i = 0; i < listeners.length; i++) {
      var listener = listeners[i];
      listener();
    }

    return action;
  }
  /**
   * Replaces the reducer currently used by the store to calculate the state.
   *
   * You might need this if your app implements code splitting and you want to
   * load some of the reducers dynamically. You might also need this if you
   * implement a hot reloading mechanism for Redux.
   *
   * @param {Function} nextReducer The reducer for the store to use instead.
   * @returns {void}
   */


  function replaceReducer(nextReducer) {
    if (typeof nextReducer !== 'function') {
      throw new Error( false ? 0 : "Expected the nextReducer to be a function. Instead, received: '" + kindOf(nextReducer));
    }

    currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.
    // Any reducers that existed in both the new and old rootReducer
    // will receive the previous state. This effectively populates
    // the new state tree with any relevant data from the old one.

    dispatch({
      type: ActionTypes.REPLACE
    });
  }
  /**
   * Interoperability point for observable/reactive libraries.
   * @returns {observable} A minimal observable of state changes.
   * For more information, see the observable proposal:
   * https://github.com/tc39/proposal-observable
   */


  function observable() {
    var _ref;

    var outerSubscribe = subscribe;
    return _ref = {
      /**
       * The minimal observable subscription method.
       * @param {Object} observer Any object that can be used as an observer.
       * The observer object should have a `next` method.
       * @returns {subscription} An object with an `unsubscribe` method that can
       * be used to unsubscribe the observable from the store, and prevent further
       * emission of values from the observable.
       */
      subscribe: function subscribe(observer) {
        if (typeof observer !== 'object' || observer === null) {
          throw new Error( false ? 0 : "Expected the observer to be an object. Instead, received: '" + kindOf(observer) + "'");
        }

        function observeState() {
          if (observer.next) {
            observer.next(getState());
          }
        }

        observeState();
        var unsubscribe = outerSubscribe(observeState);
        return {
          unsubscribe: unsubscribe
        };
      }
    }, _ref[$$observable] = function () {
      return this;
    }, _ref;
  } // When a store is created, an "INIT" action is dispatched so that every
  // reducer returns their initial state. This effectively populates
  // the initial state tree.


  dispatch({
    type: ActionTypes.INIT
  });
  return _ref2 = {
    dispatch: dispatch,
    subscribe: subscribe,
    getState: getState,
    replaceReducer: replaceReducer
  }, _ref2[$$observable] = observable, _ref2;
}
/**
 * Creates a Redux store that holds the state tree.
 *
 * **We recommend using `configureStore` from the
 * `@reduxjs/toolkit` package**, which replaces `createStore`:
 * **https://redux.js.org/introduction/why-rtk-is-redux-today**
 *
 * The only way to change the data in the store is to call `dispatch()` on it.
 *
 * There should only be a single store in your app. To specify how different
 * parts of the state tree respond to actions, you may combine several reducers
 * into a single reducer function by using `combineReducers`.
 *
 * @param {Function} reducer A function that returns the next state tree, given
 * the current state tree and the action to handle.
 *
 * @param {any} [preloadedState] The initial state. You may optionally specify it
 * to hydrate the state from the server in universal apps, or to restore a
 * previously serialized user session.
 * If you use `combineReducers` to produce the root reducer function, this must be
 * an object with the same shape as `combineReducers` keys.
 *
 * @param {Function} [enhancer] The store enhancer. You may optionally specify it
 * to enhance the store with third-party capabilities such as middleware,
 * time travel, persistence, etc. The only store enhancer that ships with Redux
 * is `applyMiddleware()`.
 *
 * @returns {Store} A Redux store that lets you read the state, dispatch actions
 * and subscribe to changes.
 */

var legacy_createStore = createStore;

/**
 * Prints a warning in the console if it exists.
 *
 * @param {String} message The warning message.
 * @returns {void}
 */
function warning(message) {
  /* eslint-disable no-console */
  if (typeof console !== 'undefined' && typeof console.error === 'function') {
    console.error(message);
  }
  /* eslint-enable no-console */


  try {
    // This error was thrown as a convenience so that if you enable
    // "break on all exceptions" in your console,
    // it would pause the execution at this line.
    throw new Error(message);
  } catch (e) {} // eslint-disable-line no-empty

}

function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {
  var reducerKeys = Object.keys(reducers);
  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';

  if (reducerKeys.length === 0) {
    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';
  }

  if (!isPlainObject(inputState)) {
    return "The " + argumentName + " has unexpected type of \"" + kindOf(inputState) + "\". Expected argument to be an object with the following " + ("keys: \"" + reducerKeys.join('", "') + "\"");
  }

  var unexpectedKeys = Object.keys(inputState).filter(function (key) {
    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];
  });
  unexpectedKeys.forEach(function (key) {
    unexpectedKeyCache[key] = true;
  });
  if (action && action.type === ActionTypes.REPLACE) return;

  if (unexpectedKeys.length > 0) {
    return "Unexpected " + (unexpectedKeys.length > 1 ? 'keys' : 'key') + " " + ("\"" + unexpectedKeys.join('", "') + "\" found in " + argumentName + ". ") + "Expected to find one of the known reducer keys instead: " + ("\"" + reducerKeys.join('", "') + "\". Unexpected keys will be ignored.");
  }
}

function assertReducerShape(reducers) {
  Object.keys(reducers).forEach(function (key) {
    var reducer = reducers[key];
    var initialState = reducer(undefined, {
      type: ActionTypes.INIT
    });

    if (typeof initialState === 'undefined') {
      throw new Error( false ? 0 : "The slice reducer for key \"" + key + "\" returned undefined during initialization. " + "If the state passed to the reducer is undefined, you must " + "explicitly return the initial state. The initial state may " + "not be undefined. If you don't want to set a value for this reducer, " + "you can use null instead of undefined.");
    }

    if (typeof reducer(undefined, {
      type: ActionTypes.PROBE_UNKNOWN_ACTION()
    }) === 'undefined') {
      throw new Error( false ? 0 : "The slice reducer for key \"" + key + "\" returned undefined when probed with a random type. " + ("Don't try to handle '" + ActionTypes.INIT + "' or other actions in \"redux/*\" ") + "namespace. They are considered private. Instead, you must return the " + "current state for any unknown actions, unless it is undefined, " + "in which case you must return the initial state, regardless of the " + "action type. The initial state may not be undefined, but can be null.");
    }
  });
}
/**
 * Turns an object whose values are different reducer functions, into a single
 * reducer function. It will call every child reducer, and gather their results
 * into a single state object, whose keys correspond to the keys of the passed
 * reducer functions.
 *
 * @param {Object} reducers An object whose values correspond to different
 * reducer functions that need to be combined into one. One handy way to obtain
 * it is to use ES6 `import * as reducers` syntax. The reducers may never return
 * undefined for any action. Instead, they should return their initial state
 * if the state passed to them was undefined, and the current state for any
 * unrecognized action.
 *
 * @returns {Function} A reducer function that invokes every reducer inside the
 * passed object, and builds a state object with the same shape.
 */


function combineReducers(reducers) {
  var reducerKeys = Object.keys(reducers);
  var finalReducers = {};

  for (var i = 0; i < reducerKeys.length; i++) {
    var key = reducerKeys[i];

    if (true) {
      if (typeof reducers[key] === 'undefined') {
        warning("No reducer provided for key \"" + key + "\"");
      }
    }

    if (typeof reducers[key] === 'function') {
      finalReducers[key] = reducers[key];
    }
  }

  var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same
  // keys multiple times.

  var unexpectedKeyCache;

  if (true) {
    unexpectedKeyCache = {};
  }

  var shapeAssertionError;

  try {
    assertReducerShape(finalReducers);
  } catch (e) {
    shapeAssertionError = e;
  }

  return function combination(state, action) {
    if (state === void 0) {
      state = {};
    }

    if (shapeAssertionError) {
      throw shapeAssertionError;
    }

    if (true) {
      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);

      if (warningMessage) {
        warning(warningMessage);
      }
    }

    var hasChanged = false;
    var nextState = {};

    for (var _i = 0; _i < finalReducerKeys.length; _i++) {
      var _key = finalReducerKeys[_i];
      var reducer = finalReducers[_key];
      var previousStateForKey = state[_key];
      var nextStateForKey = reducer(previousStateForKey, action);

      if (typeof nextStateForKey === 'undefined') {
        var actionType = action && action.type;
        throw new Error( false ? 0 : "When called with an action of type " + (actionType ? "\"" + String(actionType) + "\"" : '(unknown type)') + ", the slice reducer for key \"" + _key + "\" returned undefined. " + "To ignore an action, you must explicitly return the previous state. " + "If you want this reducer to hold no value, you can return null instead of undefined.");
      }

      nextState[_key] = nextStateForKey;
      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;
    }

    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;
    return hasChanged ? nextState : state;
  };
}

function bindActionCreator(actionCreator, dispatch) {
  return function () {
    return dispatch(actionCreator.apply(this, arguments));
  };
}
/**
 * Turns an object whose values are action creators, into an object with the
 * same keys, but with every function wrapped into a `dispatch` call so they
 * may be invoked directly. This is just a convenience method, as you can call
 * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.
 *
 * For convenience, you can also pass an action creator as the first argument,
 * and get a dispatch wrapped function in return.
 *
 * @param {Function|Object} actionCreators An object whose values are action
 * creator functions. One handy way to obtain it is to use ES6 `import * as`
 * syntax. You may also pass a single function.
 *
 * @param {Function} dispatch The `dispatch` function available on your Redux
 * store.
 *
 * @returns {Function|Object} The object mimicking the original object, but with
 * every action creator wrapped into the `dispatch` call. If you passed a
 * function as `actionCreators`, the return value will also be a single
 * function.
 */


function bindActionCreators(actionCreators, dispatch) {
  if (typeof actionCreators === 'function') {
    return bindActionCreator(actionCreators, dispatch);
  }

  if (typeof actionCreators !== 'object' || actionCreators === null) {
    throw new Error( false ? 0 : "bindActionCreators expected an object or a function, but instead received: '" + kindOf(actionCreators) + "'. " + "Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?");
  }

  var boundActionCreators = {};

  for (var key in actionCreators) {
    var actionCreator = actionCreators[key];

    if (typeof actionCreator === 'function') {
      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);
    }
  }

  return boundActionCreators;
}

/**
 * Composes single-argument functions from right to left. The rightmost
 * function can take multiple arguments as it provides the signature for
 * the resulting composite function.
 *
 * @param {...Function} funcs The functions to compose.
 * @returns {Function} A function obtained by composing the argument functions
 * from right to left. For example, compose(f, g, h) is identical to doing
 * (...args) => f(g(h(...args))).
 */
function compose() {
  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {
    funcs[_key] = arguments[_key];
  }

  if (funcs.length === 0) {
    return function (arg) {
      return arg;
    };
  }

  if (funcs.length === 1) {
    return funcs[0];
  }

  return funcs.reduce(function (a, b) {
    return function () {
      return a(b.apply(void 0, arguments));
    };
  });
}

/**
 * Creates a store enhancer that applies middleware to the dispatch method
 * of the Redux store. This is handy for a variety of tasks, such as expressing
 * asynchronous actions in a concise manner, or logging every action payload.
 *
 * See `redux-thunk` package as an example of the Redux middleware.
 *
 * Because middleware is potentially asynchronous, this should be the first
 * store enhancer in the composition chain.
 *
 * Note that each middleware will be given the `dispatch` and `getState` functions
 * as named arguments.
 *
 * @param {...Function} middlewares The middleware chain to be applied.
 * @returns {Function} A store enhancer applying the middleware.
 */

function applyMiddleware() {
  for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {
    middlewares[_key] = arguments[_key];
  }

  return function (createStore) {
    return function () {
      var store = createStore.apply(void 0, arguments);

      var _dispatch = function dispatch() {
        throw new Error( false ? 0 : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');
      };

      var middlewareAPI = {
        getState: store.getState,
        dispatch: function dispatch() {
          return _dispatch.apply(void 0, arguments);
        }
      };
      var chain = middlewares.map(function (middleware) {
        return middleware(middlewareAPI);
      });
      _dispatch = compose.apply(void 0, chain)(store.dispatch);
      return (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__["default"])((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__["default"])({}, store), {}, {
        dispatch: _dispatch
      });
    };
  };
}




/***/ }),

/***/ "./node_modules/safe-buffer/index.js":
/*!*******************************************!*\
  !*** ./node_modules/safe-buffer/index.js ***!
  \*******************************************/
/***/ ((module, exports, __webpack_require__) => {

/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
/* eslint-disable node/no-deprecated-api */
var buffer = __webpack_require__(/*! buffer */ "./node_modules/buffer/index.js")
var Buffer = buffer.Buffer

// alternative to using Object.keys for old browsers
function copyProps (src, dst) {
  for (var key in src) {
    dst[key] = src[key]
  }
}
if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
  module.exports = buffer
} else {
  // Copy properties from require('buffer')
  copyProps(buffer, exports)
  exports.Buffer = SafeBuffer
}

function SafeBuffer (arg, encodingOrOffset, length) {
  return Buffer(arg, encodingOrOffset, length)
}

SafeBuffer.prototype = Object.create(Buffer.prototype)

// Copy static methods from Buffer
copyProps(Buffer, SafeBuffer)

SafeBuffer.from = function (arg, encodingOrOffset, length) {
  if (typeof arg === 'number') {
    throw new TypeError('Argument must not be a number')
  }
  return Buffer(arg, encodingOrOffset, length)
}

SafeBuffer.alloc = function (size, fill, encoding) {
  if (typeof size !== 'number') {
    throw new TypeError('Argument must be a number')
  }
  var buf = Buffer(size)
  if (fill !== undefined) {
    if (typeof encoding === 'string') {
      buf.fill(fill, encoding)
    } else {
      buf.fill(fill)
    }
  } else {
    buf.fill(0)
  }
  return buf
}

SafeBuffer.allocUnsafe = function (size) {
  if (typeof size !== 'number') {
    throw new TypeError('Argument must be a number')
  }
  return Buffer(size)
}

SafeBuffer.allocUnsafeSlow = function (size) {
  if (typeof size !== 'number') {
    throw new TypeError('Argument must be a number')
  }
  return buffer.SlowBuffer(size)
}


/***/ }),

/***/ "./node_modules/string_decoder/lib/string_decoder.js":
/*!***********************************************************!*\
  !*** ./node_modules/string_decoder/lib/string_decoder.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.



/*<replacement>*/

var Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/safe-buffer/index.js").Buffer);
/*</replacement>*/

var isEncoding = Buffer.isEncoding || function (encoding) {
  encoding = '' + encoding;
  switch (encoding && encoding.toLowerCase()) {
    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':
      return true;
    default:
      return false;
  }
};

function _normalizeEncoding(enc) {
  if (!enc) return 'utf8';
  var retried;
  while (true) {
    switch (enc) {
      case 'utf8':
      case 'utf-8':
        return 'utf8';
      case 'ucs2':
      case 'ucs-2':
      case 'utf16le':
      case 'utf-16le':
        return 'utf16le';
      case 'latin1':
      case 'binary':
        return 'latin1';
      case 'base64':
      case 'ascii':
      case 'hex':
        return enc;
      default:
        if (retried) return; // undefined
        enc = ('' + enc).toLowerCase();
        retried = true;
    }
  }
};

// Do not cache `Buffer.isEncoding` when checking encoding names as some
// modules monkey-patch it to support additional encodings
function normalizeEncoding(enc) {
  var nenc = _normalizeEncoding(enc);
  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
  return nenc || enc;
}

// StringDecoder provides an interface for efficiently splitting a series of
// buffers into a series of JS strings without breaking apart multi-byte
// characters.
exports.StringDecoder = StringDecoder;
function StringDecoder(encoding) {
  this.encoding = normalizeEncoding(encoding);
  var nb;
  switch (this.encoding) {
    case 'utf16le':
      this.text = utf16Text;
      this.end = utf16End;
      nb = 4;
      break;
    case 'utf8':
      this.fillLast = utf8FillLast;
      nb = 4;
      break;
    case 'base64':
      this.text = base64Text;
      this.end = base64End;
      nb = 3;
      break;
    default:
      this.write = simpleWrite;
      this.end = simpleEnd;
      return;
  }
  this.lastNeed = 0;
  this.lastTotal = 0;
  this.lastChar = Buffer.allocUnsafe(nb);
}

StringDecoder.prototype.write = function (buf) {
  if (buf.length === 0) return '';
  var r;
  var i;
  if (this.lastNeed) {
    r = this.fillLast(buf);
    if (r === undefined) return '';
    i = this.lastNeed;
    this.lastNeed = 0;
  } else {
    i = 0;
  }
  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
  return r || '';
};

StringDecoder.prototype.end = utf8End;

// Returns only complete characters in a Buffer
StringDecoder.prototype.text = utf8Text;

// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
StringDecoder.prototype.fillLast = function (buf) {
  if (this.lastNeed <= buf.length) {
    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
    return this.lastChar.toString(this.encoding, 0, this.lastTotal);
  }
  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
  this.lastNeed -= buf.length;
};

// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
// continuation byte. If an invalid byte is detected, -2 is returned.
function utf8CheckByte(byte) {
  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
  return byte >> 6 === 0x02 ? -1 : -2;
}

// Checks at most 3 bytes at the end of a Buffer in order to detect an
// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
// needed to complete the UTF-8 character (if applicable) are returned.
function utf8CheckIncomplete(self, buf, i) {
  var j = buf.length - 1;
  if (j < i) return 0;
  var nb = utf8CheckByte(buf[j]);
  if (nb >= 0) {
    if (nb > 0) self.lastNeed = nb - 1;
    return nb;
  }
  if (--j < i || nb === -2) return 0;
  nb = utf8CheckByte(buf[j]);
  if (nb >= 0) {
    if (nb > 0) self.lastNeed = nb - 2;
    return nb;
  }
  if (--j < i || nb === -2) return 0;
  nb = utf8CheckByte(buf[j]);
  if (nb >= 0) {
    if (nb > 0) {
      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
    }
    return nb;
  }
  return 0;
}

// Validates as many continuation bytes for a multi-byte UTF-8 character as
// needed or are available. If we see a non-continuation byte where we expect
// one, we "replace" the validated continuation bytes we've seen so far with
// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding
// behavior. The continuation byte check is included three times in the case
// where all of the continuation bytes for a character exist in the same buffer.
// It is also done this way as a slight performance increase instead of using a
// loop.
function utf8CheckExtraBytes(self, buf, p) {
  if ((buf[0] & 0xC0) !== 0x80) {
    self.lastNeed = 0;
    return '\ufffd';
  }
  if (self.lastNeed > 1 && buf.length > 1) {
    if ((buf[1] & 0xC0) !== 0x80) {
      self.lastNeed = 1;
      return '\ufffd';
    }
    if (self.lastNeed > 2 && buf.length > 2) {
      if ((buf[2] & 0xC0) !== 0x80) {
        self.lastNeed = 2;
        return '\ufffd';
      }
    }
  }
}

// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
function utf8FillLast(buf) {
  var p = this.lastTotal - this.lastNeed;
  var r = utf8CheckExtraBytes(this, buf, p);
  if (r !== undefined) return r;
  if (this.lastNeed <= buf.length) {
    buf.copy(this.lastChar, p, 0, this.lastNeed);
    return this.lastChar.toString(this.encoding, 0, this.lastTotal);
  }
  buf.copy(this.lastChar, p, 0, buf.length);
  this.lastNeed -= buf.length;
}

// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
// partial character, the character's bytes are buffered until the required
// number of bytes are available.
function utf8Text(buf, i) {
  var total = utf8CheckIncomplete(this, buf, i);
  if (!this.lastNeed) return buf.toString('utf8', i);
  this.lastTotal = total;
  var end = buf.length - (total - this.lastNeed);
  buf.copy(this.lastChar, 0, end);
  return buf.toString('utf8', i, end);
}

// For UTF-8, a replacement character is added when ending on a partial
// character.
function utf8End(buf) {
  var r = buf && buf.length ? this.write(buf) : '';
  if (this.lastNeed) return r + '\ufffd';
  return r;
}

// UTF-16LE typically needs two bytes per character, but even if we have an even
// number of bytes available, we need to check if we end on a leading/high
// surrogate. In that case, we need to wait for the next two bytes in order to
// decode the last character properly.
function utf16Text(buf, i) {
  if ((buf.length - i) % 2 === 0) {
    var r = buf.toString('utf16le', i);
    if (r) {
      var c = r.charCodeAt(r.length - 1);
      if (c >= 0xD800 && c <= 0xDBFF) {
        this.lastNeed = 2;
        this.lastTotal = 4;
        this.lastChar[0] = buf[buf.length - 2];
        this.lastChar[1] = buf[buf.length - 1];
        return r.slice(0, -1);
      }
    }
    return r;
  }
  this.lastNeed = 1;
  this.lastTotal = 2;
  this.lastChar[0] = buf[buf.length - 1];
  return buf.toString('utf16le', i, buf.length - 1);
}

// For UTF-16LE we do not explicitly append special replacement characters if we
// end on a partial character, we simply let v8 handle that.
function utf16End(buf) {
  var r = buf && buf.length ? this.write(buf) : '';
  if (this.lastNeed) {
    var end = this.lastTotal - this.lastNeed;
    return r + this.lastChar.toString('utf16le', 0, end);
  }
  return r;
}

function base64Text(buf, i) {
  var n = (buf.length - i) % 3;
  if (n === 0) return buf.toString('base64', i);
  this.lastNeed = 3 - n;
  this.lastTotal = 3;
  if (n === 1) {
    this.lastChar[0] = buf[buf.length - 1];
  } else {
    this.lastChar[0] = buf[buf.length - 2];
    this.lastChar[1] = buf[buf.length - 1];
  }
  return buf.toString('base64', i, buf.length - n);
}

function base64End(buf) {
  var r = buf && buf.length ? this.write(buf) : '';
  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
  return r;
}

// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
function simpleWrite(buf) {
  return buf.toString(this.encoding);
}

function simpleEnd(buf) {
  return buf && buf.length ? this.write(buf) : '';
}

/***/ }),

/***/ "react":
/*!************************!*\
  !*** external "React" ***!
  \************************/
/***/ ((module) => {

"use strict";
module.exports = window["React"];

/***/ }),

/***/ "react-dom":
/*!***************************!*\
  !*** external "ReactDOM" ***!
  \***************************/
/***/ ((module) => {

"use strict";
module.exports = window["ReactDOM"];

/***/ }),

/***/ "@wordpress/api-fetch":
/*!**********************************!*\
  !*** external ["wp","apiFetch"] ***!
  \**********************************/
/***/ ((module) => {

"use strict";
module.exports = window["wp"]["apiFetch"];

/***/ }),

/***/ "@wordpress/components":
/*!************************************!*\
  !*** external ["wp","components"] ***!
  \************************************/
/***/ ((module) => {

"use strict";
module.exports = window["wp"]["components"];

/***/ }),

/***/ "@wordpress/element":
/*!*********************************!*\
  !*** external ["wp","element"] ***!
  \*********************************/
/***/ ((module) => {

"use strict";
module.exports = window["wp"]["element"];

/***/ }),

/***/ "@wordpress/i18n":
/*!******************************!*\
  !*** external ["wp","i18n"] ***!
  \******************************/
/***/ ((module) => {

"use strict";
module.exports = window["wp"]["i18n"];

/***/ }),

/***/ "?13bc":
/*!*********************************!*\
  !*** readable-stream (ignored) ***!
  \*********************************/
/***/ (() => {

/* (ignored) */

/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/defineProperty.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/defineProperty.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ _defineProperty)
/* harmony export */ });
/* harmony import */ var _toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toPropertyKey.js */ "./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js");

function _defineProperty(e, r, t) {
  return (r = (0,_toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__["default"])(r)) in e ? Object.defineProperty(e, r, {
    value: t,
    enumerable: !0,
    configurable: !0,
    writable: !0
  }) : e[r] = t, e;
}


/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/extends.js":
/*!************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/extends.js ***!
  \************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ _extends)
/* harmony export */ });
function _extends() {
  return _extends = Object.assign ? Object.assign.bind() : function (n) {
    for (var e = 1; e < arguments.length; e++) {
      var t = arguments[e];
      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
    }
    return n;
  }, _extends.apply(null, arguments);
}


/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/objectSpread2.js":
/*!******************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js ***!
  \******************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ _objectSpread2)
/* harmony export */ });
/* harmony import */ var _defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defineProperty.js */ "./node_modules/@babel/runtime/helpers/esm/defineProperty.js");

function ownKeys(e, r) {
  var t = Object.keys(e);
  if (Object.getOwnPropertySymbols) {
    var o = Object.getOwnPropertySymbols(e);
    r && (o = o.filter(function (r) {
      return Object.getOwnPropertyDescriptor(e, r).enumerable;
    })), t.push.apply(t, o);
  }
  return t;
}
function _objectSpread2(e) {
  for (var r = 1; r < arguments.length; r++) {
    var t = null != arguments[r] ? arguments[r] : {};
    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
      (0,_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__["default"])(e, r, t[r]);
    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
    });
  }
  return e;
}


/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js ***!
  \*********************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ _objectWithoutPropertiesLoose)
/* harmony export */ });
function _objectWithoutPropertiesLoose(r, e) {
  if (null == r) return {};
  var t = {};
  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
    if (e.includes(n)) continue;
    t[n] = r[n];
  }
  return t;
}


/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/toPrimitive.js":
/*!****************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/toPrimitive.js ***!
  \****************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ toPrimitive)
/* harmony export */ });
/* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeof.js */ "./node_modules/@babel/runtime/helpers/esm/typeof.js");

function toPrimitive(t, r) {
  if ("object" != (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__["default"])(t) || !t) return t;
  var e = t[Symbol.toPrimitive];
  if (void 0 !== e) {
    var i = e.call(t, r || "default");
    if ("object" != (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__["default"])(i)) return i;
    throw new TypeError("@@toPrimitive must return a primitive value.");
  }
  return ("string" === r ? String : Number)(t);
}


/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js":
/*!******************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js ***!
  \******************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ toPropertyKey)
/* harmony export */ });
/* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeof.js */ "./node_modules/@babel/runtime/helpers/esm/typeof.js");
/* harmony import */ var _toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./toPrimitive.js */ "./node_modules/@babel/runtime/helpers/esm/toPrimitive.js");


function toPropertyKey(t) {
  var i = (0,_toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__["default"])(t, "string");
  return "symbol" == (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__["default"])(i) ? i : i + "";
}


/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/esm/typeof.js":
/*!***********************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/esm/typeof.js ***!
  \***********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ _typeof)
/* harmony export */ });
function _typeof(o) {
  "@babel/helpers - typeof";

  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
    return typeof o;
  } : function (o) {
    return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
  }, _typeof(o);
}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/components/description/description.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/components/description/description.js ***!
  \***********************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Description: () => (/* binding */ G),
/* harmony export */   useDescriptions: () => (/* binding */ w)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _hooks_use_event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../hooks/use-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-event.js");
/* harmony import */ var _hooks_use_id_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../hooks/use-id.js */ "./node_modules/@headlessui/react/dist/hooks/use-id.js");
/* harmony import */ var _hooks_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../hooks/use-iso-morphic-effect.js */ "./node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js");
/* harmony import */ var _hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/use-sync-refs.js */ "./node_modules/@headlessui/react/dist/hooks/use-sync-refs.js");
/* harmony import */ var _utils_render_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/render.js */ "./node_modules/@headlessui/react/dist/utils/render.js");
let d=(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);function f(){let r=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(d);if(r===null){let t=new Error("You used a <Description /> component, but it is not inside a relevant parent.");throw Error.captureStackTrace&&Error.captureStackTrace(t,f),t}return r}function w(){let[r,t]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);return[r.length>0?r.join(" "):void 0,(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>function(e){let i=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_1__.useEvent)(s=>(t(o=>[...o,s]),()=>t(o=>{let p=o.slice(),c=p.indexOf(s);return c!==-1&&p.splice(c,1),p}))),n=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({register:i,slot:e.slot,name:e.name,props:e.props}),[i,e.slot,e.name,e.props]);return react__WEBPACK_IMPORTED_MODULE_0__.createElement(d.Provider,{value:n},e.children)},[t])]}let I="p";function S(r,t){let a=(0,_hooks_use_id_js__WEBPACK_IMPORTED_MODULE_2__.useId)(),{id:e=`headlessui-description-${a}`,...i}=r,n=f(),s=(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_3__.useSyncRefs)(t);(0,_hooks_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_4__.useIsoMorphicEffect)(()=>n.register(e),[e,n.register]);let o={ref:s,...n.props,id:e};return (0,_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.render)({ourProps:o,theirProps:i,slot:n.slot||{},defaultTag:I,name:n.name||"Description"})}let h=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.forwardRefWithAs)(S),G=Object.assign(h,{});


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/components/dialog/dialog.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/components/dialog/dialog.js ***!
  \*************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Dialog: () => (/* binding */ _t)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _components_focus_trap_focus_trap_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../components/focus-trap/focus-trap.js */ "./node_modules/@headlessui/react/dist/components/focus-trap/focus-trap.js");
/* harmony import */ var _components_portal_portal_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../components/portal/portal.js */ "./node_modules/@headlessui/react/dist/components/portal/portal.js");
/* harmony import */ var _hooks_document_overflow_use_document_overflow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../hooks/document-overflow/use-document-overflow.js */ "./node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js");
/* harmony import */ var _hooks_use_event_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../hooks/use-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-event.js");
/* harmony import */ var _hooks_use_event_listener_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../hooks/use-event-listener.js */ "./node_modules/@headlessui/react/dist/hooks/use-event-listener.js");
/* harmony import */ var _hooks_use_id_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../hooks/use-id.js */ "./node_modules/@headlessui/react/dist/hooks/use-id.js");
/* harmony import */ var _hooks_use_inert_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../hooks/use-inert.js */ "./node_modules/@headlessui/react/dist/hooks/use-inert.js");
/* harmony import */ var _hooks_use_outside_click_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../hooks/use-outside-click.js */ "./node_modules/@headlessui/react/dist/hooks/use-outside-click.js");
/* harmony import */ var _hooks_use_owner_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../hooks/use-owner.js */ "./node_modules/@headlessui/react/dist/hooks/use-owner.js");
/* harmony import */ var _hooks_use_root_containers_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../hooks/use-root-containers.js */ "./node_modules/@headlessui/react/dist/hooks/use-root-containers.js");
/* harmony import */ var _hooks_use_server_handoff_complete_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../hooks/use-server-handoff-complete.js */ "./node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js");
/* harmony import */ var _hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../hooks/use-sync-refs.js */ "./node_modules/@headlessui/react/dist/hooks/use-sync-refs.js");
/* harmony import */ var _internal_open_closed_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../internal/open-closed.js */ "./node_modules/@headlessui/react/dist/internal/open-closed.js");
/* harmony import */ var _internal_portal_force_root_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../internal/portal-force-root.js */ "./node_modules/@headlessui/react/dist/internal/portal-force-root.js");
/* harmony import */ var _internal_stack_context_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../internal/stack-context.js */ "./node_modules/@headlessui/react/dist/internal/stack-context.js");
/* harmony import */ var _utils_bugs_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../utils/bugs.js */ "./node_modules/@headlessui/react/dist/utils/bugs.js");
/* harmony import */ var _utils_match_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/match.js */ "./node_modules/@headlessui/react/dist/utils/match.js");
/* harmony import */ var _utils_render_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/render.js */ "./node_modules/@headlessui/react/dist/utils/render.js");
/* harmony import */ var _description_description_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../description/description.js */ "./node_modules/@headlessui/react/dist/components/description/description.js");
/* harmony import */ var _keyboard_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../keyboard.js */ "./node_modules/@headlessui/react/dist/components/keyboard.js");
var Me=(r=>(r[r.Open=0]="Open",r[r.Closed=1]="Closed",r))(Me||{}),we=(e=>(e[e.SetTitleId=0]="SetTitleId",e))(we||{});let He={[0](o,e){return o.titleId===e.id?o:{...o,titleId:e.id}}},I=(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);I.displayName="DialogContext";function b(o){let e=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(I);if(e===null){let r=new Error(`<${o} /> is missing a parent <Dialog /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,b),r}return e}function Be(o,e,r=()=>[document.body]){(0,_hooks_document_overflow_use_document_overflow_js__WEBPACK_IMPORTED_MODULE_1__.useDocumentOverflowLockedEffect)(o,e,i=>{var n;return{containers:[...(n=i.containers)!=null?n:[],r]}})}function Ge(o,e){return (0,_utils_match_js__WEBPACK_IMPORTED_MODULE_2__.match)(e.type,He,o,e)}let Ne="div",Ue=_utils_render_js__WEBPACK_IMPORTED_MODULE_3__.Features.RenderStrategy|_utils_render_js__WEBPACK_IMPORTED_MODULE_3__.Features.Static;function We(o,e){let r=(0,_hooks_use_id_js__WEBPACK_IMPORTED_MODULE_4__.useId)(),{id:i=`headlessui-dialog-${r}`,open:n,onClose:l,initialFocus:s,role:a="dialog",__demoMode:T=!1,...m}=o,[M,f]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0),U=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(!1);a=function(){return a==="dialog"||a==="alertdialog"?a:(U.current||(U.current=!0,console.warn(`Invalid role [${a}] passed to <Dialog />. Only \`dialog\` and and \`alertdialog\` are supported. Using \`dialog\` instead.`)),"dialog")}();let E=(0,_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_5__.useOpenClosed)();n===void 0&&E!==null&&(n=(E&_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_5__.State.Open)===_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_5__.State.Open);let D=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null),ee=(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_6__.useSyncRefs)(D,e),g=(0,_hooks_use_owner_js__WEBPACK_IMPORTED_MODULE_7__.useOwnerDocument)(D),W=o.hasOwnProperty("open")||E!==null,$=o.hasOwnProperty("onClose");if(!W&&!$)throw new Error("You have to provide an `open` and an `onClose` prop to the `Dialog` component.");if(!W)throw new Error("You provided an `onClose` prop to the `Dialog`, but forgot an `open` prop.");if(!$)throw new Error("You provided an `open` prop to the `Dialog`, but forgot an `onClose` prop.");if(typeof n!="boolean")throw new Error(`You provided an \`open\` prop to the \`Dialog\`, but the value is not a boolean. Received: ${n}`);if(typeof l!="function")throw new Error(`You provided an \`onClose\` prop to the \`Dialog\`, but the value is not a function. Received: ${l}`);let p=n?0:1,[h,te]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)(Ge,{titleId:null,descriptionId:null,panelRef:(0,react__WEBPACK_IMPORTED_MODULE_0__.createRef)()}),P=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_8__.useEvent)(()=>l(!1)),Y=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_8__.useEvent)(t=>te({type:0,id:t})),S=(0,_hooks_use_server_handoff_complete_js__WEBPACK_IMPORTED_MODULE_9__.useServerHandoffComplete)()?T?!1:p===0:!1,x=M>1,j=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(I)!==null,[oe,re]=(0,_components_portal_portal_js__WEBPACK_IMPORTED_MODULE_10__.useNestedPortals)(),ne={get current(){var t;return(t=h.panelRef.current)!=null?t:D.current}},{resolveContainers:w,mainTreeNodeRef:L,MainTreeNode:le}=(0,_hooks_use_root_containers_js__WEBPACK_IMPORTED_MODULE_11__.useRootContainers)({portals:oe,defaultContainers:[ne]}),ae=x?"parent":"leaf",J=E!==null?(E&_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_5__.State.Closing)===_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_5__.State.Closing:!1,ie=(()=>j||J?!1:S)(),se=(0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(()=>{var t,c;return(c=Array.from((t=g==null?void 0:g.querySelectorAll("body > *"))!=null?t:[]).find(d=>d.id==="headlessui-portal-root"?!1:d.contains(L.current)&&d instanceof HTMLElement))!=null?c:null},[L]);(0,_hooks_use_inert_js__WEBPACK_IMPORTED_MODULE_12__.useInert)(se,ie);let pe=(()=>x?!0:S)(),de=(0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(()=>{var t,c;return(c=Array.from((t=g==null?void 0:g.querySelectorAll("[data-headlessui-portal]"))!=null?t:[]).find(d=>d.contains(L.current)&&d instanceof HTMLElement))!=null?c:null},[L]);(0,_hooks_use_inert_js__WEBPACK_IMPORTED_MODULE_12__.useInert)(de,pe);let ue=(()=>!(!S||x))();(0,_hooks_use_outside_click_js__WEBPACK_IMPORTED_MODULE_13__.useOutsideClick)(w,t=>{t.preventDefault(),P()},ue);let fe=(()=>!(x||p!==0))();(0,_hooks_use_event_listener_js__WEBPACK_IMPORTED_MODULE_14__.useEventListener)(g==null?void 0:g.defaultView,"keydown",t=>{fe&&(t.defaultPrevented||t.key===_keyboard_js__WEBPACK_IMPORTED_MODULE_15__.Keys.Escape&&(t.preventDefault(),t.stopPropagation(),P()))});let ge=(()=>!(J||p!==0||j))();Be(g,ge,w),(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{if(p!==0||!D.current)return;let t=new ResizeObserver(c=>{for(let d of c){let F=d.target.getBoundingClientRect();F.x===0&&F.y===0&&F.width===0&&F.height===0&&P()}});return t.observe(D.current),()=>t.disconnect()},[p,D,P]);let[Te,ce]=(0,_description_description_js__WEBPACK_IMPORTED_MODULE_16__.useDescriptions)(),De=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>[{dialogState:p,close:P,setTitleId:Y},h],[p,h,P,Y]),X=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({open:p===0}),[p]),me={ref:ee,id:i,role:a,"aria-modal":p===0?!0:void 0,"aria-labelledby":h.titleId,"aria-describedby":Te};return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_internal_stack_context_js__WEBPACK_IMPORTED_MODULE_17__.StackProvider,{type:"Dialog",enabled:p===0,element:D,onUpdate:(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_8__.useEvent)((t,c)=>{c==="Dialog"&&(0,_utils_match_js__WEBPACK_IMPORTED_MODULE_2__.match)(t,{[_internal_stack_context_js__WEBPACK_IMPORTED_MODULE_17__.StackMessage.Add]:()=>f(d=>d+1),[_internal_stack_context_js__WEBPACK_IMPORTED_MODULE_17__.StackMessage.Remove]:()=>f(d=>d-1)})})},react__WEBPACK_IMPORTED_MODULE_0__.createElement(_internal_portal_force_root_js__WEBPACK_IMPORTED_MODULE_18__.ForcePortalRoot,{force:!0},react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_portal_portal_js__WEBPACK_IMPORTED_MODULE_10__.Portal,null,react__WEBPACK_IMPORTED_MODULE_0__.createElement(I.Provider,{value:De},react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_portal_portal_js__WEBPACK_IMPORTED_MODULE_10__.Portal.Group,{target:D},react__WEBPACK_IMPORTED_MODULE_0__.createElement(_internal_portal_force_root_js__WEBPACK_IMPORTED_MODULE_18__.ForcePortalRoot,{force:!1},react__WEBPACK_IMPORTED_MODULE_0__.createElement(ce,{slot:X,name:"Dialog.Description"},react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_focus_trap_focus_trap_js__WEBPACK_IMPORTED_MODULE_19__.FocusTrap,{initialFocus:s,containers:w,features:S?(0,_utils_match_js__WEBPACK_IMPORTED_MODULE_2__.match)(ae,{parent:_components_focus_trap_focus_trap_js__WEBPACK_IMPORTED_MODULE_19__.FocusTrap.features.RestoreFocus,leaf:_components_focus_trap_focus_trap_js__WEBPACK_IMPORTED_MODULE_19__.FocusTrap.features.All&~_components_focus_trap_focus_trap_js__WEBPACK_IMPORTED_MODULE_19__.FocusTrap.features.FocusLock}):_components_focus_trap_focus_trap_js__WEBPACK_IMPORTED_MODULE_19__.FocusTrap.features.None},react__WEBPACK_IMPORTED_MODULE_0__.createElement(re,null,(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_3__.render)({ourProps:me,theirProps:m,slot:X,defaultTag:Ne,features:Ue,visible:p===0,name:"Dialog"}))))))))),react__WEBPACK_IMPORTED_MODULE_0__.createElement(le,null))}let $e="div";function Ye(o,e){let r=(0,_hooks_use_id_js__WEBPACK_IMPORTED_MODULE_4__.useId)(),{id:i=`headlessui-dialog-overlay-${r}`,...n}=o,[{dialogState:l,close:s}]=b("Dialog.Overlay"),a=(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_6__.useSyncRefs)(e),T=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_8__.useEvent)(f=>{if(f.target===f.currentTarget){if((0,_utils_bugs_js__WEBPACK_IMPORTED_MODULE_20__.isDisabledReactIssue7711)(f.currentTarget))return f.preventDefault();f.preventDefault(),f.stopPropagation(),s()}}),m=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({open:l===0}),[l]);return (0,_utils_render_js__WEBPACK_IMPORTED_MODULE_3__.render)({ourProps:{ref:a,id:i,"aria-hidden":!0,onClick:T},theirProps:n,slot:m,defaultTag:$e,name:"Dialog.Overlay"})}let je="div";function Je(o,e){let r=(0,_hooks_use_id_js__WEBPACK_IMPORTED_MODULE_4__.useId)(),{id:i=`headlessui-dialog-backdrop-${r}`,...n}=o,[{dialogState:l},s]=b("Dialog.Backdrop"),a=(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_6__.useSyncRefs)(e);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{if(s.panelRef.current===null)throw new Error("A <Dialog.Backdrop /> component is being used, but a <Dialog.Panel /> component is missing.")},[s.panelRef]);let T=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({open:l===0}),[l]);return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_internal_portal_force_root_js__WEBPACK_IMPORTED_MODULE_18__.ForcePortalRoot,{force:!0},react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_portal_portal_js__WEBPACK_IMPORTED_MODULE_10__.Portal,null,(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_3__.render)({ourProps:{ref:a,id:i,"aria-hidden":!0},theirProps:n,slot:T,defaultTag:je,name:"Dialog.Backdrop"})))}let Xe="div";function Ke(o,e){let r=(0,_hooks_use_id_js__WEBPACK_IMPORTED_MODULE_4__.useId)(),{id:i=`headlessui-dialog-panel-${r}`,...n}=o,[{dialogState:l},s]=b("Dialog.Panel"),a=(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_6__.useSyncRefs)(e,s.panelRef),T=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({open:l===0}),[l]),m=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_8__.useEvent)(f=>{f.stopPropagation()});return (0,_utils_render_js__WEBPACK_IMPORTED_MODULE_3__.render)({ourProps:{ref:a,id:i,onClick:m},theirProps:n,slot:T,defaultTag:Xe,name:"Dialog.Panel"})}let Ve="h2";function qe(o,e){let r=(0,_hooks_use_id_js__WEBPACK_IMPORTED_MODULE_4__.useId)(),{id:i=`headlessui-dialog-title-${r}`,...n}=o,[{dialogState:l,setTitleId:s}]=b("Dialog.Title"),a=(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_6__.useSyncRefs)(e);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>(s(i),()=>s(null)),[i,s]);let T=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({open:l===0}),[l]);return (0,_utils_render_js__WEBPACK_IMPORTED_MODULE_3__.render)({ourProps:{ref:a,id:i},theirProps:n,slot:T,defaultTag:Ve,name:"Dialog.Title"})}let ze=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_3__.forwardRefWithAs)(We),Qe=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_3__.forwardRefWithAs)(Je),Ze=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_3__.forwardRefWithAs)(Ke),et=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_3__.forwardRefWithAs)(Ye),tt=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_3__.forwardRefWithAs)(qe),_t=Object.assign(ze,{Backdrop:Qe,Panel:Ze,Overlay:et,Title:tt,Description:_description_description_js__WEBPACK_IMPORTED_MODULE_16__.Description});


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/components/disclosure/disclosure.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/components/disclosure/disclosure.js ***!
  \*********************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Disclosure: () => (/* binding */ Ae)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _hooks_use_event_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/use-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-event.js");
/* harmony import */ var _hooks_use_id_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../hooks/use-id.js */ "./node_modules/@headlessui/react/dist/hooks/use-id.js");
/* harmony import */ var _hooks_use_resolve_button_type_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../hooks/use-resolve-button-type.js */ "./node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js");
/* harmony import */ var _hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../hooks/use-sync-refs.js */ "./node_modules/@headlessui/react/dist/hooks/use-sync-refs.js");
/* harmony import */ var _internal_open_closed_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../internal/open-closed.js */ "./node_modules/@headlessui/react/dist/internal/open-closed.js");
/* harmony import */ var _utils_bugs_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/bugs.js */ "./node_modules/@headlessui/react/dist/utils/bugs.js");
/* harmony import */ var _utils_match_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/match.js */ "./node_modules/@headlessui/react/dist/utils/match.js");
/* harmony import */ var _utils_owner_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/owner.js */ "./node_modules/@headlessui/react/dist/utils/owner.js");
/* harmony import */ var _utils_render_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/render.js */ "./node_modules/@headlessui/react/dist/utils/render.js");
/* harmony import */ var _utils_start_transition_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils/start-transition.js */ "./node_modules/@headlessui/react/dist/utils/start-transition.js");
/* harmony import */ var _keyboard_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../keyboard.js */ "./node_modules/@headlessui/react/dist/components/keyboard.js");
var Q=(o=>(o[o.Open=0]="Open",o[o.Closed=1]="Closed",o))(Q||{}),V=(t=>(t[t.ToggleDisclosure=0]="ToggleDisclosure",t[t.CloseDisclosure=1]="CloseDisclosure",t[t.SetButtonId=2]="SetButtonId",t[t.SetPanelId=3]="SetPanelId",t[t.LinkPanel=4]="LinkPanel",t[t.UnlinkPanel=5]="UnlinkPanel",t))(V||{});let Y={[0]:e=>({...e,disclosureState:(0,_utils_match_js__WEBPACK_IMPORTED_MODULE_1__.match)(e.disclosureState,{[0]:1,[1]:0})}),[1]:e=>e.disclosureState===1?e:{...e,disclosureState:1},[4](e){return e.linkedPanel===!0?e:{...e,linkedPanel:!0}},[5](e){return e.linkedPanel===!1?e:{...e,linkedPanel:!1}},[2](e,n){return e.buttonId===n.buttonId?e:{...e,buttonId:n.buttonId}},[3](e,n){return e.panelId===n.panelId?e:{...e,panelId:n.panelId}}},M=(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);M.displayName="DisclosureContext";function _(e){let n=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(M);if(n===null){let o=new Error(`<${e} /> is missing a parent <Disclosure /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,_),o}return n}let v=(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);v.displayName="DisclosureAPIContext";function K(e){let n=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(v);if(n===null){let o=new Error(`<${e} /> is missing a parent <Disclosure /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,K),o}return n}let F=(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);F.displayName="DisclosurePanelContext";function Z(){return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(F)}function ee(e,n){return (0,_utils_match_js__WEBPACK_IMPORTED_MODULE_1__.match)(n.type,Y,e,n)}let te=react__WEBPACK_IMPORTED_MODULE_0__.Fragment;function ne(e,n){let{defaultOpen:o=!1,...i}=e,f=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null),l=(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_2__.useSyncRefs)(n,(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_2__.optionalRef)(u=>{f.current=u},e.as===void 0||e.as===react__WEBPACK_IMPORTED_MODULE_0__.Fragment)),t=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null),d=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null),s=(0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)(ee,{disclosureState:o?0:1,linkedPanel:!1,buttonRef:d,panelRef:t,buttonId:null,panelId:null}),[{disclosureState:c,buttonId:a},D]=s,p=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_3__.useEvent)(u=>{D({type:1});let y=(0,_utils_owner_js__WEBPACK_IMPORTED_MODULE_4__.getOwnerDocument)(f);if(!y||!a)return;let r=(()=>u?u instanceof HTMLElement?u:u.current instanceof HTMLElement?u.current:y.getElementById(a):y.getElementById(a))();r==null||r.focus()}),P=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({close:p}),[p]),T=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({open:c===0,close:p}),[c,p]),C={ref:l};return react__WEBPACK_IMPORTED_MODULE_0__.createElement(M.Provider,{value:s},react__WEBPACK_IMPORTED_MODULE_0__.createElement(v.Provider,{value:P},react__WEBPACK_IMPORTED_MODULE_0__.createElement(_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_5__.OpenClosedProvider,{value:(0,_utils_match_js__WEBPACK_IMPORTED_MODULE_1__.match)(c,{[0]:_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_5__.State.Open,[1]:_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_5__.State.Closed})},(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_6__.render)({ourProps:C,theirProps:i,slot:T,defaultTag:te,name:"Disclosure"}))))}let le="button";function oe(e,n){let o=(0,_hooks_use_id_js__WEBPACK_IMPORTED_MODULE_7__.useId)(),{id:i=`headlessui-disclosure-button-${o}`,...f}=e,[l,t]=_("Disclosure.Button"),d=Z(),s=d===null?!1:d===l.panelId,c=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null),a=(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_2__.useSyncRefs)(c,n,s?null:l.buttonRef),D=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_6__.useMergeRefsFn)();(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{if(!s)return t({type:2,buttonId:i}),()=>{t({type:2,buttonId:null})}},[i,t,s]);let p=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_3__.useEvent)(r=>{var m;if(s){if(l.disclosureState===1)return;switch(r.key){case _keyboard_js__WEBPACK_IMPORTED_MODULE_8__.Keys.Space:case _keyboard_js__WEBPACK_IMPORTED_MODULE_8__.Keys.Enter:r.preventDefault(),r.stopPropagation(),t({type:0}),(m=l.buttonRef.current)==null||m.focus();break}}else switch(r.key){case _keyboard_js__WEBPACK_IMPORTED_MODULE_8__.Keys.Space:case _keyboard_js__WEBPACK_IMPORTED_MODULE_8__.Keys.Enter:r.preventDefault(),r.stopPropagation(),t({type:0});break}}),P=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_3__.useEvent)(r=>{switch(r.key){case _keyboard_js__WEBPACK_IMPORTED_MODULE_8__.Keys.Space:r.preventDefault();break}}),T=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_3__.useEvent)(r=>{var m;(0,_utils_bugs_js__WEBPACK_IMPORTED_MODULE_9__.isDisabledReactIssue7711)(r.currentTarget)||e.disabled||(s?(t({type:0}),(m=l.buttonRef.current)==null||m.focus()):t({type:0}))}),C=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({open:l.disclosureState===0}),[l]),u=(0,_hooks_use_resolve_button_type_js__WEBPACK_IMPORTED_MODULE_10__.useResolveButtonType)(e,c),y=s?{ref:a,type:u,onKeyDown:p,onClick:T}:{ref:a,id:i,type:u,"aria-expanded":l.disclosureState===0,"aria-controls":l.linkedPanel?l.panelId:void 0,onKeyDown:p,onKeyUp:P,onClick:T};return (0,_utils_render_js__WEBPACK_IMPORTED_MODULE_6__.render)({mergeRefs:D,ourProps:y,theirProps:f,slot:C,defaultTag:le,name:"Disclosure.Button"})}let re="div",se=_utils_render_js__WEBPACK_IMPORTED_MODULE_6__.Features.RenderStrategy|_utils_render_js__WEBPACK_IMPORTED_MODULE_6__.Features.Static;function ue(e,n){let o=(0,_hooks_use_id_js__WEBPACK_IMPORTED_MODULE_7__.useId)(),{id:i=`headlessui-disclosure-panel-${o}`,...f}=e,[l,t]=_("Disclosure.Panel"),{close:d}=K("Disclosure.Panel"),s=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_6__.useMergeRefsFn)(),c=(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_2__.useSyncRefs)(n,l.panelRef,T=>{(0,_utils_start_transition_js__WEBPACK_IMPORTED_MODULE_11__.startTransition)(()=>t({type:T?4:5}))});(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>(t({type:3,panelId:i}),()=>{t({type:3,panelId:null})}),[i,t]);let a=(0,_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_5__.useOpenClosed)(),D=(()=>a!==null?(a&_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_5__.State.Open)===_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_5__.State.Open:l.disclosureState===0)(),p=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({open:l.disclosureState===0,close:d}),[l,d]),P={ref:c,id:i};return react__WEBPACK_IMPORTED_MODULE_0__.createElement(F.Provider,{value:l.panelId},(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_6__.render)({mergeRefs:s,ourProps:P,theirProps:f,slot:p,defaultTag:re,features:se,visible:D,name:"Disclosure.Panel"}))}let ie=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_6__.forwardRefWithAs)(ne),ae=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_6__.forwardRefWithAs)(oe),pe=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_6__.forwardRefWithAs)(ue),Ae=Object.assign(ie,{Button:ae,Panel:pe});


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/components/focus-trap/focus-trap.js":
/*!*********************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/components/focus-trap/focus-trap.js ***!
  \*********************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   FocusTrap: () => (/* binding */ de)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _hooks_use_disposables_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../hooks/use-disposables.js */ "./node_modules/@headlessui/react/dist/hooks/use-disposables.js");
/* harmony import */ var _hooks_use_event_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../hooks/use-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-event.js");
/* harmony import */ var _hooks_use_event_listener_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../hooks/use-event-listener.js */ "./node_modules/@headlessui/react/dist/hooks/use-event-listener.js");
/* harmony import */ var _hooks_use_is_mounted_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../hooks/use-is-mounted.js */ "./node_modules/@headlessui/react/dist/hooks/use-is-mounted.js");
/* harmony import */ var _hooks_use_on_unmount_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../hooks/use-on-unmount.js */ "./node_modules/@headlessui/react/dist/hooks/use-on-unmount.js");
/* harmony import */ var _hooks_use_owner_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/use-owner.js */ "./node_modules/@headlessui/react/dist/hooks/use-owner.js");
/* harmony import */ var _hooks_use_server_handoff_complete_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../hooks/use-server-handoff-complete.js */ "./node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js");
/* harmony import */ var _hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../hooks/use-sync-refs.js */ "./node_modules/@headlessui/react/dist/hooks/use-sync-refs.js");
/* harmony import */ var _hooks_use_tab_direction_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../hooks/use-tab-direction.js */ "./node_modules/@headlessui/react/dist/hooks/use-tab-direction.js");
/* harmony import */ var _hooks_use_watch_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../hooks/use-watch.js */ "./node_modules/@headlessui/react/dist/hooks/use-watch.js");
/* harmony import */ var _internal_hidden_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../internal/hidden.js */ "./node_modules/@headlessui/react/dist/internal/hidden.js");
/* harmony import */ var _utils_active_element_history_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils/active-element-history.js */ "./node_modules/@headlessui/react/dist/utils/active-element-history.js");
/* harmony import */ var _utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils/focus-management.js */ "./node_modules/@headlessui/react/dist/utils/focus-management.js");
/* harmony import */ var _utils_match_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/match.js */ "./node_modules/@headlessui/react/dist/utils/match.js");
/* harmony import */ var _utils_micro_task_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../utils/micro-task.js */ "./node_modules/@headlessui/react/dist/utils/micro-task.js");
/* harmony import */ var _utils_render_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils/render.js */ "./node_modules/@headlessui/react/dist/utils/render.js");
function P(t){if(!t)return new Set;if(typeof t=="function")return new Set(t());let n=new Set;for(let e of t.current)e.current instanceof HTMLElement&&n.add(e.current);return n}let X="div";var _=(r=>(r[r.None=1]="None",r[r.InitialFocus=2]="InitialFocus",r[r.TabLock=4]="TabLock",r[r.FocusLock=8]="FocusLock",r[r.RestoreFocus=16]="RestoreFocus",r[r.All=30]="All",r))(_||{});function z(t,n){let e=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null),o=(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_1__.useSyncRefs)(e,n),{initialFocus:l,containers:c,features:r=30,...s}=t;(0,_hooks_use_server_handoff_complete_js__WEBPACK_IMPORTED_MODULE_2__.useServerHandoffComplete)()||(r=1);let i=(0,_hooks_use_owner_js__WEBPACK_IMPORTED_MODULE_3__.useOwnerDocument)(e);Y({ownerDocument:i},Boolean(r&16));let u=Z({ownerDocument:i,container:e,initialFocus:l},Boolean(r&2));$({ownerDocument:i,container:e,containers:c,previousActiveElement:u},Boolean(r&8));let y=(0,_hooks_use_tab_direction_js__WEBPACK_IMPORTED_MODULE_4__.useTabDirection)(),R=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_5__.useEvent)(a=>{let m=e.current;if(!m)return;(B=>B())(()=>{(0,_utils_match_js__WEBPACK_IMPORTED_MODULE_6__.match)(y.current,{[_hooks_use_tab_direction_js__WEBPACK_IMPORTED_MODULE_4__.Direction.Forwards]:()=>{(0,_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.focusIn)(m,_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.Focus.First,{skipElements:[a.relatedTarget]})},[_hooks_use_tab_direction_js__WEBPACK_IMPORTED_MODULE_4__.Direction.Backwards]:()=>{(0,_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.focusIn)(m,_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.Focus.Last,{skipElements:[a.relatedTarget]})}})})}),h=(0,_hooks_use_disposables_js__WEBPACK_IMPORTED_MODULE_8__.useDisposables)(),H=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(!1),j={ref:o,onKeyDown(a){a.key=="Tab"&&(H.current=!0,h.requestAnimationFrame(()=>{H.current=!1}))},onBlur(a){let m=P(c);e.current instanceof HTMLElement&&m.add(e.current);let T=a.relatedTarget;T instanceof HTMLElement&&T.dataset.headlessuiFocusGuard!=="true"&&(S(m,T)||(H.current?(0,_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.focusIn)(e.current,(0,_utils_match_js__WEBPACK_IMPORTED_MODULE_6__.match)(y.current,{[_hooks_use_tab_direction_js__WEBPACK_IMPORTED_MODULE_4__.Direction.Forwards]:()=>_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.Focus.Next,[_hooks_use_tab_direction_js__WEBPACK_IMPORTED_MODULE_4__.Direction.Backwards]:()=>_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.Focus.Previous})|_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.Focus.WrapAround,{relativeTo:a.target}):a.target instanceof HTMLElement&&(0,_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.focusElement)(a.target)))}};return react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment,null,Boolean(r&4)&&react__WEBPACK_IMPORTED_MODULE_0__.createElement(_internal_hidden_js__WEBPACK_IMPORTED_MODULE_9__.Hidden,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:R,features:_internal_hidden_js__WEBPACK_IMPORTED_MODULE_9__.Features.Focusable}),(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_10__.render)({ourProps:j,theirProps:s,defaultTag:X,name:"FocusTrap"}),Boolean(r&4)&&react__WEBPACK_IMPORTED_MODULE_0__.createElement(_internal_hidden_js__WEBPACK_IMPORTED_MODULE_9__.Hidden,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:R,features:_internal_hidden_js__WEBPACK_IMPORTED_MODULE_9__.Features.Focusable}))}let D=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_10__.forwardRefWithAs)(z),de=Object.assign(D,{features:_});function Q(t=!0){let n=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(_utils_active_element_history_js__WEBPACK_IMPORTED_MODULE_11__.history.slice());return (0,_hooks_use_watch_js__WEBPACK_IMPORTED_MODULE_12__.useWatch)(([e],[o])=>{o===!0&&e===!1&&(0,_utils_micro_task_js__WEBPACK_IMPORTED_MODULE_13__.microTask)(()=>{n.current.splice(0)}),o===!1&&e===!0&&(n.current=_utils_active_element_history_js__WEBPACK_IMPORTED_MODULE_11__.history.slice())},[t,_utils_active_element_history_js__WEBPACK_IMPORTED_MODULE_11__.history,n]),(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_5__.useEvent)(()=>{var e;return(e=n.current.find(o=>o!=null&&o.isConnected))!=null?e:null})}function Y({ownerDocument:t},n){let e=Q(n);(0,_hooks_use_watch_js__WEBPACK_IMPORTED_MODULE_12__.useWatch)(()=>{n||(t==null?void 0:t.activeElement)===(t==null?void 0:t.body)&&(0,_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.focusElement)(e())},[n]),(0,_hooks_use_on_unmount_js__WEBPACK_IMPORTED_MODULE_14__.useOnUnmount)(()=>{n&&(0,_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.focusElement)(e())})}function Z({ownerDocument:t,container:n,initialFocus:e},o){let l=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null),c=(0,_hooks_use_is_mounted_js__WEBPACK_IMPORTED_MODULE_15__.useIsMounted)();return (0,_hooks_use_watch_js__WEBPACK_IMPORTED_MODULE_12__.useWatch)(()=>{if(!o)return;let r=n.current;r&&(0,_utils_micro_task_js__WEBPACK_IMPORTED_MODULE_13__.microTask)(()=>{if(!c.current)return;let s=t==null?void 0:t.activeElement;if(e!=null&&e.current){if((e==null?void 0:e.current)===s){l.current=s;return}}else if(r.contains(s)){l.current=s;return}e!=null&&e.current?(0,_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.focusElement)(e.current):(0,_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.focusIn)(r,_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.Focus.First)===_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.FocusResult.Error&&console.warn("There are no focusable elements inside the <FocusTrap />"),l.current=t==null?void 0:t.activeElement})},[o]),l}function $({ownerDocument:t,container:n,containers:e,previousActiveElement:o},l){let c=(0,_hooks_use_is_mounted_js__WEBPACK_IMPORTED_MODULE_15__.useIsMounted)();(0,_hooks_use_event_listener_js__WEBPACK_IMPORTED_MODULE_16__.useEventListener)(t==null?void 0:t.defaultView,"focus",r=>{if(!l||!c.current)return;let s=P(e);n.current instanceof HTMLElement&&s.add(n.current);let i=o.current;if(!i)return;let u=r.target;u&&u instanceof HTMLElement?S(s,u)?(o.current=u,(0,_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.focusElement)(u)):(r.preventDefault(),r.stopPropagation(),(0,_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.focusElement)(i)):(0,_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_7__.focusElement)(o.current)},!0)}function S(t,n){for(let e of t)if(e.contains(n))return!0;return!1}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/components/keyboard.js":
/*!********************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/components/keyboard.js ***!
  \********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Keys: () => (/* binding */ o)
/* harmony export */ });
var o=(r=>(r.Space=" ",r.Enter="Enter",r.Escape="Escape",r.Backspace="Backspace",r.Delete="Delete",r.ArrowLeft="ArrowLeft",r.ArrowUp="ArrowUp",r.ArrowRight="ArrowRight",r.ArrowDown="ArrowDown",r.Home="Home",r.End="End",r.PageUp="PageUp",r.PageDown="PageDown",r.Tab="Tab",r))(o||{});


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/components/label/label.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/components/label/label.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Label: () => (/* binding */ B),
/* harmony export */   useLabels: () => (/* binding */ F)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _hooks_use_event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../hooks/use-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-event.js");
/* harmony import */ var _hooks_use_id_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../hooks/use-id.js */ "./node_modules/@headlessui/react/dist/hooks/use-id.js");
/* harmony import */ var _hooks_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../hooks/use-iso-morphic-effect.js */ "./node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js");
/* harmony import */ var _hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/use-sync-refs.js */ "./node_modules/@headlessui/react/dist/hooks/use-sync-refs.js");
/* harmony import */ var _utils_render_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/render.js */ "./node_modules/@headlessui/react/dist/utils/render.js");
let d=(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);function u(){let a=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(d);if(a===null){let t=new Error("You used a <Label /> component, but it is not inside a relevant parent.");throw Error.captureStackTrace&&Error.captureStackTrace(t,u),t}return a}function F(){let[a,t]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);return[a.length>0?a.join(" "):void 0,(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>function(e){let s=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_1__.useEvent)(r=>(t(l=>[...l,r]),()=>t(l=>{let n=l.slice(),p=n.indexOf(r);return p!==-1&&n.splice(p,1),n}))),o=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({register:s,slot:e.slot,name:e.name,props:e.props}),[s,e.slot,e.name,e.props]);return react__WEBPACK_IMPORTED_MODULE_0__.createElement(d.Provider,{value:o},e.children)},[t])]}let A="label";function h(a,t){let i=(0,_hooks_use_id_js__WEBPACK_IMPORTED_MODULE_2__.useId)(),{id:e=`headlessui-label-${i}`,passive:s=!1,...o}=a,r=u(),l=(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_3__.useSyncRefs)(t);(0,_hooks_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_4__.useIsoMorphicEffect)(()=>r.register(e),[e,r.register]);let n={ref:l,...r.props,id:e};return s&&("onClick"in n&&(delete n.htmlFor,delete n.onClick),"onClick"in o&&delete o.onClick),(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.render)({ourProps:n,theirProps:o,slot:r.slot||{},defaultTag:A,name:r.name||"Label"})}let v=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.forwardRefWithAs)(h),B=Object.assign(v,{});


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/components/portal/portal.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/components/portal/portal.js ***!
  \*************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Portal: () => (/* binding */ te),
/* harmony export */   useNestedPortals: () => (/* binding */ ee)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ "react-dom");
/* harmony import */ var _hooks_use_event_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../hooks/use-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-event.js");
/* harmony import */ var _hooks_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../hooks/use-iso-morphic-effect.js */ "./node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js");
/* harmony import */ var _hooks_use_on_unmount_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../hooks/use-on-unmount.js */ "./node_modules/@headlessui/react/dist/hooks/use-on-unmount.js");
/* harmony import */ var _hooks_use_owner_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/use-owner.js */ "./node_modules/@headlessui/react/dist/hooks/use-owner.js");
/* harmony import */ var _hooks_use_server_handoff_complete_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../hooks/use-server-handoff-complete.js */ "./node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js");
/* harmony import */ var _hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../hooks/use-sync-refs.js */ "./node_modules/@headlessui/react/dist/hooks/use-sync-refs.js");
/* harmony import */ var _internal_portal_force_root_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../internal/portal-force-root.js */ "./node_modules/@headlessui/react/dist/internal/portal-force-root.js");
/* harmony import */ var _utils_env_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/env.js */ "./node_modules/@headlessui/react/dist/utils/env.js");
/* harmony import */ var _utils_render_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/render.js */ "./node_modules/@headlessui/react/dist/utils/render.js");
function F(p){let n=(0,_internal_portal_force_root_js__WEBPACK_IMPORTED_MODULE_2__.usePortalRoot)(),l=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_),e=(0,_hooks_use_owner_js__WEBPACK_IMPORTED_MODULE_3__.useOwnerDocument)(p),[a,o]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(()=>{if(!n&&l!==null||_utils_env_js__WEBPACK_IMPORTED_MODULE_4__.env.isServer)return null;let t=e==null?void 0:e.getElementById("headlessui-portal-root");if(t)return t;if(e===null)return null;let r=e.createElement("div");return r.setAttribute("id","headlessui-portal-root"),e.body.appendChild(r)});return (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{a!==null&&(e!=null&&e.body.contains(a)||e==null||e.body.appendChild(a))},[a,e]),(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{n||l!==null&&o(l.current)},[l,o,n]),a}let U=react__WEBPACK_IMPORTED_MODULE_0__.Fragment;function N(p,n){let l=p,e=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null),a=(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_5__.useSyncRefs)((0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_5__.optionalRef)(u=>{e.current=u}),n),o=(0,_hooks_use_owner_js__WEBPACK_IMPORTED_MODULE_3__.useOwnerDocument)(e),t=F(e),[r]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(()=>{var u;return _utils_env_js__WEBPACK_IMPORTED_MODULE_4__.env.isServer?null:(u=o==null?void 0:o.createElement("div"))!=null?u:null}),i=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(f),v=(0,_hooks_use_server_handoff_complete_js__WEBPACK_IMPORTED_MODULE_6__.useServerHandoffComplete)();return (0,_hooks_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_7__.useIsoMorphicEffect)(()=>{!t||!r||t.contains(r)||(r.setAttribute("data-headlessui-portal",""),t.appendChild(r))},[t,r]),(0,_hooks_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_7__.useIsoMorphicEffect)(()=>{if(r&&i)return i.register(r)},[i,r]),(0,_hooks_use_on_unmount_js__WEBPACK_IMPORTED_MODULE_8__.useOnUnmount)(()=>{var u;!t||!r||(r instanceof Node&&t.contains(r)&&t.removeChild(r),t.childNodes.length<=0&&((u=t.parentElement)==null||u.removeChild(t)))}),v?!t||!r?null:(0,react_dom__WEBPACK_IMPORTED_MODULE_1__.createPortal)((0,_utils_render_js__WEBPACK_IMPORTED_MODULE_9__.render)({ourProps:{ref:a},theirProps:l,defaultTag:U,name:"Portal"}),r):null}let S=react__WEBPACK_IMPORTED_MODULE_0__.Fragment,_=(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);function j(p,n){let{target:l,...e}=p,o={ref:(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_5__.useSyncRefs)(n)};return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_.Provider,{value:l},(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_9__.render)({ourProps:o,theirProps:e,defaultTag:S,name:"Popover.Group"}))}let f=(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);function ee(){let p=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(f),n=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([]),l=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_10__.useEvent)(o=>(n.current.push(o),p&&p.register(o),()=>e(o))),e=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_10__.useEvent)(o=>{let t=n.current.indexOf(o);t!==-1&&n.current.splice(t,1),p&&p.unregister(o)}),a=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({register:l,unregister:e,portals:n}),[l,e,n]);return[n,(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>function({children:t}){return react__WEBPACK_IMPORTED_MODULE_0__.createElement(f.Provider,{value:a},t)},[a])]}let D=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_9__.forwardRefWithAs)(N),I=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_9__.forwardRefWithAs)(j),te=Object.assign(D,{Group:I});


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/components/switch/switch.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/components/switch/switch.js ***!
  \*************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Switch: () => (/* binding */ _e)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _hooks_use_controllable_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../hooks/use-controllable.js */ "./node_modules/@headlessui/react/dist/hooks/use-controllable.js");
/* harmony import */ var _hooks_use_disposables_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../hooks/use-disposables.js */ "./node_modules/@headlessui/react/dist/hooks/use-disposables.js");
/* harmony import */ var _hooks_use_event_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../hooks/use-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-event.js");
/* harmony import */ var _hooks_use_id_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../hooks/use-id.js */ "./node_modules/@headlessui/react/dist/hooks/use-id.js");
/* harmony import */ var _hooks_use_resolve_button_type_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../hooks/use-resolve-button-type.js */ "./node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js");
/* harmony import */ var _hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../hooks/use-sync-refs.js */ "./node_modules/@headlessui/react/dist/hooks/use-sync-refs.js");
/* harmony import */ var _internal_hidden_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../internal/hidden.js */ "./node_modules/@headlessui/react/dist/internal/hidden.js");
/* harmony import */ var _utils_bugs_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils/bugs.js */ "./node_modules/@headlessui/react/dist/utils/bugs.js");
/* harmony import */ var _utils_form_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils/form.js */ "./node_modules/@headlessui/react/dist/utils/form.js");
/* harmony import */ var _utils_render_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/render.js */ "./node_modules/@headlessui/react/dist/utils/render.js");
/* harmony import */ var _description_description_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../description/description.js */ "./node_modules/@headlessui/react/dist/components/description/description.js");
/* harmony import */ var _keyboard_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../keyboard.js */ "./node_modules/@headlessui/react/dist/components/keyboard.js");
/* harmony import */ var _label_label_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../label/label.js */ "./node_modules/@headlessui/react/dist/components/label/label.js");
let S=(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);S.displayName="GroupContext";let ee=react__WEBPACK_IMPORTED_MODULE_0__.Fragment;function te(r){var u;let[n,p]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),[c,T]=(0,_label_label_js__WEBPACK_IMPORTED_MODULE_1__.useLabels)(),[o,b]=(0,_description_description_js__WEBPACK_IMPORTED_MODULE_2__.useDescriptions)(),a=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({switch:n,setSwitch:p,labelledby:c,describedby:o}),[n,p,c,o]),d={},y=r;return react__WEBPACK_IMPORTED_MODULE_0__.createElement(b,{name:"Switch.Description"},react__WEBPACK_IMPORTED_MODULE_0__.createElement(T,{name:"Switch.Label",props:{htmlFor:(u=a.switch)==null?void 0:u.id,onClick(m){n&&(m.currentTarget.tagName==="LABEL"&&m.preventDefault(),n.click(),n.focus({preventScroll:!0}))}}},react__WEBPACK_IMPORTED_MODULE_0__.createElement(S.Provider,{value:a},(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_3__.render)({ourProps:d,theirProps:y,defaultTag:ee,name:"Switch.Group"}))))}let ne="button";function re(r,n){var E;let p=(0,_hooks_use_id_js__WEBPACK_IMPORTED_MODULE_4__.useId)(),{id:c=`headlessui-switch-${p}`,checked:T,defaultChecked:o=!1,onChange:b,disabled:a=!1,name:d,value:y,form:u,...m}=r,t=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(S),f=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null),C=(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_5__.useSyncRefs)(f,n,t===null?null:t.setSwitch),[i,s]=(0,_hooks_use_controllable_js__WEBPACK_IMPORTED_MODULE_6__.useControllable)(T,b,o),w=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_7__.useEvent)(()=>s==null?void 0:s(!i)),L=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_7__.useEvent)(e=>{if((0,_utils_bugs_js__WEBPACK_IMPORTED_MODULE_8__.isDisabledReactIssue7711)(e.currentTarget))return e.preventDefault();e.preventDefault(),w()}),x=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_7__.useEvent)(e=>{e.key===_keyboard_js__WEBPACK_IMPORTED_MODULE_9__.Keys.Space?(e.preventDefault(),w()):e.key===_keyboard_js__WEBPACK_IMPORTED_MODULE_9__.Keys.Enter&&(0,_utils_form_js__WEBPACK_IMPORTED_MODULE_10__.attemptSubmit)(e.currentTarget)}),v=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_7__.useEvent)(e=>e.preventDefault()),G=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({checked:i}),[i]),R={id:c,ref:C,role:"switch",type:(0,_hooks_use_resolve_button_type_js__WEBPACK_IMPORTED_MODULE_11__.useResolveButtonType)(r,f),tabIndex:r.tabIndex===-1?0:(E=r.tabIndex)!=null?E:0,"aria-checked":i,"aria-labelledby":t==null?void 0:t.labelledby,"aria-describedby":t==null?void 0:t.describedby,disabled:a,onClick:L,onKeyUp:x,onKeyPress:v},k=(0,_hooks_use_disposables_js__WEBPACK_IMPORTED_MODULE_12__.useDisposables)();return (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{var _;let e=(_=f.current)==null?void 0:_.closest("form");e&&o!==void 0&&k.addEventListener(e,"reset",()=>{s(o)})},[f,s]),react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment,null,d!=null&&i&&react__WEBPACK_IMPORTED_MODULE_0__.createElement(_internal_hidden_js__WEBPACK_IMPORTED_MODULE_13__.Hidden,{features:_internal_hidden_js__WEBPACK_IMPORTED_MODULE_13__.Features.Hidden,...(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_3__.compact)({as:"input",type:"checkbox",hidden:!0,readOnly:!0,disabled:a,form:u,checked:i,name:d,value:y})}),(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_3__.render)({ourProps:R,theirProps:m,slot:G,defaultTag:ne,name:"Switch"}))}let oe=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_3__.forwardRefWithAs)(re),ie=te,_e=Object.assign(oe,{Group:ie,Label:_label_label_js__WEBPACK_IMPORTED_MODULE_1__.Label,Description:_description_description_js__WEBPACK_IMPORTED_MODULE_2__.Description});


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/components/transitions/transition.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/components/transitions/transition.js ***!
  \**********************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Transition: () => (/* binding */ qe)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _hooks_use_disposables_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/use-disposables.js */ "./node_modules/@headlessui/react/dist/hooks/use-disposables.js");
/* harmony import */ var _hooks_use_event_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../hooks/use-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-event.js");
/* harmony import */ var _hooks_use_flags_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../hooks/use-flags.js */ "./node_modules/@headlessui/react/dist/hooks/use-flags.js");
/* harmony import */ var _hooks_use_is_mounted_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../hooks/use-is-mounted.js */ "./node_modules/@headlessui/react/dist/hooks/use-is-mounted.js");
/* harmony import */ var _hooks_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../hooks/use-iso-morphic-effect.js */ "./node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js");
/* harmony import */ var _hooks_use_latest_value_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../hooks/use-latest-value.js */ "./node_modules/@headlessui/react/dist/hooks/use-latest-value.js");
/* harmony import */ var _hooks_use_server_handoff_complete_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../hooks/use-server-handoff-complete.js */ "./node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js");
/* harmony import */ var _hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../hooks/use-sync-refs.js */ "./node_modules/@headlessui/react/dist/hooks/use-sync-refs.js");
/* harmony import */ var _hooks_use_transition_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../hooks/use-transition.js */ "./node_modules/@headlessui/react/dist/hooks/use-transition.js");
/* harmony import */ var _internal_open_closed_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../internal/open-closed.js */ "./node_modules/@headlessui/react/dist/internal/open-closed.js");
/* harmony import */ var _utils_class_names_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../utils/class-names.js */ "./node_modules/@headlessui/react/dist/utils/class-names.js");
/* harmony import */ var _utils_match_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/match.js */ "./node_modules/@headlessui/react/dist/utils/match.js");
/* harmony import */ var _utils_render_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/render.js */ "./node_modules/@headlessui/react/dist/utils/render.js");
function S(t=""){return t.split(/\s+/).filter(n=>n.length>1)}let I=(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);I.displayName="TransitionContext";var Se=(r=>(r.Visible="visible",r.Hidden="hidden",r))(Se||{});function ye(){let t=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(I);if(t===null)throw new Error("A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.");return t}function xe(){let t=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(M);if(t===null)throw new Error("A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.");return t}let M=(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);M.displayName="NestingContext";function U(t){return"children"in t?U(t.children):t.current.filter(({el:n})=>n.current!==null).filter(({state:n})=>n==="visible").length>0}function se(t,n){let r=(0,_hooks_use_latest_value_js__WEBPACK_IMPORTED_MODULE_1__.useLatestValue)(t),s=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([]),R=(0,_hooks_use_is_mounted_js__WEBPACK_IMPORTED_MODULE_2__.useIsMounted)(),D=(0,_hooks_use_disposables_js__WEBPACK_IMPORTED_MODULE_3__.useDisposables)(),p=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_4__.useEvent)((i,e=_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.RenderStrategy.Hidden)=>{let a=s.current.findIndex(({el:o})=>o===i);a!==-1&&((0,_utils_match_js__WEBPACK_IMPORTED_MODULE_6__.match)(e,{[_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.RenderStrategy.Unmount](){s.current.splice(a,1)},[_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.RenderStrategy.Hidden](){s.current[a].state="hidden"}}),D.microTask(()=>{var o;!U(s)&&R.current&&((o=r.current)==null||o.call(r))}))}),x=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_4__.useEvent)(i=>{let e=s.current.find(({el:a})=>a===i);return e?e.state!=="visible"&&(e.state="visible"):s.current.push({el:i,state:"visible"}),()=>p(i,_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.RenderStrategy.Unmount)}),h=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([]),v=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(Promise.resolve()),u=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)({enter:[],leave:[],idle:[]}),g=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_4__.useEvent)((i,e,a)=>{h.current.splice(0),n&&(n.chains.current[e]=n.chains.current[e].filter(([o])=>o!==i)),n==null||n.chains.current[e].push([i,new Promise(o=>{h.current.push(o)})]),n==null||n.chains.current[e].push([i,new Promise(o=>{Promise.all(u.current[e].map(([f,N])=>N)).then(()=>o())})]),e==="enter"?v.current=v.current.then(()=>n==null?void 0:n.wait.current).then(()=>a(e)):a(e)}),d=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_4__.useEvent)((i,e,a)=>{Promise.all(u.current[e].splice(0).map(([o,f])=>f)).then(()=>{var o;(o=h.current.shift())==null||o()}).then(()=>a(e))});return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({children:s,register:x,unregister:p,onStart:g,onStop:d,wait:v,chains:u}),[x,p,s,g,d,u,v])}function Ne(){}let Pe=["beforeEnter","afterEnter","beforeLeave","afterLeave"];function ae(t){var r;let n={};for(let s of Pe)n[s]=(r=t[s])!=null?r:Ne;return n}function Re(t){let n=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(ae(t));return (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{n.current=ae(t)},[t]),n}let De="div",le=_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.Features.RenderStrategy;function He(t,n){var Q,Y;let{beforeEnter:r,afterEnter:s,beforeLeave:R,afterLeave:D,enter:p,enterFrom:x,enterTo:h,entered:v,leave:u,leaveFrom:g,leaveTo:d,...i}=t,e=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null),a=(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_7__.useSyncRefs)(e,n),o=(Q=i.unmount)==null||Q?_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.RenderStrategy.Unmount:_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.RenderStrategy.Hidden,{show:f,appear:N,initial:T}=ye(),[l,j]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(f?"visible":"hidden"),z=xe(),{register:L,unregister:O}=z;(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>L(e),[L,e]),(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{if(o===_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.RenderStrategy.Hidden&&e.current){if(f&&l!=="visible"){j("visible");return}return (0,_utils_match_js__WEBPACK_IMPORTED_MODULE_6__.match)(l,{["hidden"]:()=>O(e),["visible"]:()=>L(e)})}},[l,e,L,O,f,o]);let k=(0,_hooks_use_latest_value_js__WEBPACK_IMPORTED_MODULE_1__.useLatestValue)({base:S(i.className),enter:S(p),enterFrom:S(x),enterTo:S(h),entered:S(v),leave:S(u),leaveFrom:S(g),leaveTo:S(d)}),V=Re({beforeEnter:r,afterEnter:s,beforeLeave:R,afterLeave:D}),G=(0,_hooks_use_server_handoff_complete_js__WEBPACK_IMPORTED_MODULE_8__.useServerHandoffComplete)();(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{if(G&&l==="visible"&&e.current===null)throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?")},[e,l,G]);let Te=T&&!N,K=N&&f&&T,de=(()=>!G||Te?"idle":f?"enter":"leave")(),H=(0,_hooks_use_flags_js__WEBPACK_IMPORTED_MODULE_9__.useFlags)(0),fe=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_4__.useEvent)(C=>(0,_utils_match_js__WEBPACK_IMPORTED_MODULE_6__.match)(C,{enter:()=>{H.addFlag(_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_10__.State.Opening),V.current.beforeEnter()},leave:()=>{H.addFlag(_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_10__.State.Closing),V.current.beforeLeave()},idle:()=>{}})),me=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_4__.useEvent)(C=>(0,_utils_match_js__WEBPACK_IMPORTED_MODULE_6__.match)(C,{enter:()=>{H.removeFlag(_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_10__.State.Opening),V.current.afterEnter()},leave:()=>{H.removeFlag(_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_10__.State.Closing),V.current.afterLeave()},idle:()=>{}})),w=se(()=>{j("hidden"),O(e)},z),B=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(!1);(0,_hooks_use_transition_js__WEBPACK_IMPORTED_MODULE_11__.useTransition)({immediate:K,container:e,classes:k,direction:de,onStart:(0,_hooks_use_latest_value_js__WEBPACK_IMPORTED_MODULE_1__.useLatestValue)(C=>{B.current=!0,w.onStart(e,C,fe)}),onStop:(0,_hooks_use_latest_value_js__WEBPACK_IMPORTED_MODULE_1__.useLatestValue)(C=>{B.current=!1,w.onStop(e,C,me),C==="leave"&&!U(w)&&(j("hidden"),O(e))})});let P=i,ce={ref:a};return K?P={...P,className:(0,_utils_class_names_js__WEBPACK_IMPORTED_MODULE_12__.classNames)(i.className,...k.current.enter,...k.current.enterFrom)}:B.current&&(P.className=(0,_utils_class_names_js__WEBPACK_IMPORTED_MODULE_12__.classNames)(i.className,(Y=e.current)==null?void 0:Y.className),P.className===""&&delete P.className),react__WEBPACK_IMPORTED_MODULE_0__.createElement(M.Provider,{value:w},react__WEBPACK_IMPORTED_MODULE_0__.createElement(_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_10__.OpenClosedProvider,{value:(0,_utils_match_js__WEBPACK_IMPORTED_MODULE_6__.match)(l,{["visible"]:_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_10__.State.Open,["hidden"]:_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_10__.State.Closed})|H.flags},(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.render)({ourProps:ce,theirProps:P,defaultTag:De,features:le,visible:l==="visible",name:"Transition.Child"})))}function Fe(t,n){let{show:r,appear:s=!1,unmount:R=!0,...D}=t,p=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null),x=(0,_hooks_use_sync_refs_js__WEBPACK_IMPORTED_MODULE_7__.useSyncRefs)(p,n);(0,_hooks_use_server_handoff_complete_js__WEBPACK_IMPORTED_MODULE_8__.useServerHandoffComplete)();let h=(0,_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_10__.useOpenClosed)();if(r===void 0&&h!==null&&(r=(h&_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_10__.State.Open)===_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_10__.State.Open),![!0,!1].includes(r))throw new Error("A <Transition /> is used but it is missing a `show={true | false}` prop.");let[v,u]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(r?"visible":"hidden"),g=se(()=>{u("hidden")}),[d,i]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(!0),e=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([r]);(0,_hooks_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_13__.useIsoMorphicEffect)(()=>{d!==!1&&e.current[e.current.length-1]!==r&&(e.current.push(r),i(!1))},[e,r]);let a=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({show:r,appear:s,initial:d}),[r,s,d]);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{if(r)u("visible");else if(!U(g))u("hidden");else{let T=p.current;if(!T)return;let l=T.getBoundingClientRect();l.x===0&&l.y===0&&l.width===0&&l.height===0&&u("hidden")}},[r,g]);let o={unmount:R},f=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_4__.useEvent)(()=>{var T;d&&i(!1),(T=t.beforeEnter)==null||T.call(t)}),N=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_4__.useEvent)(()=>{var T;d&&i(!1),(T=t.beforeLeave)==null||T.call(t)});return react__WEBPACK_IMPORTED_MODULE_0__.createElement(M.Provider,{value:g},react__WEBPACK_IMPORTED_MODULE_0__.createElement(I.Provider,{value:a},(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.render)({ourProps:{...o,as:react__WEBPACK_IMPORTED_MODULE_0__.Fragment,children:react__WEBPACK_IMPORTED_MODULE_0__.createElement(ue,{ref:x,...o,...D,beforeEnter:f,beforeLeave:N})},theirProps:{},defaultTag:react__WEBPACK_IMPORTED_MODULE_0__.Fragment,features:le,visible:v==="visible",name:"Transition"})))}function _e(t,n){let r=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(I)!==null,s=(0,_internal_open_closed_js__WEBPACK_IMPORTED_MODULE_10__.useOpenClosed)()!==null;return react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment,null,!r&&s?react__WEBPACK_IMPORTED_MODULE_0__.createElement(q,{ref:n,...t}):react__WEBPACK_IMPORTED_MODULE_0__.createElement(ue,{ref:n,...t}))}let q=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.forwardRefWithAs)(Fe),ue=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.forwardRefWithAs)(He),Le=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_5__.forwardRefWithAs)(_e),qe=Object.assign(q,{Child:Le,Root:q});


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/components/transitions/utils/transition.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/components/transitions/utils/transition.js ***!
  \****************************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   transition: () => (/* binding */ M)
/* harmony export */ });
/* harmony import */ var _utils_disposables_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../utils/disposables.js */ "./node_modules/@headlessui/react/dist/utils/disposables.js");
/* harmony import */ var _utils_match_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils/match.js */ "./node_modules/@headlessui/react/dist/utils/match.js");
/* harmony import */ var _utils_once_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../utils/once.js */ "./node_modules/@headlessui/react/dist/utils/once.js");
function g(t,...e){t&&e.length>0&&t.classList.add(...e)}function v(t,...e){t&&e.length>0&&t.classList.remove(...e)}function b(t,e){let n=(0,_utils_disposables_js__WEBPACK_IMPORTED_MODULE_0__.disposables)();if(!t)return n.dispose;let{transitionDuration:m,transitionDelay:a}=getComputedStyle(t),[u,p]=[m,a].map(l=>{let[r=0]=l.split(",").filter(Boolean).map(i=>i.includes("ms")?parseFloat(i):parseFloat(i)*1e3).sort((i,T)=>T-i);return r}),o=u+p;if(o!==0){n.group(r=>{r.setTimeout(()=>{e(),r.dispose()},o),r.addEventListener(t,"transitionrun",i=>{i.target===i.currentTarget&&r.dispose()})});let l=n.addEventListener(t,"transitionend",r=>{r.target===r.currentTarget&&(e(),l())})}else e();return n.add(()=>e()),n.dispose}function M(t,e,n,m){let a=n?"enter":"leave",u=(0,_utils_disposables_js__WEBPACK_IMPORTED_MODULE_0__.disposables)(),p=m!==void 0?(0,_utils_once_js__WEBPACK_IMPORTED_MODULE_1__.once)(m):()=>{};a==="enter"&&(t.removeAttribute("hidden"),t.style.display="");let o=(0,_utils_match_js__WEBPACK_IMPORTED_MODULE_2__.match)(a,{enter:()=>e.enter,leave:()=>e.leave}),l=(0,_utils_match_js__WEBPACK_IMPORTED_MODULE_2__.match)(a,{enter:()=>e.enterTo,leave:()=>e.leaveTo}),r=(0,_utils_match_js__WEBPACK_IMPORTED_MODULE_2__.match)(a,{enter:()=>e.enterFrom,leave:()=>e.leaveFrom});return v(t,...e.base,...e.enter,...e.enterTo,...e.enterFrom,...e.leave,...e.leaveFrom,...e.leaveTo,...e.entered),g(t,...e.base,...o,...r),u.nextFrame(()=>{v(t,...e.base,...o,...r),g(t,...e.base,...o,...l),b(t,()=>(v(t,...e.base,...o),g(t,...e.base,...e.entered),p()))}),u.dispose}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/document-overflow/adjust-scrollbar-padding.js":
/*!*************************************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/document-overflow/adjust-scrollbar-padding.js ***!
  \*************************************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   adjustScrollbarPadding: () => (/* binding */ c)
/* harmony export */ });
function c(){let o;return{before({doc:e}){var l;let n=e.documentElement;o=((l=e.defaultView)!=null?l:window).innerWidth-n.clientWidth},after({doc:e,d:n}){let t=e.documentElement,l=t.clientWidth-t.offsetWidth,r=o-l;n.style(t,"paddingRight",`${r}px`)}}}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js":
/*!*******************************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js ***!
  \*******************************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   handleIOSLocking: () => (/* binding */ d)
/* harmony export */ });
/* harmony import */ var _utils_disposables_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/disposables.js */ "./node_modules/@headlessui/react/dist/utils/disposables.js");
/* harmony import */ var _utils_platform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/platform.js */ "./node_modules/@headlessui/react/dist/utils/platform.js");
function d(){return (0,_utils_platform_js__WEBPACK_IMPORTED_MODULE_0__.isIOS)()?{before({doc:r,d:l,meta:c}){function o(a){return c.containers.flatMap(n=>n()).some(n=>n.contains(a))}l.microTask(()=>{var s;if(window.getComputedStyle(r.documentElement).scrollBehavior!=="auto"){let t=(0,_utils_disposables_js__WEBPACK_IMPORTED_MODULE_1__.disposables)();t.style(r.documentElement,"scrollBehavior","auto"),l.add(()=>l.microTask(()=>t.dispose()))}let a=(s=window.scrollY)!=null?s:window.pageYOffset,n=null;l.addEventListener(r,"click",t=>{if(t.target instanceof HTMLElement)try{let e=t.target.closest("a");if(!e)return;let{hash:f}=new URL(e.href),i=r.querySelector(f);i&&!o(i)&&(n=i)}catch{}},!0),l.addEventListener(r,"touchstart",t=>{if(t.target instanceof HTMLElement)if(o(t.target)){let e=t.target;for(;e.parentElement&&o(e.parentElement);)e=e.parentElement;l.style(e,"overscrollBehavior","contain")}else l.style(t.target,"touchAction","none")}),l.addEventListener(r,"touchmove",t=>{if(t.target instanceof HTMLElement)if(o(t.target)){let e=t.target;for(;e.parentElement&&e.dataset.headlessuiPortal!==""&&!(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth);)e=e.parentElement;e.dataset.headlessuiPortal===""&&t.preventDefault()}else t.preventDefault()},{passive:!1}),l.add(()=>{var e;let t=(e=window.scrollY)!=null?e:window.pageYOffset;a!==t&&window.scrollTo(0,a),n&&n.isConnected&&(n.scrollIntoView({block:"nearest"}),n=null)})})}}:{}}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js ***!
  \***************************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   overflows: () => (/* binding */ a)
/* harmony export */ });
/* harmony import */ var _utils_disposables_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/disposables.js */ "./node_modules/@headlessui/react/dist/utils/disposables.js");
/* harmony import */ var _utils_store_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/store.js */ "./node_modules/@headlessui/react/dist/utils/store.js");
/* harmony import */ var _adjust_scrollbar_padding_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./adjust-scrollbar-padding.js */ "./node_modules/@headlessui/react/dist/hooks/document-overflow/adjust-scrollbar-padding.js");
/* harmony import */ var _handle_ios_locking_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./handle-ios-locking.js */ "./node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js");
/* harmony import */ var _prevent_scroll_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./prevent-scroll.js */ "./node_modules/@headlessui/react/dist/hooks/document-overflow/prevent-scroll.js");
function m(e){let n={};for(let t of e)Object.assign(n,t(n));return n}let a=(0,_utils_store_js__WEBPACK_IMPORTED_MODULE_0__.createStore)(()=>new Map,{PUSH(e,n){var o;let t=(o=this.get(e))!=null?o:{doc:e,count:0,d:(0,_utils_disposables_js__WEBPACK_IMPORTED_MODULE_1__.disposables)(),meta:new Set};return t.count++,t.meta.add(n),this.set(e,t),this},POP(e,n){let t=this.get(e);return t&&(t.count--,t.meta.delete(n)),this},SCROLL_PREVENT({doc:e,d:n,meta:t}){let o={doc:e,d:n,meta:m(t)},c=[(0,_handle_ios_locking_js__WEBPACK_IMPORTED_MODULE_2__.handleIOSLocking)(),(0,_adjust_scrollbar_padding_js__WEBPACK_IMPORTED_MODULE_3__.adjustScrollbarPadding)(),(0,_prevent_scroll_js__WEBPACK_IMPORTED_MODULE_4__.preventScroll)()];c.forEach(({before:r})=>r==null?void 0:r(o)),c.forEach(({after:r})=>r==null?void 0:r(o))},SCROLL_ALLOW({d:e}){e.dispose()},TEARDOWN({doc:e}){this.delete(e)}});a.subscribe(()=>{let e=a.getSnapshot(),n=new Map;for(let[t]of e)n.set(t,t.documentElement.style.overflow);for(let t of e.values()){let o=n.get(t.doc)==="hidden",c=t.count!==0;(c&&!o||!c&&o)&&a.dispatch(t.count>0?"SCROLL_PREVENT":"SCROLL_ALLOW",t),t.count===0&&a.dispatch("TEARDOWN",t)}});


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/document-overflow/prevent-scroll.js":
/*!***************************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/document-overflow/prevent-scroll.js ***!
  \***************************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   preventScroll: () => (/* binding */ l)
/* harmony export */ });
function l(){return{before({doc:e,d:o}){o.style(e.documentElement,"overflow","hidden")}}}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js":
/*!**********************************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js ***!
  \**********************************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useDocumentOverflowLockedEffect: () => (/* binding */ p)
/* harmony export */ });
/* harmony import */ var _hooks_use_store_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../hooks/use-store.js */ "./node_modules/@headlessui/react/dist/hooks/use-store.js");
/* harmony import */ var _use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../use-iso-morphic-effect.js */ "./node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js");
/* harmony import */ var _overflow_store_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./overflow-store.js */ "./node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js");
function p(e,r,n){let f=(0,_hooks_use_store_js__WEBPACK_IMPORTED_MODULE_0__.useStore)(_overflow_store_js__WEBPACK_IMPORTED_MODULE_1__.overflows),o=e?f.get(e):void 0,i=o?o.count>0:!1;return (0,_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_2__.useIsoMorphicEffect)(()=>{if(!(!e||!r))return _overflow_store_js__WEBPACK_IMPORTED_MODULE_1__.overflows.dispatch("PUSH",e,n),()=>_overflow_store_js__WEBPACK_IMPORTED_MODULE_1__.overflows.dispatch("POP",e,n)},[r,e]),i}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-controllable.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-controllable.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useControllable: () => (/* binding */ T)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _use_event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-event.js");
function T(l,r,c){let[i,s]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(c),e=l!==void 0,t=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(e),u=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(!1),d=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(!1);return e&&!t.current&&!u.current?(u.current=!0,t.current=e,console.error("A component is changing from uncontrolled to controlled. This may be caused by the value changing from undefined to a defined value, which should not happen.")):!e&&t.current&&!d.current&&(d.current=!0,t.current=e,console.error("A component is changing from controlled to uncontrolled. This may be caused by the value changing from a defined value to undefined, which should not happen.")),[e?l:i,(0,_use_event_js__WEBPACK_IMPORTED_MODULE_1__.useEvent)(n=>(e||s(n),r==null?void 0:r(n)))]}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-disposables.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-disposables.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useDisposables: () => (/* binding */ p)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _utils_disposables_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/disposables.js */ "./node_modules/@headlessui/react/dist/utils/disposables.js");
function p(){let[e]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(_utils_disposables_js__WEBPACK_IMPORTED_MODULE_1__.disposables);return (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>()=>e.dispose(),[e]),e}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-document-event.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-document-event.js ***!
  \*************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useDocumentEvent: () => (/* binding */ d)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _use_latest_value_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-latest-value.js */ "./node_modules/@headlessui/react/dist/hooks/use-latest-value.js");
function d(e,r,n){let o=(0,_use_latest_value_js__WEBPACK_IMPORTED_MODULE_1__.useLatestValue)(r);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{function t(u){o.current(u)}return document.addEventListener(e,t,n),()=>document.removeEventListener(e,t,n)},[e,n])}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-event-listener.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-event-listener.js ***!
  \*************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useEventListener: () => (/* binding */ E)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _use_latest_value_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-latest-value.js */ "./node_modules/@headlessui/react/dist/hooks/use-latest-value.js");
function E(n,e,a,t){let i=(0,_use_latest_value_js__WEBPACK_IMPORTED_MODULE_1__.useLatestValue)(a);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{n=n!=null?n:window;function r(o){i.current(o)}return n.addEventListener(e,r,t),()=>n.removeEventListener(e,r,t)},[n,e,t])}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-event.js":
/*!****************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-event.js ***!
  \****************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useEvent: () => (/* binding */ o)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _use_latest_value_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-latest-value.js */ "./node_modules/@headlessui/react/dist/hooks/use-latest-value.js");
let o=function(t){let e=(0,_use_latest_value_js__WEBPACK_IMPORTED_MODULE_1__.useLatestValue)(t);return react__WEBPACK_IMPORTED_MODULE_0__.useCallback((...r)=>e.current(...r),[e])};


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-flags.js":
/*!****************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-flags.js ***!
  \****************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useFlags: () => (/* binding */ c)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _use_is_mounted_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-is-mounted.js */ "./node_modules/@headlessui/react/dist/hooks/use-is-mounted.js");
function c(a=0){let[l,r]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(a),t=(0,_use_is_mounted_js__WEBPACK_IMPORTED_MODULE_1__.useIsMounted)(),o=(0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(e=>{t.current&&r(u=>u|e)},[l,t]),m=(0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(e=>Boolean(l&e),[l]),s=(0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(e=>{t.current&&r(u=>u&~e)},[r,t]),g=(0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(e=>{t.current&&r(u=>u^e)},[r]);return{flags:l,addFlag:o,hasFlag:m,removeFlag:s,toggleFlag:g}}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-id.js":
/*!*************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-id.js ***!
  \*************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useId: () => (/* binding */ I)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _utils_env_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/env.js */ "./node_modules/@headlessui/react/dist/utils/env.js");
/* harmony import */ var _use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./use-iso-morphic-effect.js */ "./node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js");
/* harmony import */ var _use_server_handoff_complete_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-server-handoff-complete.js */ "./node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js");
var o;let I=(o=react__WEBPACK_IMPORTED_MODULE_0__.useId)!=null?o:function(){let n=(0,_use_server_handoff_complete_js__WEBPACK_IMPORTED_MODULE_1__.useServerHandoffComplete)(),[e,u]=react__WEBPACK_IMPORTED_MODULE_0__.useState(n?()=>_utils_env_js__WEBPACK_IMPORTED_MODULE_2__.env.nextId():null);return (0,_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_3__.useIsoMorphicEffect)(()=>{e===null&&u(_utils_env_js__WEBPACK_IMPORTED_MODULE_2__.env.nextId())},[e]),e!=null?""+e:void 0};


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-inert.js":
/*!****************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-inert.js ***!
  \****************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useInert: () => (/* binding */ b)
/* harmony export */ });
/* harmony import */ var _use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./use-iso-morphic-effect.js */ "./node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js");
let u=new Map,t=new Map;function b(r,l=!0){(0,_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_0__.useIsoMorphicEffect)(()=>{var o;if(!l)return;let e=typeof r=="function"?r():r.current;if(!e)return;function a(){var d;if(!e)return;let i=(d=t.get(e))!=null?d:1;if(i===1?t.delete(e):t.set(e,i-1),i!==1)return;let n=u.get(e);n&&(n["aria-hidden"]===null?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden",n["aria-hidden"]),e.inert=n.inert,u.delete(e))}let f=(o=t.get(e))!=null?o:0;return t.set(e,f+1),f!==0||(u.set(e,{"aria-hidden":e.getAttribute("aria-hidden"),inert:e.inert}),e.setAttribute("aria-hidden","true"),e.inert=!0),a},[r,l])}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-is-mounted.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-is-mounted.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useIsMounted: () => (/* binding */ f)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-iso-morphic-effect.js */ "./node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js");
function f(){let e=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(!1);return (0,_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_1__.useIsoMorphicEffect)(()=>(e.current=!0,()=>{e.current=!1}),[]),e}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useIsoMorphicEffect: () => (/* binding */ l)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _utils_env_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/env.js */ "./node_modules/@headlessui/react/dist/utils/env.js");
let l=(e,f)=>{_utils_env_js__WEBPACK_IMPORTED_MODULE_1__.env.isServer?(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(e,f):(0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(e,f)};


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-latest-value.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-latest-value.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useLatestValue: () => (/* binding */ s)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-iso-morphic-effect.js */ "./node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js");
function s(e){let r=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(e);return (0,_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_1__.useIsoMorphicEffect)(()=>{r.current=e},[e]),r}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-on-unmount.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-on-unmount.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useOnUnmount: () => (/* binding */ c)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _utils_micro_task_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/micro-task.js */ "./node_modules/@headlessui/react/dist/utils/micro-task.js");
/* harmony import */ var _use_event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-event.js");
function c(t){let r=(0,_use_event_js__WEBPACK_IMPORTED_MODULE_1__.useEvent)(t),e=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(!1);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>(e.current=!1,()=>{e.current=!0,(0,_utils_micro_task_js__WEBPACK_IMPORTED_MODULE_2__.microTask)(()=>{e.current&&r()})}),[r])}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-outside-click.js":
/*!************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-outside-click.js ***!
  \************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useOutsideClick: () => (/* binding */ y)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _utils_focus_management_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/focus-management.js */ "./node_modules/@headlessui/react/dist/utils/focus-management.js");
/* harmony import */ var _utils_platform_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/platform.js */ "./node_modules/@headlessui/react/dist/utils/platform.js");
/* harmony import */ var _use_document_event_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./use-document-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-document-event.js");
/* harmony import */ var _use_window_event_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./use-window-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-window-event.js");
function y(s,m,a=!0){let i=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(!1);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{requestAnimationFrame(()=>{i.current=a})},[a]);function c(e,r){if(!i.current||e.defaultPrevented)return;let t=r(e);if(t===null||!t.getRootNode().contains(t)||!t.isConnected)return;let E=function u(n){return typeof n=="function"?u(n()):Array.isArray(n)||n instanceof Set?n:[n]}(s);for(let u of E){if(u===null)continue;let n=u instanceof HTMLElement?u:u.current;if(n!=null&&n.contains(t)||e.composed&&e.composedPath().includes(n))return}return!(0,_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_1__.isFocusableElement)(t,_utils_focus_management_js__WEBPACK_IMPORTED_MODULE_1__.FocusableMode.Loose)&&t.tabIndex!==-1&&e.preventDefault(),m(e,t)}let o=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);(0,_use_document_event_js__WEBPACK_IMPORTED_MODULE_2__.useDocumentEvent)("pointerdown",e=>{var r,t;i.current&&(o.current=((t=(r=e.composedPath)==null?void 0:r.call(e))==null?void 0:t[0])||e.target)},!0),(0,_use_document_event_js__WEBPACK_IMPORTED_MODULE_2__.useDocumentEvent)("mousedown",e=>{var r,t;i.current&&(o.current=((t=(r=e.composedPath)==null?void 0:r.call(e))==null?void 0:t[0])||e.target)},!0),(0,_use_document_event_js__WEBPACK_IMPORTED_MODULE_2__.useDocumentEvent)("click",e=>{(0,_utils_platform_js__WEBPACK_IMPORTED_MODULE_3__.isMobile)()||o.current&&(c(e,()=>o.current),o.current=null)},!0),(0,_use_document_event_js__WEBPACK_IMPORTED_MODULE_2__.useDocumentEvent)("touchend",e=>c(e,()=>e.target instanceof HTMLElement?e.target:null),!0),(0,_use_window_event_js__WEBPACK_IMPORTED_MODULE_4__.useWindowEvent)("blur",e=>c(e,()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null),!0)}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-owner.js":
/*!****************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-owner.js ***!
  \****************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useOwnerDocument: () => (/* binding */ n)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _utils_owner_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/owner.js */ "./node_modules/@headlessui/react/dist/utils/owner.js");
function n(...e){return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>(0,_utils_owner_js__WEBPACK_IMPORTED_MODULE_1__.getOwnerDocument)(...e),[...e])}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js":
/*!******************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useResolveButtonType: () => (/* binding */ T)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-iso-morphic-effect.js */ "./node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js");
function i(t){var n;if(t.type)return t.type;let e=(n=t.as)!=null?n:"button";if(typeof e=="string"&&e.toLowerCase()==="button")return"button"}function T(t,e){let[n,u]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(()=>i(t));return (0,_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_1__.useIsoMorphicEffect)(()=>{u(i(t))},[t.type,t.as]),(0,_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_1__.useIsoMorphicEffect)(()=>{n||e.current&&e.current instanceof HTMLButtonElement&&!e.current.hasAttribute("type")&&u("button")},[n,e]),n}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-root-containers.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-root-containers.js ***!
  \**************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useMainTreeNode: () => (/* binding */ y),
/* harmony export */   useRootContainers: () => (/* binding */ N)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _internal_hidden_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/hidden.js */ "./node_modules/@headlessui/react/dist/internal/hidden.js");
/* harmony import */ var _use_event_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./use-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-event.js");
/* harmony import */ var _use_owner_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-owner.js */ "./node_modules/@headlessui/react/dist/hooks/use-owner.js");
function N({defaultContainers:o=[],portals:r,mainTreeNodeRef:u}={}){var f;let t=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)((f=u==null?void 0:u.current)!=null?f:null),l=(0,_use_owner_js__WEBPACK_IMPORTED_MODULE_1__.useOwnerDocument)(t),c=(0,_use_event_js__WEBPACK_IMPORTED_MODULE_2__.useEvent)(()=>{var i,s,a;let n=[];for(let e of o)e!==null&&(e instanceof HTMLElement?n.push(e):"current"in e&&e.current instanceof HTMLElement&&n.push(e.current));if(r!=null&&r.current)for(let e of r.current)n.push(e);for(let e of(i=l==null?void 0:l.querySelectorAll("html > *, body > *"))!=null?i:[])e!==document.body&&e!==document.head&&e instanceof HTMLElement&&e.id!=="headlessui-portal-root"&&(e.contains(t.current)||e.contains((a=(s=t.current)==null?void 0:s.getRootNode())==null?void 0:a.host)||n.some(L=>e.contains(L))||n.push(e));return n});return{resolveContainers:c,contains:(0,_use_event_js__WEBPACK_IMPORTED_MODULE_2__.useEvent)(n=>c().some(i=>i.contains(n))),mainTreeNodeRef:t,MainTreeNode:(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>function(){return u!=null?null:react__WEBPACK_IMPORTED_MODULE_0__.createElement(_internal_hidden_js__WEBPACK_IMPORTED_MODULE_3__.Hidden,{features:_internal_hidden_js__WEBPACK_IMPORTED_MODULE_3__.Features.Hidden,ref:t})},[t,u])}}function y(){let o=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);return{mainTreeNodeRef:o,MainTreeNode:(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>function(){return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_internal_hidden_js__WEBPACK_IMPORTED_MODULE_3__.Hidden,{features:_internal_hidden_js__WEBPACK_IMPORTED_MODULE_3__.Features.Hidden,ref:o})},[o])}}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js ***!
  \**********************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
var react__WEBPACK_IMPORTED_MODULE_0___namespace_cache;
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useServerHandoffComplete: () => (/* binding */ l)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _utils_env_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/env.js */ "./node_modules/@headlessui/react/dist/utils/env.js");
function s(){let r=typeof document=="undefined";return"useSyncExternalStore" in /*#__PURE__*/ (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache || (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache = __webpack_require__.t(react__WEBPACK_IMPORTED_MODULE_0__, 2)))?(o=>o.useSyncExternalStore)(/*#__PURE__*/ (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache || (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache = __webpack_require__.t(react__WEBPACK_IMPORTED_MODULE_0__, 2))))(()=>()=>{},()=>!1,()=>!r):!1}function l(){let r=s(),[e,n]=react__WEBPACK_IMPORTED_MODULE_0__.useState(_utils_env_js__WEBPACK_IMPORTED_MODULE_1__.env.isHandoffComplete);return e&&_utils_env_js__WEBPACK_IMPORTED_MODULE_1__.env.isHandoffComplete===!1&&n(!1),react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{e!==!0&&n(!0)},[e]),react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>_utils_env_js__WEBPACK_IMPORTED_MODULE_1__.env.handoff(),[]),r?!1:e}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-store.js":
/*!****************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-store.js ***!
  \****************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useStore: () => (/* binding */ S)
/* harmony export */ });
/* harmony import */ var _use_sync_external_store_shim_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../use-sync-external-store-shim/index.js */ "./node_modules/@headlessui/react/dist/use-sync-external-store-shim/index.js");
function S(t){return (0,_use_sync_external_store_shim_index_js__WEBPACK_IMPORTED_MODULE_0__.useSyncExternalStore)(t.subscribe,t.getSnapshot,t.getSnapshot)}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-sync-refs.js":
/*!********************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-sync-refs.js ***!
  \********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   optionalRef: () => (/* binding */ T),
/* harmony export */   useSyncRefs: () => (/* binding */ y)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _use_event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-event.js");
let u=Symbol();function T(t,n=!0){return Object.assign(t,{[u]:n})}function y(...t){let n=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(t);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{n.current=t},[t]);let c=(0,_use_event_js__WEBPACK_IMPORTED_MODULE_1__.useEvent)(e=>{for(let o of n.current)o!=null&&(typeof o=="function"?o(e):o.current=e)});return t.every(e=>e==null||(e==null?void 0:e[u]))?void 0:c}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-tab-direction.js":
/*!************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-tab-direction.js ***!
  \************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Direction: () => (/* binding */ s),
/* harmony export */   useTabDirection: () => (/* binding */ n)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _use_window_event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-window-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-window-event.js");
var s=(r=>(r[r.Forwards=0]="Forwards",r[r.Backwards=1]="Backwards",r))(s||{});function n(){let e=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(0);return (0,_use_window_event_js__WEBPACK_IMPORTED_MODULE_1__.useWindowEvent)("keydown",o=>{o.key==="Tab"&&(e.current=o.shiftKey?1:0)},!0),e}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-transition.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-transition.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useTransition: () => (/* binding */ D)
/* harmony export */ });
/* harmony import */ var _components_transitions_utils_transition_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/transitions/utils/transition.js */ "./node_modules/@headlessui/react/dist/components/transitions/utils/transition.js");
/* harmony import */ var _utils_disposables_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/disposables.js */ "./node_modules/@headlessui/react/dist/utils/disposables.js");
/* harmony import */ var _use_disposables_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-disposables.js */ "./node_modules/@headlessui/react/dist/hooks/use-disposables.js");
/* harmony import */ var _use_is_mounted_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./use-is-mounted.js */ "./node_modules/@headlessui/react/dist/hooks/use-is-mounted.js");
/* harmony import */ var _use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./use-iso-morphic-effect.js */ "./node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js");
/* harmony import */ var _use_latest_value_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./use-latest-value.js */ "./node_modules/@headlessui/react/dist/hooks/use-latest-value.js");
function D({immediate:t,container:s,direction:n,classes:u,onStart:a,onStop:c}){let l=(0,_use_is_mounted_js__WEBPACK_IMPORTED_MODULE_0__.useIsMounted)(),d=(0,_use_disposables_js__WEBPACK_IMPORTED_MODULE_1__.useDisposables)(),e=(0,_use_latest_value_js__WEBPACK_IMPORTED_MODULE_2__.useLatestValue)(n);(0,_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_3__.useIsoMorphicEffect)(()=>{t&&(e.current="enter")},[t]),(0,_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_3__.useIsoMorphicEffect)(()=>{let r=(0,_utils_disposables_js__WEBPACK_IMPORTED_MODULE_4__.disposables)();d.add(r.dispose);let i=s.current;if(i&&e.current!=="idle"&&l.current)return r.dispose(),a.current(e.current),r.add((0,_components_transitions_utils_transition_js__WEBPACK_IMPORTED_MODULE_5__.transition)(i,u.current,e.current==="enter",()=>{r.dispose(),c.current(e.current)})),r.dispose},[n])}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-watch.js":
/*!****************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-watch.js ***!
  \****************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useWatch: () => (/* binding */ m)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _use_event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-event.js");
function m(u,t){let e=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([]),r=(0,_use_event_js__WEBPACK_IMPORTED_MODULE_1__.useEvent)(u);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{let o=[...e.current];for(let[n,a]of t.entries())if(e.current[n]!==a){let l=r(t,o);return e.current=t,l}},[r,...t])}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/hooks/use-window-event.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/hooks/use-window-event.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useWindowEvent: () => (/* binding */ s)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _use_latest_value_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-latest-value.js */ "./node_modules/@headlessui/react/dist/hooks/use-latest-value.js");
function s(e,r,n){let o=(0,_use_latest_value_js__WEBPACK_IMPORTED_MODULE_1__.useLatestValue)(r);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{function t(i){o.current(i)}return window.addEventListener(e,t,n),()=>window.removeEventListener(e,t,n)},[e,n])}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/internal/hidden.js":
/*!****************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/internal/hidden.js ***!
  \****************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Features: () => (/* binding */ s),
/* harmony export */   Hidden: () => (/* binding */ u)
/* harmony export */ });
/* harmony import */ var _utils_render_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/render.js */ "./node_modules/@headlessui/react/dist/utils/render.js");
let p="div";var s=(e=>(e[e.None=1]="None",e[e.Focusable=2]="Focusable",e[e.Hidden=4]="Hidden",e))(s||{});function l(d,o){var n;let{features:t=1,...e}=d,r={ref:o,"aria-hidden":(t&2)===2?!0:(n=e["aria-hidden"])!=null?n:void 0,hidden:(t&4)===4?!0:void 0,style:{position:"fixed",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...(t&4)===4&&(t&2)!==2&&{display:"none"}}};return (0,_utils_render_js__WEBPACK_IMPORTED_MODULE_0__.render)({ourProps:r,theirProps:e,slot:{},defaultTag:p,name:"Hidden"})}let u=(0,_utils_render_js__WEBPACK_IMPORTED_MODULE_0__.forwardRefWithAs)(l);


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/internal/open-closed.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/internal/open-closed.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   OpenClosedProvider: () => (/* binding */ s),
/* harmony export */   State: () => (/* binding */ d),
/* harmony export */   useOpenClosed: () => (/* binding */ u)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
let n=(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);n.displayName="OpenClosedContext";var d=(e=>(e[e.Open=1]="Open",e[e.Closed=2]="Closed",e[e.Closing=4]="Closing",e[e.Opening=8]="Opening",e))(d||{});function u(){return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(n)}function s({value:o,children:r}){return react__WEBPACK_IMPORTED_MODULE_0__.createElement(n.Provider,{value:o},r)}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/internal/portal-force-root.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/internal/portal-force-root.js ***!
  \***************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   ForcePortalRoot: () => (/* binding */ l),
/* harmony export */   usePortalRoot: () => (/* binding */ a)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
let e=(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(!1);function a(){return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(e)}function l(o){return react__WEBPACK_IMPORTED_MODULE_0__.createElement(e.Provider,{value:o.force},o.children)}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/internal/stack-context.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/internal/stack-context.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   StackMessage: () => (/* binding */ s),
/* harmony export */   StackProvider: () => (/* binding */ b),
/* harmony export */   useStackContext: () => (/* binding */ x)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _hooks_use_event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../hooks/use-event.js */ "./node_modules/@headlessui/react/dist/hooks/use-event.js");
/* harmony import */ var _hooks_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../hooks/use-iso-morphic-effect.js */ "./node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js");
let a=(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(()=>{});a.displayName="StackContext";var s=(e=>(e[e.Add=0]="Add",e[e.Remove=1]="Remove",e))(s||{});function x(){return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(a)}function b({children:i,onUpdate:r,type:e,element:n,enabled:u}){let l=x(),o=(0,_hooks_use_event_js__WEBPACK_IMPORTED_MODULE_1__.useEvent)((...t)=>{r==null||r(...t),l(...t)});return (0,_hooks_use_iso_morphic_effect_js__WEBPACK_IMPORTED_MODULE_2__.useIsoMorphicEffect)(()=>{let t=u===void 0||u===!0;return t&&o(0,e,n),()=>{t&&o(1,e,n)}},[o,e,n,u]),react__WEBPACK_IMPORTED_MODULE_0__.createElement(a.Provider,{value:o},i)}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/use-sync-external-store-shim/index.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/use-sync-external-store-shim/index.js ***!
  \***********************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
var react__WEBPACK_IMPORTED_MODULE_0___namespace_cache;
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useSyncExternalStore: () => (/* binding */ a)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _useSyncExternalStoreShimClient_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./useSyncExternalStoreShimClient.js */ "./node_modules/@headlessui/react/dist/use-sync-external-store-shim/useSyncExternalStoreShimClient.js");
/* harmony import */ var _useSyncExternalStoreShimServer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useSyncExternalStoreShimServer.js */ "./node_modules/@headlessui/react/dist/use-sync-external-store-shim/useSyncExternalStoreShimServer.js");
const r=typeof window!="undefined"&&typeof window.document!="undefined"&&typeof window.document.createElement!="undefined",s=!r,c=s?_useSyncExternalStoreShimServer_js__WEBPACK_IMPORTED_MODULE_1__.useSyncExternalStore:_useSyncExternalStoreShimClient_js__WEBPACK_IMPORTED_MODULE_2__.useSyncExternalStore,a="useSyncExternalStore" in /*#__PURE__*/ (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache || (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache = __webpack_require__.t(react__WEBPACK_IMPORTED_MODULE_0__, 2)))?(n=>n.useSyncExternalStore)(/*#__PURE__*/ (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache || (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache = __webpack_require__.t(react__WEBPACK_IMPORTED_MODULE_0__, 2)))):c;


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/use-sync-external-store-shim/useSyncExternalStoreShimClient.js":
/*!************************************************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/use-sync-external-store-shim/useSyncExternalStoreShimClient.js ***!
  \************************************************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
var react__WEBPACK_IMPORTED_MODULE_0___namespace_cache;
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useSyncExternalStore: () => (/* binding */ y)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
function i(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}const d=typeof Object.is=="function"?Object.is:i,{useState:u,useEffect:h,useLayoutEffect:f,useDebugValue:p}=/*#__PURE__*/ (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache || (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache = __webpack_require__.t(react__WEBPACK_IMPORTED_MODULE_0__, 2)));let S=!1,_=!1;function y(e,t,c){const a=t(),[{inst:n},o]=u({inst:{value:a,getSnapshot:t}});return f(()=>{n.value=a,n.getSnapshot=t,r(n)&&o({inst:n})},[e,a,t]),h(()=>(r(n)&&o({inst:n}),e(()=>{r(n)&&o({inst:n})})),[e]),p(a),a}function r(e){const t=e.getSnapshot,c=e.value;try{const a=t();return!d(c,a)}catch{return!0}}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/use-sync-external-store-shim/useSyncExternalStoreShimServer.js":
/*!************************************************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/use-sync-external-store-shim/useSyncExternalStoreShimServer.js ***!
  \************************************************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   useSyncExternalStore: () => (/* binding */ t)
/* harmony export */ });
function t(r,e,n){return e()}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/utils/active-element-history.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/utils/active-element-history.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   history: () => (/* binding */ t)
/* harmony export */ });
/* harmony import */ var _document_ready_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./document-ready.js */ "./node_modules/@headlessui/react/dist/utils/document-ready.js");
let t=[];(0,_document_ready_js__WEBPACK_IMPORTED_MODULE_0__.onDocumentReady)(()=>{function e(n){n.target instanceof HTMLElement&&n.target!==document.body&&t[0]!==n.target&&(t.unshift(n.target),t=t.filter(r=>r!=null&&r.isConnected),t.splice(10))}window.addEventListener("click",e,{capture:!0}),window.addEventListener("mousedown",e,{capture:!0}),window.addEventListener("focus",e,{capture:!0}),document.body.addEventListener("click",e,{capture:!0}),document.body.addEventListener("mousedown",e,{capture:!0}),document.body.addEventListener("focus",e,{capture:!0})});


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/utils/bugs.js":
/*!***********************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/utils/bugs.js ***!
  \***********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   isDisabledReactIssue7711: () => (/* binding */ r)
/* harmony export */ });
function r(n){let e=n.parentElement,l=null;for(;e&&!(e instanceof HTMLFieldSetElement);)e instanceof HTMLLegendElement&&(l=e),e=e.parentElement;let t=(e==null?void 0:e.getAttribute("disabled"))==="";return t&&i(l)?!1:t}function i(n){if(!n)return!1;let e=n.previousElementSibling;for(;e!==null;){if(e instanceof HTMLLegendElement)return!1;e=e.previousElementSibling}return!0}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/utils/class-names.js":
/*!******************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/utils/class-names.js ***!
  \******************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   classNames: () => (/* binding */ t)
/* harmony export */ });
function t(...r){return Array.from(new Set(r.flatMap(n=>typeof n=="string"?n.split(" "):[]))).filter(Boolean).join(" ")}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/utils/disposables.js":
/*!******************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/utils/disposables.js ***!
  \******************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   disposables: () => (/* binding */ o)
/* harmony export */ });
/* harmony import */ var _micro_task_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./micro-task.js */ "./node_modules/@headlessui/react/dist/utils/micro-task.js");
function o(){let n=[],r={addEventListener(e,t,s,a){return e.addEventListener(t,s,a),r.add(()=>e.removeEventListener(t,s,a))},requestAnimationFrame(...e){let t=requestAnimationFrame(...e);return r.add(()=>cancelAnimationFrame(t))},nextFrame(...e){return r.requestAnimationFrame(()=>r.requestAnimationFrame(...e))},setTimeout(...e){let t=setTimeout(...e);return r.add(()=>clearTimeout(t))},microTask(...e){let t={current:!0};return (0,_micro_task_js__WEBPACK_IMPORTED_MODULE_0__.microTask)(()=>{t.current&&e[0]()}),r.add(()=>{t.current=!1})},style(e,t,s){let a=e.style.getPropertyValue(t);return Object.assign(e.style,{[t]:s}),this.add(()=>{Object.assign(e.style,{[t]:a})})},group(e){let t=o();return e(t),this.add(()=>t.dispose())},add(e){return n.push(e),()=>{let t=n.indexOf(e);if(t>=0)for(let s of n.splice(t,1))s()}},dispose(){for(let e of n.splice(0))e()}};return r}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/utils/document-ready.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/utils/document-ready.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   onDocumentReady: () => (/* binding */ t)
/* harmony export */ });
function t(n){function e(){document.readyState!=="loading"&&(n(),document.removeEventListener("DOMContentLoaded",e))}typeof window!="undefined"&&typeof document!="undefined"&&(document.addEventListener("DOMContentLoaded",e),e())}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/utils/env.js":
/*!**********************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/utils/env.js ***!
  \**********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   env: () => (/* binding */ s)
/* harmony export */ });
var i=Object.defineProperty;var d=(t,e,n)=>e in t?i(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var r=(t,e,n)=>(d(t,typeof e!="symbol"?e+"":e,n),n);class o{constructor(){r(this,"current",this.detect());r(this,"handoffState","pending");r(this,"currentId",0)}set(e){this.current!==e&&(this.handoffState="pending",this.currentId=0,this.current=e)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current==="server"}get isClient(){return this.current==="client"}detect(){return typeof window=="undefined"||typeof document=="undefined"?"server":"client"}handoff(){this.handoffState==="pending"&&(this.handoffState="complete")}get isHandoffComplete(){return this.handoffState==="complete"}}let s=new o;


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/utils/focus-management.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/utils/focus-management.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Focus: () => (/* binding */ M),
/* harmony export */   FocusResult: () => (/* binding */ N),
/* harmony export */   FocusableMode: () => (/* binding */ T),
/* harmony export */   focusElement: () => (/* binding */ y),
/* harmony export */   focusFrom: () => (/* binding */ _),
/* harmony export */   focusIn: () => (/* binding */ O),
/* harmony export */   getFocusableElements: () => (/* binding */ f),
/* harmony export */   isFocusableElement: () => (/* binding */ h),
/* harmony export */   restoreFocusIfNecessary: () => (/* binding */ D),
/* harmony export */   sortByDomNode: () => (/* binding */ I)
/* harmony export */ });
/* harmony import */ var _disposables_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./disposables.js */ "./node_modules/@headlessui/react/dist/utils/disposables.js");
/* harmony import */ var _match_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./match.js */ "./node_modules/@headlessui/react/dist/utils/match.js");
/* harmony import */ var _owner_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./owner.js */ "./node_modules/@headlessui/react/dist/utils/owner.js");
let c=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map(e=>`${e}:not([tabindex='-1'])`).join(",");var M=(n=>(n[n.First=1]="First",n[n.Previous=2]="Previous",n[n.Next=4]="Next",n[n.Last=8]="Last",n[n.WrapAround=16]="WrapAround",n[n.NoScroll=32]="NoScroll",n))(M||{}),N=(o=>(o[o.Error=0]="Error",o[o.Overflow=1]="Overflow",o[o.Success=2]="Success",o[o.Underflow=3]="Underflow",o))(N||{}),F=(t=>(t[t.Previous=-1]="Previous",t[t.Next=1]="Next",t))(F||{});function f(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(c)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}var T=(t=>(t[t.Strict=0]="Strict",t[t.Loose=1]="Loose",t))(T||{});function h(e,r=0){var t;return e===((t=(0,_owner_js__WEBPACK_IMPORTED_MODULE_0__.getOwnerDocument)(e))==null?void 0:t.body)?!1:(0,_match_js__WEBPACK_IMPORTED_MODULE_1__.match)(r,{[0](){return e.matches(c)},[1](){let l=e;for(;l!==null;){if(l.matches(c))return!0;l=l.parentElement}return!1}})}function D(e){let r=(0,_owner_js__WEBPACK_IMPORTED_MODULE_0__.getOwnerDocument)(e);(0,_disposables_js__WEBPACK_IMPORTED_MODULE_2__.disposables)().nextFrame(()=>{r&&!h(r.activeElement,0)&&y(e)})}var w=(t=>(t[t.Keyboard=0]="Keyboard",t[t.Mouse=1]="Mouse",t))(w||{});typeof window!="undefined"&&typeof document!="undefined"&&(document.addEventListener("keydown",e=>{e.metaKey||e.altKey||e.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible="")},!0),document.addEventListener("click",e=>{e.detail===1?delete document.documentElement.dataset.headlessuiFocusVisible:e.detail===0&&(document.documentElement.dataset.headlessuiFocusVisible="")},!0));function y(e){e==null||e.focus({preventScroll:!0})}let S=["textarea","input"].join(",");function H(e){var r,t;return(t=(r=e==null?void 0:e.matches)==null?void 0:r.call(e,S))!=null?t:!1}function I(e,r=t=>t){return e.slice().sort((t,l)=>{let o=r(t),i=r(l);if(o===null||i===null)return 0;let n=o.compareDocumentPosition(i);return n&Node.DOCUMENT_POSITION_FOLLOWING?-1:n&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function _(e,r){return O(f(),r,{relativeTo:e})}function O(e,r,{sorted:t=!0,relativeTo:l=null,skipElements:o=[]}={}){let i=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:e.ownerDocument,n=Array.isArray(e)?t?I(e):e:f(e);o.length>0&&n.length>1&&(n=n.filter(s=>!o.includes(s))),l=l!=null?l:i.activeElement;let E=(()=>{if(r&5)return 1;if(r&10)return-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),x=(()=>{if(r&1)return 0;if(r&2)return Math.max(0,n.indexOf(l))-1;if(r&4)return Math.max(0,n.indexOf(l))+1;if(r&8)return n.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),p=r&32?{preventScroll:!0}:{},d=0,a=n.length,u;do{if(d>=a||d+a<=0)return 0;let s=x+d;if(r&16)s=(s+a)%a;else{if(s<0)return 3;if(s>=a)return 1}u=n[s],u==null||u.focus(p),d+=E}while(u!==i.activeElement);return r&6&&H(u)&&u.select(),2}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/utils/form.js":
/*!***********************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/utils/form.js ***!
  \***********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   attemptSubmit: () => (/* binding */ p),
/* harmony export */   objectToFormEntries: () => (/* binding */ e)
/* harmony export */ });
function e(i={},s=null,t=[]){for(let[r,n]of Object.entries(i))o(t,f(s,r),n);return t}function f(i,s){return i?i+"["+s+"]":s}function o(i,s,t){if(Array.isArray(t))for(let[r,n]of t.entries())o(i,f(s,r.toString()),n);else t instanceof Date?i.push([s,t.toISOString()]):typeof t=="boolean"?i.push([s,t?"1":"0"]):typeof t=="string"?i.push([s,t]):typeof t=="number"?i.push([s,`${t}`]):t==null?i.push([s,""]):e(t,s,i)}function p(i){var t,r;let s=(t=i==null?void 0:i.form)!=null?t:i.closest("form");if(s){for(let n of s.elements)if(n!==i&&(n.tagName==="INPUT"&&n.type==="submit"||n.tagName==="BUTTON"&&n.type==="submit"||n.nodeName==="INPUT"&&n.type==="image")){n.click();return}(r=s.requestSubmit)==null||r.call(s)}}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/utils/match.js":
/*!************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/utils/match.js ***!
  \************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   match: () => (/* binding */ u)
/* harmony export */ });
function u(r,n,...a){if(r in n){let e=n[r];return typeof e=="function"?e(...a):e}let t=new Error(`Tried to handle "${r}" but there is no handler defined. Only defined handlers are: ${Object.keys(n).map(e=>`"${e}"`).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,u),t}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/utils/micro-task.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/utils/micro-task.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   microTask: () => (/* binding */ t)
/* harmony export */ });
function t(e){typeof queueMicrotask=="function"?queueMicrotask(e):Promise.resolve().then(e).catch(o=>setTimeout(()=>{throw o}))}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/utils/once.js":
/*!***********************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/utils/once.js ***!
  \***********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   once: () => (/* binding */ l)
/* harmony export */ });
function l(r){let e={called:!1};return(...t)=>{if(!e.called)return e.called=!0,r(...t)}}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/utils/owner.js":
/*!************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/utils/owner.js ***!
  \************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   getOwnerDocument: () => (/* binding */ o)
/* harmony export */ });
/* harmony import */ var _env_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./env.js */ "./node_modules/@headlessui/react/dist/utils/env.js");
function o(r){return _env_js__WEBPACK_IMPORTED_MODULE_0__.env.isServer?null:r instanceof Node?r.ownerDocument:r!=null&&r.hasOwnProperty("current")&&r.current instanceof Node?r.current.ownerDocument:document}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/utils/platform.js":
/*!***************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/utils/platform.js ***!
  \***************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   isAndroid: () => (/* binding */ i),
/* harmony export */   isIOS: () => (/* binding */ t),
/* harmony export */   isMobile: () => (/* binding */ n)
/* harmony export */ });
function t(){return/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0}function i(){return/Android/gi.test(window.navigator.userAgent)}function n(){return t()||i()}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/utils/render.js":
/*!*************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/utils/render.js ***!
  \*************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   Features: () => (/* binding */ O),
/* harmony export */   RenderStrategy: () => (/* binding */ v),
/* harmony export */   compact: () => (/* binding */ x),
/* harmony export */   forwardRefWithAs: () => (/* binding */ U),
/* harmony export */   render: () => (/* binding */ C),
/* harmony export */   useMergeRefsFn: () => (/* binding */ I)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var _class_names_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./class-names.js */ "./node_modules/@headlessui/react/dist/utils/class-names.js");
/* harmony import */ var _match_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./match.js */ "./node_modules/@headlessui/react/dist/utils/match.js");
var O=(n=>(n[n.None=0]="None",n[n.RenderStrategy=1]="RenderStrategy",n[n.Static=2]="Static",n))(O||{}),v=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(v||{});function C({ourProps:r,theirProps:t,slot:e,defaultTag:n,features:o,visible:a=!0,name:f,mergeRefs:l}){l=l!=null?l:k;let s=R(t,r);if(a)return m(s,e,n,f,l);let y=o!=null?o:0;if(y&2){let{static:u=!1,...d}=s;if(u)return m(d,e,n,f,l)}if(y&1){let{unmount:u=!0,...d}=s;return (0,_match_js__WEBPACK_IMPORTED_MODULE_1__.match)(u?0:1,{[0](){return null},[1](){return m({...d,hidden:!0,style:{display:"none"}},e,n,f,l)}})}return m(s,e,n,f,l)}function m(r,t={},e,n,o){let{as:a=e,children:f,refName:l="ref",...s}=F(r,["unmount","static"]),y=r.ref!==void 0?{[l]:r.ref}:{},u=typeof f=="function"?f(t):f;"className"in s&&s.className&&typeof s.className=="function"&&(s.className=s.className(t));let d={};if(t){let i=!1,c=[];for(let[T,p]of Object.entries(t))typeof p=="boolean"&&(i=!0),p===!0&&c.push(T);i&&(d["data-headlessui-state"]=c.join(" "))}if(a===react__WEBPACK_IMPORTED_MODULE_0__.Fragment&&Object.keys(x(s)).length>0){if(!(0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(u)||Array.isArray(u)&&u.length>1)throw new Error(['Passing props on "Fragment"!',"",`The current component <${n} /> is rendering a "Fragment".`,"However we need to passthrough the following props:",Object.keys(s).map(p=>`  - ${p}`).join(`
`),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "Fragment".',"Render a single element as the child so that we can forward the props onto that element."].map(p=>`  - ${p}`).join(`
`)].join(`
`));let i=u.props,c=typeof(i==null?void 0:i.className)=="function"?(...p)=>(0,_class_names_js__WEBPACK_IMPORTED_MODULE_2__.classNames)(i==null?void 0:i.className(...p),s.className):(0,_class_names_js__WEBPACK_IMPORTED_MODULE_2__.classNames)(i==null?void 0:i.className,s.className),T=c?{className:c}:{};return (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(u,Object.assign({},R(u.props,x(F(s,["ref"]))),d,y,{ref:o(u.ref,y.ref)},T))}return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(a,Object.assign({},F(s,["ref"]),a!==react__WEBPACK_IMPORTED_MODULE_0__.Fragment&&y,a!==react__WEBPACK_IMPORTED_MODULE_0__.Fragment&&d),u)}function I(){let r=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([]),t=(0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(e=>{for(let n of r.current)n!=null&&(typeof n=="function"?n(e):n.current=e)},[]);return(...e)=>{if(!e.every(n=>n==null))return r.current=e,t}}function k(...r){return r.every(t=>t==null)?void 0:t=>{for(let e of r)e!=null&&(typeof e=="function"?e(t):e.current=t)}}function R(...r){var n;if(r.length===0)return{};if(r.length===1)return r[0];let t={},e={};for(let o of r)for(let a in o)a.startsWith("on")&&typeof o[a]=="function"?((n=e[a])!=null||(e[a]=[]),e[a].push(o[a])):t[a]=o[a];if(t.disabled||t["aria-disabled"])return Object.assign(t,Object.fromEntries(Object.keys(e).map(o=>[o,void 0])));for(let o in e)Object.assign(t,{[o](a,...f){let l=e[o];for(let s of l){if((a instanceof Event||(a==null?void 0:a.nativeEvent)instanceof Event)&&a.defaultPrevented)return;s(a,...f)}}});return t}function U(r){var t;return Object.assign((0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(r),{displayName:(t=r.displayName)!=null?t:r.name})}function x(r){let t=Object.assign({},r);for(let e in t)t[e]===void 0&&delete t[e];return t}function F(r,t=[]){let e=Object.assign({},r);for(let n of t)n in e&&delete e[n];return e}


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/utils/start-transition.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/utils/start-transition.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   startTransition: () => (/* binding */ a)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
var t;let a=(t=react__WEBPACK_IMPORTED_MODULE_0__.startTransition)!=null?t:function(i){i()};


/***/ }),

/***/ "./node_modules/@headlessui/react/dist/utils/store.js":
/*!************************************************************!*\
  !*** ./node_modules/@headlessui/react/dist/utils/store.js ***!
  \************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   createStore: () => (/* binding */ a)
/* harmony export */ });
function a(o,r){let t=o(),n=new Set;return{getSnapshot(){return t},subscribe(e){return n.add(e),()=>n.delete(e)},dispatch(e,...s){let i=r[e].call(t,...s);i&&(t=i,n.forEach(c=>c()))}}}


/***/ }),

/***/ "./node_modules/@heroicons/react/outline/esm/CheckCircleIcon.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@heroicons/react/outline/esm/CheckCircleIcon.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");


function CheckCircleIcon(props, svgRef) {
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", Object.assign({
    xmlns: "http://www.w3.org/2000/svg",
    fill: "none",
    viewBox: "0 0 24 24",
    strokeWidth: 2,
    stroke: "currentColor",
    "aria-hidden": "true",
    ref: svgRef
  }, props), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", {
    strokeLinecap: "round",
    strokeLinejoin: "round",
    d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"
  }));
}

const ForwardRef = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(CheckCircleIcon);
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);

/***/ }),

/***/ "./node_modules/@heroicons/react/solid/esm/XIcon.js":
/*!**********************************************************!*\
  !*** ./node_modules/@heroicons/react/solid/esm/XIcon.js ***!
  \**********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");


function XIcon(props, svgRef) {
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", Object.assign({
    xmlns: "http://www.w3.org/2000/svg",
    viewBox: "0 0 20 20",
    fill: "currentColor",
    "aria-hidden": "true",
    ref: svgRef
  }, props), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", {
    fillRule: "evenodd",
    d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",
    clipRule: "evenodd"
  }));
}

const ForwardRef = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(XIcon);
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);

/***/ }),

/***/ "./node_modules/dompurify/dist/purify.es.mjs":
/*!***************************************************!*\
  !*** ./node_modules/dompurify/dist/purify.es.mjs ***!
  \***************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ purify)
/* harmony export */ });
/*! @license DOMPurify 3.2.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.1/LICENSE */

const {
  entries,
  setPrototypeOf,
  isFrozen,
  getPrototypeOf,
  getOwnPropertyDescriptor
} = Object;
let {
  freeze,
  seal,
  create
} = Object; // eslint-disable-line import/no-mutable-exports
let {
  apply,
  construct
} = typeof Reflect !== 'undefined' && Reflect;
if (!freeze) {
  freeze = function freeze(x) {
    return x;
  };
}
if (!seal) {
  seal = function seal(x) {
    return x;
  };
}
if (!apply) {
  apply = function apply(fun, thisValue, args) {
    return fun.apply(thisValue, args);
  };
}
if (!construct) {
  construct = function construct(Func, args) {
    return new Func(...args);
  };
}
const arrayForEach = unapply(Array.prototype.forEach);
const arrayPop = unapply(Array.prototype.pop);
const arrayPush = unapply(Array.prototype.push);
const stringToLowerCase = unapply(String.prototype.toLowerCase);
const stringToString = unapply(String.prototype.toString);
const stringMatch = unapply(String.prototype.match);
const stringReplace = unapply(String.prototype.replace);
const stringIndexOf = unapply(String.prototype.indexOf);
const stringTrim = unapply(String.prototype.trim);
const objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);
const regExpTest = unapply(RegExp.prototype.test);
const typeErrorCreate = unconstruct(TypeError);
/**
 * Creates a new function that calls the given function with a specified thisArg and arguments.
 *
 * @param func - The function to be wrapped and called.
 * @returns A new function that calls the given function with a specified thisArg and arguments.
 */
function unapply(func) {
  return function (thisArg) {
    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
      args[_key - 1] = arguments[_key];
    }
    return apply(func, thisArg, args);
  };
}
/**
 * Creates a new function that constructs an instance of the given constructor function with the provided arguments.
 *
 * @param func - The constructor function to be wrapped and called.
 * @returns A new function that constructs an instance of the given constructor function with the provided arguments.
 */
function unconstruct(func) {
  return function () {
    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
      args[_key2] = arguments[_key2];
    }
    return construct(func, args);
  };
}
/**
 * Add properties to a lookup table
 *
 * @param set - The set to which elements will be added.
 * @param array - The array containing elements to be added to the set.
 * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.
 * @returns The modified set with added elements.
 */
function addToSet(set, array) {
  let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;
  if (setPrototypeOf) {
    // Make 'in' and truthy checks like Boolean(set.constructor)
    // independent of any properties defined on Object.prototype.
    // Prevent prototype setters from intercepting set as a this value.
    setPrototypeOf(set, null);
  }
  let l = array.length;
  while (l--) {
    let element = array[l];
    if (typeof element === 'string') {
      const lcElement = transformCaseFunc(element);
      if (lcElement !== element) {
        // Config presets (e.g. tags.js, attrs.js) are immutable.
        if (!isFrozen(array)) {
          array[l] = lcElement;
        }
        element = lcElement;
      }
    }
    set[element] = true;
  }
  return set;
}
/**
 * Clean up an array to harden against CSPP
 *
 * @param array - The array to be cleaned.
 * @returns The cleaned version of the array
 */
function cleanArray(array) {
  for (let index = 0; index < array.length; index++) {
    const isPropertyExist = objectHasOwnProperty(array, index);
    if (!isPropertyExist) {
      array[index] = null;
    }
  }
  return array;
}
/**
 * Shallow clone an object
 *
 * @param object - The object to be cloned.
 * @returns A new object that copies the original.
 */
function clone(object) {
  const newObject = create(null);
  for (const [property, value] of entries(object)) {
    const isPropertyExist = objectHasOwnProperty(object, property);
    if (isPropertyExist) {
      if (Array.isArray(value)) {
        newObject[property] = cleanArray(value);
      } else if (value && typeof value === 'object' && value.constructor === Object) {
        newObject[property] = clone(value);
      } else {
        newObject[property] = value;
      }
    }
  }
  return newObject;
}
/**
 * This method automatically checks if the prop is function or getter and behaves accordingly.
 *
 * @param object - The object to look up the getter function in its prototype chain.
 * @param prop - The property name for which to find the getter function.
 * @returns The getter function found in the prototype chain or a fallback function.
 */
function lookupGetter(object, prop) {
  while (object !== null) {
    const desc = getOwnPropertyDescriptor(object, prop);
    if (desc) {
      if (desc.get) {
        return unapply(desc.get);
      }
      if (typeof desc.value === 'function') {
        return unapply(desc.value);
      }
    }
    object = getPrototypeOf(object);
  }
  function fallbackValue() {
    return null;
  }
  return fallbackValue;
}

const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);
// SVG
const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);
const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);
// List of SVG elements that are disallowed by default.
// We still need to know them so that we can do namespace
// checks properly in case one wants to add them to
// allow-list.
const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);
const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);
// Similarly to SVG, we want to know all MathML elements,
// even those that we disallow by default.
const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);
const text = freeze(['#text']);

const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);
const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);
const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);
const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);

// eslint-disable-next-line unicorn/better-regex
const MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode
const ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm);
const TMPLIT_EXPR = seal(/\${[\w\W]*}/gm);
const DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]/); // eslint-disable-line no-useless-escape
const ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape
const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape
);
const IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
const ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g // eslint-disable-line no-control-regex
);
const DOCTYPE_NAME = seal(/^html$/i);
const CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i);

var EXPRESSIONS = /*#__PURE__*/Object.freeze({
  __proto__: null,
  ARIA_ATTR: ARIA_ATTR,
  ATTR_WHITESPACE: ATTR_WHITESPACE,
  CUSTOM_ELEMENT: CUSTOM_ELEMENT,
  DATA_ATTR: DATA_ATTR,
  DOCTYPE_NAME: DOCTYPE_NAME,
  ERB_EXPR: ERB_EXPR,
  IS_ALLOWED_URI: IS_ALLOWED_URI,
  IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,
  MUSTACHE_EXPR: MUSTACHE_EXPR,
  TMPLIT_EXPR: TMPLIT_EXPR
});

/* eslint-disable @typescript-eslint/indent */
// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType
const NODE_TYPE = {
  element: 1,
  attribute: 2,
  text: 3,
  cdataSection: 4,
  entityReference: 5,
  // Deprecated
  entityNode: 6,
  // Deprecated
  progressingInstruction: 7,
  comment: 8,
  document: 9,
  documentType: 10,
  documentFragment: 11,
  notation: 12 // Deprecated
};
const getGlobal = function getGlobal() {
  return typeof window === 'undefined' ? null : window;
};
/**
 * Creates a no-op policy for internal use only.
 * Don't export this function outside this module!
 * @param trustedTypes The policy factory.
 * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).
 * @return The policy created (or null, if Trusted Types
 * are not supported or creating the policy failed).
 */
const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {
  if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {
    return null;
  }
  // Allow the callers to control the unique policy name
  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.
  // Policy creation with duplicate names throws in Trusted Types.
  let suffix = null;
  const ATTR_NAME = 'data-tt-policy-suffix';
  if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {
    suffix = purifyHostElement.getAttribute(ATTR_NAME);
  }
  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');
  try {
    return trustedTypes.createPolicy(policyName, {
      createHTML(html) {
        return html;
      },
      createScriptURL(scriptUrl) {
        return scriptUrl;
      }
    });
  } catch (_) {
    // Policy creation failed (most likely another DOMPurify script has
    // already run). Skip creating the policy, as this will only cause errors
    // if TT are enforced.
    console.warn('TrustedTypes policy ' + policyName + ' could not be created.');
    return null;
  }
};
function createDOMPurify() {
  let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
  const DOMPurify = root => createDOMPurify(root);
  DOMPurify.version = '3.2.1';
  DOMPurify.removed = [];
  if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document) {
    // Not running in a browser, provide a factory function
    // so that you can pass your own Window
    DOMPurify.isSupported = false;
    return DOMPurify;
  }
  let {
    document
  } = window;
  const originalDocument = document;
  const currentScript = originalDocument.currentScript;
  const {
    DocumentFragment,
    HTMLTemplateElement,
    Node,
    Element,
    NodeFilter,
    NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,
    HTMLFormElement,
    DOMParser,
    trustedTypes
  } = window;
  const ElementPrototype = Element.prototype;
  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');
  const remove = lookupGetter(ElementPrototype, 'remove');
  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');
  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');
  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');
  // As per issue #47, the web-components registry is inherited by a
  // new document created via createHTMLDocument. As per the spec
  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)
  // a new empty registry is used when creating a template contents owner
  // document, so we use that as our parent document to ensure nothing
  // is inherited.
  if (typeof HTMLTemplateElement === 'function') {
    const template = document.createElement('template');
    if (template.content && template.content.ownerDocument) {
      document = template.content.ownerDocument;
    }
  }
  let trustedTypesPolicy;
  let emptyHTML = '';
  const {
    implementation,
    createNodeIterator,
    createDocumentFragment,
    getElementsByTagName
  } = document;
  const {
    importNode
  } = originalDocument;
  let hooks = {};
  /**
   * Expose whether this browser supports running the full DOMPurify.
   */
  DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;
  const {
    MUSTACHE_EXPR,
    ERB_EXPR,
    TMPLIT_EXPR,
    DATA_ATTR,
    ARIA_ATTR,
    IS_SCRIPT_OR_DATA,
    ATTR_WHITESPACE,
    CUSTOM_ELEMENT
  } = EXPRESSIONS;
  let {
    IS_ALLOWED_URI: IS_ALLOWED_URI$1
  } = EXPRESSIONS;
  /**
   * We consider the elements and attributes below to be safe. Ideally
   * don't add any new ones but feel free to remove unwanted ones.
   */
  /* allowed element names */
  let ALLOWED_TAGS = null;
  const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);
  /* Allowed attribute names */
  let ALLOWED_ATTR = null;
  const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);
  /*
   * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.
   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)
   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)
   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.
   */
  let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {
    tagNameCheck: {
      writable: true,
      configurable: false,
      enumerable: true,
      value: null
    },
    attributeNameCheck: {
      writable: true,
      configurable: false,
      enumerable: true,
      value: null
    },
    allowCustomizedBuiltInElements: {
      writable: true,
      configurable: false,
      enumerable: true,
      value: false
    }
  }));
  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */
  let FORBID_TAGS = null;
  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */
  let FORBID_ATTR = null;
  /* Decide if ARIA attributes are okay */
  let ALLOW_ARIA_ATTR = true;
  /* Decide if custom data attributes are okay */
  let ALLOW_DATA_ATTR = true;
  /* Decide if unknown protocols are okay */
  let ALLOW_UNKNOWN_PROTOCOLS = false;
  /* Decide if self-closing tags in attributes are allowed.
   * Usually removed due to a mXSS issue in jQuery 3.0 */
  let ALLOW_SELF_CLOSE_IN_ATTR = true;
  /* Output should be safe for common template engines.
   * This means, DOMPurify removes data attributes, mustaches and ERB
   */
  let SAFE_FOR_TEMPLATES = false;
  /* Output should be safe even for XML used within HTML and alike.
   * This means, DOMPurify removes comments when containing risky content.
   */
  let SAFE_FOR_XML = true;
  /* Decide if document with <html>... should be returned */
  let WHOLE_DOCUMENT = false;
  /* Track whether config is already set on this instance of DOMPurify. */
  let SET_CONFIG = false;
  /* Decide if all elements (e.g. style, script) must be children of
   * document.body. By default, browsers might move them to document.head */
  let FORCE_BODY = false;
  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html
   * string (or a TrustedHTML object if Trusted Types are supported).
   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead
   */
  let RETURN_DOM = false;
  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html
   * string  (or a TrustedHTML object if Trusted Types are supported) */
  let RETURN_DOM_FRAGMENT = false;
  /* Try to return a Trusted Type object instead of a string, return a string in
   * case Trusted Types are not supported  */
  let RETURN_TRUSTED_TYPE = false;
  /* Output should be free from DOM clobbering attacks?
   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.
   */
  let SANITIZE_DOM = true;
  /* Achieve full DOM Clobbering protection by isolating the namespace of named
   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.
   *
   * HTML/DOM spec rules that enable DOM Clobbering:
   *   - Named Access on Window (§7.3.3)
   *   - DOM Tree Accessors (§3.1.5)
   *   - Form Element Parent-Child Relations (§4.10.3)
   *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)
   *   - HTMLCollection (§4.2.10.2)
   *
   * Namespace isolation is implemented by prefixing `id` and `name` attributes
   * with a constant string, i.e., `user-content-`
   */
  let SANITIZE_NAMED_PROPS = false;
  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';
  /* Keep element content when removing element? */
  let KEEP_CONTENT = true;
  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead
   * of importing it into a new Document and returning a sanitized copy */
  let IN_PLACE = false;
  /* Allow usage of profiles like html, svg and mathMl */
  let USE_PROFILES = {};
  /* Tags to ignore content of when KEEP_CONTENT is true */
  let FORBID_CONTENTS = null;
  const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);
  /* Tags that are safe for data: URIs */
  let DATA_URI_TAGS = null;
  const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);
  /* Attributes safe for values like "javascript:" */
  let URI_SAFE_ATTRIBUTES = null;
  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);
  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';
  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';
  /* Document namespace */
  let NAMESPACE = HTML_NAMESPACE;
  let IS_EMPTY_INPUT = false;
  /* Allowed XHTML+XML namespaces */
  let ALLOWED_NAMESPACES = null;
  const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);
  let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);
  let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);
  // Certain elements are allowed in both SVG and HTML
  // namespace. We need to specify them explicitly
  // so that they don't get erroneously deleted from
  // HTML namespace.
  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);
  /* Parsing of strict XHTML documents */
  let PARSER_MEDIA_TYPE = null;
  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];
  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';
  let transformCaseFunc = null;
  /* Keep a reference to config to pass to hooks */
  let CONFIG = null;
  /* Ideally, do not touch anything below this line */
  /* ______________________________________________ */
  const formElement = document.createElement('form');
  const isRegexOrFunction = function isRegexOrFunction(testValue) {
    return testValue instanceof RegExp || testValue instanceof Function;
  };
  /**
   * _parseConfig
   *
   * @param cfg optional config literal
   */
  // eslint-disable-next-line complexity
  const _parseConfig = function _parseConfig() {
    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
    if (CONFIG && CONFIG === cfg) {
      return;
    }
    /* Shield configuration object from tampering */
    if (!cfg || typeof cfg !== 'object') {
      cfg = {};
    }
    /* Shield configuration object from prototype pollution */
    cfg = clone(cfg);
    PARSER_MEDIA_TYPE =
    // eslint-disable-next-line unicorn/prefer-includes
    SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;
    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.
    transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;
    /* Set configuration parameters */
    ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;
    ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;
    ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;
    URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;
    DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;
    FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;
    FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};
    FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};
    USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;
    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true
    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true
    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false
    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true
    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false
    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true
    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false
    RETURN_DOM = cfg.RETURN_DOM || false; // Default false
    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false
    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false
    FORCE_BODY = cfg.FORCE_BODY || false; // Default false
    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true
    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false
    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true
    IN_PLACE = cfg.IN_PLACE || false; // Default false
    IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;
    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
    MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;
    HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;
    CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};
    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {
      CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;
    }
    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {
      CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;
    }
    if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {
      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;
    }
    if (SAFE_FOR_TEMPLATES) {
      ALLOW_DATA_ATTR = false;
    }
    if (RETURN_DOM_FRAGMENT) {
      RETURN_DOM = true;
    }
    /* Parse profile info */
    if (USE_PROFILES) {
      ALLOWED_TAGS = addToSet({}, text);
      ALLOWED_ATTR = [];
      if (USE_PROFILES.html === true) {
        addToSet(ALLOWED_TAGS, html$1);
        addToSet(ALLOWED_ATTR, html);
      }
      if (USE_PROFILES.svg === true) {
        addToSet(ALLOWED_TAGS, svg$1);
        addToSet(ALLOWED_ATTR, svg);
        addToSet(ALLOWED_ATTR, xml);
      }
      if (USE_PROFILES.svgFilters === true) {
        addToSet(ALLOWED_TAGS, svgFilters);
        addToSet(ALLOWED_ATTR, svg);
        addToSet(ALLOWED_ATTR, xml);
      }
      if (USE_PROFILES.mathMl === true) {
        addToSet(ALLOWED_TAGS, mathMl$1);
        addToSet(ALLOWED_ATTR, mathMl);
        addToSet(ALLOWED_ATTR, xml);
      }
    }
    /* Merge configuration parameters */
    if (cfg.ADD_TAGS) {
      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
        ALLOWED_TAGS = clone(ALLOWED_TAGS);
      }
      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
    }
    if (cfg.ADD_ATTR) {
      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
        ALLOWED_ATTR = clone(ALLOWED_ATTR);
      }
      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
    }
    if (cfg.ADD_URI_SAFE_ATTR) {
      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);
    }
    if (cfg.FORBID_CONTENTS) {
      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
        FORBID_CONTENTS = clone(FORBID_CONTENTS);
      }
      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);
    }
    /* Add #text in case KEEP_CONTENT is set to true */
    if (KEEP_CONTENT) {
      ALLOWED_TAGS['#text'] = true;
    }
    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */
    if (WHOLE_DOCUMENT) {
      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);
    }
    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */
    if (ALLOWED_TAGS.table) {
      addToSet(ALLOWED_TAGS, ['tbody']);
      delete FORBID_TAGS.tbody;
    }
    if (cfg.TRUSTED_TYPES_POLICY) {
      if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {
        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
      }
      if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {
        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
      }
      // Overwrite existing TrustedTypes policy.
      trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;
      // Sign local variables required by `sanitize`.
      emptyHTML = trustedTypesPolicy.createHTML('');
    } else {
      // Uninitialized policy, attempt to initialize the internal dompurify policy.
      if (trustedTypesPolicy === undefined) {
        trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);
      }
      // If creating the internal policy succeeded sign internal variables.
      if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {
        emptyHTML = trustedTypesPolicy.createHTML('');
      }
    }
    // Prevent further manipulation of configuration.
    // Not available in IE8, Safari 5, etc.
    if (freeze) {
      freeze(cfg);
    }
    CONFIG = cfg;
  };
  /* Keep track of all possible SVG and MathML tags
   * so that we can perform the namespace checks
   * correctly. */
  const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);
  const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);
  /**
   * @param element a DOM element whose namespace is being checked
   * @returns Return false if the element has a
   *  namespace that a spec-compliant parser would never
   *  return. Return true otherwise.
   */
  const _checkValidNamespace = function _checkValidNamespace(element) {
    let parent = getParentNode(element);
    // In JSDOM, if we're inside shadow DOM, then parentNode
    // can be null. We just simulate parent in this case.
    if (!parent || !parent.tagName) {
      parent = {
        namespaceURI: NAMESPACE,
        tagName: 'template'
      };
    }
    const tagName = stringToLowerCase(element.tagName);
    const parentTagName = stringToLowerCase(parent.tagName);
    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {
      return false;
    }
    if (element.namespaceURI === SVG_NAMESPACE) {
      // The only way to switch from HTML namespace to SVG
      // is via <svg>. If it happens via any other tag, then
      // it should be killed.
      if (parent.namespaceURI === HTML_NAMESPACE) {
        return tagName === 'svg';
      }
      // The only way to switch from MathML to SVG is via`
      // svg if parent is either <annotation-xml> or MathML
      // text integration points.
      if (parent.namespaceURI === MATHML_NAMESPACE) {
        return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
      }
      // We only allow elements that are defined in SVG
      // spec. All others are disallowed in SVG namespace.
      return Boolean(ALL_SVG_TAGS[tagName]);
    }
    if (element.namespaceURI === MATHML_NAMESPACE) {
      // The only way to switch from HTML namespace to MathML
      // is via <math>. If it happens via any other tag, then
      // it should be killed.
      if (parent.namespaceURI === HTML_NAMESPACE) {
        return tagName === 'math';
      }
      // The only way to switch from SVG to MathML is via
      // <math> and HTML integration points
      if (parent.namespaceURI === SVG_NAMESPACE) {
        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];
      }
      // We only allow elements that are defined in MathML
      // spec. All others are disallowed in MathML namespace.
      return Boolean(ALL_MATHML_TAGS[tagName]);
    }
    if (element.namespaceURI === HTML_NAMESPACE) {
      // The only way to switch from SVG to HTML is via
      // HTML integration points, and from MathML to HTML
      // is via MathML text integration points
      if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {
        return false;
      }
      if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {
        return false;
      }
      // We disallow tags that are specific for MathML
      // or SVG and should never appear in HTML namespace
      return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
    }
    // For XHTML and XML documents that support custom namespaces
    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {
      return true;
    }
    // The code should never reach this place (this means
    // that the element somehow got namespace that is not
    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).
    // Return false just in case.
    return false;
  };
  /**
   * _forceRemove
   *
   * @param node a DOM node
   */
  const _forceRemove = function _forceRemove(node) {
    arrayPush(DOMPurify.removed, {
      element: node
    });
    try {
      // eslint-disable-next-line unicorn/prefer-dom-node-remove
      getParentNode(node).removeChild(node);
    } catch (_) {
      remove(node);
    }
  };
  /**
   * _removeAttribute
   *
   * @param name an Attribute name
   * @param element a DOM node
   */
  const _removeAttribute = function _removeAttribute(name, element) {
    try {
      arrayPush(DOMPurify.removed, {
        attribute: element.getAttributeNode(name),
        from: element
      });
    } catch (_) {
      arrayPush(DOMPurify.removed, {
        attribute: null,
        from: element
      });
    }
    element.removeAttribute(name);
    // We void attribute values for unremovable "is"" attributes
    if (name === 'is' && !ALLOWED_ATTR[name]) {
      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {
        try {
          _forceRemove(element);
        } catch (_) {}
      } else {
        try {
          element.setAttribute(name, '');
        } catch (_) {}
      }
    }
  };
  /**
   * _initDocument
   *
   * @param dirty - a string of dirty markup
   * @return a DOM, filled with the dirty markup
   */
  const _initDocument = function _initDocument(dirty) {
    /* Create a HTML document */
    let doc = null;
    let leadingWhitespace = null;
    if (FORCE_BODY) {
      dirty = '<remove></remove>' + dirty;
    } else {
      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */
      const matches = stringMatch(dirty, /^[\r\n\t ]+/);
      leadingWhitespace = matches && matches[0];
    }
    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {
      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)
      dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + '</body></html>';
    }
    const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
    /*
     * Use the DOMParser API by default, fallback later if needs be
     * DOMParser not work for svg when has multiple root element.
     */
    if (NAMESPACE === HTML_NAMESPACE) {
      try {
        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
      } catch (_) {}
    }
    /* Use createHTMLDocument in case DOMParser is not available */
    if (!doc || !doc.documentElement) {
      doc = implementation.createDocument(NAMESPACE, 'template', null);
      try {
        doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;
      } catch (_) {
        // Syntax error if dirtyPayload is invalid xml
      }
    }
    const body = doc.body || doc.documentElement;
    if (dirty && leadingWhitespace) {
      body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);
    }
    /* Work on whole document or just its body */
    if (NAMESPACE === HTML_NAMESPACE) {
      return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];
    }
    return WHOLE_DOCUMENT ? doc.documentElement : body;
  };
  /**
   * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.
   *
   * @param root The root element or node to start traversing on.
   * @return The created NodeIterator
   */
  const _createNodeIterator = function _createNodeIterator(root) {
    return createNodeIterator.call(root.ownerDocument || root, root,
    // eslint-disable-next-line no-bitwise
    NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);
  };
  /**
   * _isClobbered
   *
   * @param element element to check for clobbering attacks
   * @return true if clobbered, false if safe
   */
  const _isClobbered = function _isClobbered(element) {
    return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');
  };
  /**
   * Checks whether the given object is a DOM node.
   *
   * @param value object to check whether it's a DOM node
   * @return true is object is a DOM node
   */
  const _isNode = function _isNode(value) {
    return typeof Node === 'function' && value instanceof Node;
  };
  function _executeHook(entryPoint, currentNode, data) {
    if (!hooks[entryPoint]) {
      return;
    }
    arrayForEach(hooks[entryPoint], hook => {
      hook.call(DOMPurify, currentNode, data, CONFIG);
    });
  }
  /**
   * _sanitizeElements
   *
   * @protect nodeName
   * @protect textContent
   * @protect removeChild
   * @param currentNode to check for permission to exist
   * @return true if node was killed, false if left alive
   */
  const _sanitizeElements = function _sanitizeElements(currentNode) {
    let content = null;
    /* Execute a hook if present */
    _executeHook('beforeSanitizeElements', currentNode, null);
    /* Check if element is clobbered or can clobber */
    if (_isClobbered(currentNode)) {
      _forceRemove(currentNode);
      return true;
    }
    /* Now let's check the element's type and name */
    const tagName = transformCaseFunc(currentNode.nodeName);
    /* Execute a hook if present */
    _executeHook('uponSanitizeElement', currentNode, {
      tagName,
      allowedTags: ALLOWED_TAGS
    });
    /* Detect mXSS attempts abusing namespace confusion */
    if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w]/g, currentNode.innerHTML) && regExpTest(/<[/\w]/g, currentNode.textContent)) {
      _forceRemove(currentNode);
      return true;
    }
    /* Remove any occurrence of processing instructions */
    if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {
      _forceRemove(currentNode);
      return true;
    }
    /* Remove any kind of possibly harmful comments */
    if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\w]/g, currentNode.data)) {
      _forceRemove(currentNode);
      return true;
    }
    /* Remove element if anything forbids its presence */
    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
      /* Check if we have a custom element to handle */
      if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {
        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {
          return false;
        }
        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {
          return false;
        }
      }
      /* Keep content except for bad-listed elements */
      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
        const parentNode = getParentNode(currentNode) || currentNode.parentNode;
        const childNodes = getChildNodes(currentNode) || currentNode.childNodes;
        if (childNodes && parentNode) {
          const childCount = childNodes.length;
          for (let i = childCount - 1; i >= 0; --i) {
            const childClone = cloneNode(childNodes[i], true);
            childClone.__removalCount = (currentNode.__removalCount || 0) + 1;
            parentNode.insertBefore(childClone, getNextSibling(currentNode));
          }
        }
      }
      _forceRemove(currentNode);
      return true;
    }
    /* Check whether element has a valid namespace */
    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {
      _forceRemove(currentNode);
      return true;
    }
    /* Make sure that older browsers don't get fallback-tag mXSS */
    if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) {
      _forceRemove(currentNode);
      return true;
    }
    /* Sanitize element content to be template-safe */
    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {
      /* Get the element's text content */
      content = currentNode.textContent;
      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
        content = stringReplace(content, expr, ' ');
      });
      if (currentNode.textContent !== content) {
        arrayPush(DOMPurify.removed, {
          element: currentNode.cloneNode()
        });
        currentNode.textContent = content;
      }
    }
    /* Execute a hook if present */
    _executeHook('afterSanitizeElements', currentNode, null);
    return false;
  };
  /**
   * _isValidAttribute
   *
   * @param lcTag Lowercase tag name of containing element.
   * @param lcName Lowercase attribute name.
   * @param value Attribute value.
   * @return Returns true if `value` is valid, otherwise false.
   */
  // eslint-disable-next-line complexity
  const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {
    /* Make sure attribute cannot clobber */
    if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {
      return false;
    }
    /* Allow valid data-* attributes: At least one character after "-"
        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)
        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)
        We don't need to check the value; it's always URI safe. */
    if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
      if (
      // First condition does a very basic check if a) it's basically a valid custom element tagname AND
      // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
      // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck
      _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||
      // Alternative, second condition checks if it's an `is`-attribute, AND
      // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
      lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {
        return false;
      }
      /* Check value is safe. First, is attr inert? If so, is safe */
    } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {
      return false;
    } else ;
    return true;
  };
  /**
   * _isBasicCustomElement
   * checks if at least one dash is included in tagName, and it's not the first char
   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name
   *
   * @param tagName name of the tag of the node to sanitize
   * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.
   */
  const _isBasicCustomElement = function _isBasicCustomElement(tagName) {
    return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);
  };
  /**
   * _sanitizeAttributes
   *
   * @protect attributes
   * @protect nodeName
   * @protect removeAttribute
   * @protect setAttribute
   *
   * @param currentNode to sanitize
   */
  const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {
    /* Execute a hook if present */
    _executeHook('beforeSanitizeAttributes', currentNode, null);
    const {
      attributes
    } = currentNode;
    /* Check if we have attributes; if not we might have a text node */
    if (!attributes) {
      return;
    }
    const hookEvent = {
      attrName: '',
      attrValue: '',
      keepAttr: true,
      allowedAttributes: ALLOWED_ATTR,
      forceKeepAttr: undefined
    };
    let l = attributes.length;
    /* Go backwards over all attributes; safely remove bad ones */
    while (l--) {
      const attr = attributes[l];
      const {
        name,
        namespaceURI,
        value: attrValue
      } = attr;
      const lcName = transformCaseFunc(name);
      let value = name === 'value' ? attrValue : stringTrim(attrValue);
      /* Execute a hook if present */
      hookEvent.attrName = lcName;
      hookEvent.attrValue = value;
      hookEvent.keepAttr = true;
      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set
      _executeHook('uponSanitizeAttribute', currentNode, hookEvent);
      value = hookEvent.attrValue;
      /* Full DOM Clobbering protection via namespace isolation,
       * Prefix id and name attributes with `user-content-`
       */
      if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {
        // Remove the attribute with this value
        _removeAttribute(name, currentNode);
        // Prefix the value and later re-create the attribute with the sanitized value
        value = SANITIZE_NAMED_PROPS_PREFIX + value;
      }
      /* Work around a security issue with comments inside attributes */
      if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title)/i, value)) {
        _removeAttribute(name, currentNode);
        continue;
      }
      /* Did the hooks approve of the attribute? */
      if (hookEvent.forceKeepAttr) {
        continue;
      }
      /* Remove attribute */
      _removeAttribute(name, currentNode);
      /* Did the hooks approve of the attribute? */
      if (!hookEvent.keepAttr) {
        continue;
      }
      /* Work around a security issue in jQuery 3.0 */
      if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) {
        _removeAttribute(name, currentNode);
        continue;
      }
      /* Sanitize attribute content to be template-safe */
      if (SAFE_FOR_TEMPLATES) {
        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
          value = stringReplace(value, expr, ' ');
        });
      }
      /* Is `value` valid for this attribute? */
      const lcTag = transformCaseFunc(currentNode.nodeName);
      if (!_isValidAttribute(lcTag, lcName, value)) {
        continue;
      }
      /* Handle attributes that require Trusted Types */
      if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {
        if (namespaceURI) ; else {
          switch (trustedTypes.getAttributeType(lcTag, lcName)) {
            case 'TrustedHTML':
              {
                value = trustedTypesPolicy.createHTML(value);
                break;
              }
            case 'TrustedScriptURL':
              {
                value = trustedTypesPolicy.createScriptURL(value);
                break;
              }
          }
        }
      }
      /* Handle invalid data-* attribute set by try-catching it */
      try {
        if (namespaceURI) {
          currentNode.setAttributeNS(namespaceURI, name, value);
        } else {
          /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */
          currentNode.setAttribute(name, value);
        }
        if (_isClobbered(currentNode)) {
          _forceRemove(currentNode);
        } else {
          arrayPop(DOMPurify.removed);
        }
      } catch (_) {}
    }
    /* Execute a hook if present */
    _executeHook('afterSanitizeAttributes', currentNode, null);
  };
  /**
   * _sanitizeShadowDOM
   *
   * @param fragment to iterate over recursively
   */
  const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {
    let shadowNode = null;
    const shadowIterator = _createNodeIterator(fragment);
    /* Execute a hook if present */
    _executeHook('beforeSanitizeShadowDOM', fragment, null);
    while (shadowNode = shadowIterator.nextNode()) {
      /* Execute a hook if present */
      _executeHook('uponSanitizeShadowNode', shadowNode, null);
      /* Sanitize tags and elements */
      if (_sanitizeElements(shadowNode)) {
        continue;
      }
      /* Deep shadow DOM detected */
      if (shadowNode.content instanceof DocumentFragment) {
        _sanitizeShadowDOM(shadowNode.content);
      }
      /* Check attributes, sanitize if necessary */
      _sanitizeAttributes(shadowNode);
    }
    /* Execute a hook if present */
    _executeHook('afterSanitizeShadowDOM', fragment, null);
  };
  // eslint-disable-next-line complexity
  DOMPurify.sanitize = function (dirty) {
    let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
    let body = null;
    let importedNode = null;
    let currentNode = null;
    let returnNode = null;
    /* Make sure we have a string to sanitize.
      DO NOT return early, as this will return the wrong type if
      the user has requested a DOM object rather than a string */
    IS_EMPTY_INPUT = !dirty;
    if (IS_EMPTY_INPUT) {
      dirty = '<!-->';
    }
    /* Stringify, in case dirty is an object */
    if (typeof dirty !== 'string' && !_isNode(dirty)) {
      if (typeof dirty.toString === 'function') {
        dirty = dirty.toString();
        if (typeof dirty !== 'string') {
          throw typeErrorCreate('dirty is not a string, aborting');
        }
      } else {
        throw typeErrorCreate('toString is not a function');
      }
    }
    /* Return dirty HTML if DOMPurify cannot run */
    if (!DOMPurify.isSupported) {
      return dirty;
    }
    /* Assign config vars */
    if (!SET_CONFIG) {
      _parseConfig(cfg);
    }
    /* Clean up removed elements */
    DOMPurify.removed = [];
    /* Check if dirty is correctly typed for IN_PLACE */
    if (typeof dirty === 'string') {
      IN_PLACE = false;
    }
    if (IN_PLACE) {
      /* Do some early pre-sanitization to avoid unsafe root nodes */
      if (dirty.nodeName) {
        const tagName = transformCaseFunc(dirty.nodeName);
        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
          throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');
        }
      }
    } else if (dirty instanceof Node) {
      /* If dirty is a DOM element, append to an empty document to avoid
         elements being stripped by the parser */
      body = _initDocument('<!---->');
      importedNode = body.ownerDocument.importNode(dirty, true);
      if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {
        /* Node is already a body, use as is */
        body = importedNode;
      } else if (importedNode.nodeName === 'HTML') {
        body = importedNode;
      } else {
        // eslint-disable-next-line unicorn/prefer-dom-node-append
        body.appendChild(importedNode);
      }
    } else {
      /* Exit directly if we have nothing to do */
      if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&
      // eslint-disable-next-line unicorn/prefer-includes
      dirty.indexOf('<') === -1) {
        return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;
      }
      /* Initialize the document to work on */
      body = _initDocument(dirty);
      /* Check we have a DOM node from the data */
      if (!body) {
        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';
      }
    }
    /* Remove first element node (ours) if FORCE_BODY is set */
    if (body && FORCE_BODY) {
      _forceRemove(body.firstChild);
    }
    /* Get node iterator */
    const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);
    /* Now start iterating over the created document */
    while (currentNode = nodeIterator.nextNode()) {
      /* Sanitize tags and elements */
      if (_sanitizeElements(currentNode)) {
        continue;
      }
      /* Shadow DOM detected, sanitize it */
      if (currentNode.content instanceof DocumentFragment) {
        _sanitizeShadowDOM(currentNode.content);
      }
      /* Check attributes, sanitize if necessary */
      _sanitizeAttributes(currentNode);
    }
    /* If we sanitized `dirty` in-place, return it. */
    if (IN_PLACE) {
      return dirty;
    }
    /* Return sanitized string or DOM */
    if (RETURN_DOM) {
      if (RETURN_DOM_FRAGMENT) {
        returnNode = createDocumentFragment.call(body.ownerDocument);
        while (body.firstChild) {
          // eslint-disable-next-line unicorn/prefer-dom-node-append
          returnNode.appendChild(body.firstChild);
        }
      } else {
        returnNode = body;
      }
      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {
        /*
          AdoptNode() is not used because internal state is not reset
          (e.g. the past names map of a HTMLFormElement), this is safe
          in theory but we would rather not risk another attack vector.
          The state that is cloned by importNode() is explicitly defined
          by the specs.
        */
        returnNode = importNode.call(originalDocument, returnNode, true);
      }
      return returnNode;
    }
    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
    /* Serialize doctype if allowed */
    if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {
      serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\n' + serializedHTML;
    }
    /* Sanitize final string template-safe */
    if (SAFE_FOR_TEMPLATES) {
      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
        serializedHTML = stringReplace(serializedHTML, expr, ' ');
      });
    }
    return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;
  };
  DOMPurify.setConfig = function () {
    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
    _parseConfig(cfg);
    SET_CONFIG = true;
  };
  DOMPurify.clearConfig = function () {
    CONFIG = null;
    SET_CONFIG = false;
  };
  DOMPurify.isValidAttribute = function (tag, attr, value) {
    /* Initialize shared config vars if necessary. */
    if (!CONFIG) {
      _parseConfig({});
    }
    const lcTag = transformCaseFunc(tag);
    const lcName = transformCaseFunc(attr);
    return _isValidAttribute(lcTag, lcName, value);
  };
  DOMPurify.addHook = function (entryPoint, hookFunction) {
    if (typeof hookFunction !== 'function') {
      return;
    }
    hooks[entryPoint] = hooks[entryPoint] || [];
    arrayPush(hooks[entryPoint], hookFunction);
  };
  DOMPurify.removeHook = function (entryPoint) {
    if (hooks[entryPoint]) {
      return arrayPop(hooks[entryPoint]);
    }
  };
  DOMPurify.removeHooks = function (entryPoint) {
    if (hooks[entryPoint]) {
      hooks[entryPoint] = [];
    }
  };
  DOMPurify.removeAllHooks = function () {
    hooks = {};
  };
  return DOMPurify;
}
var purify = createDOMPurify();


//# sourceMappingURL=purify.es.mjs.map


/***/ }),

/***/ "./node_modules/dom-serializer/foreignNames.json":
/*!*******************************************************!*\
  !*** ./node_modules/dom-serializer/foreignNames.json ***!
  \*******************************************************/
/***/ ((module) => {

"use strict";
module.exports = /*#__PURE__*/JSON.parse('{"elementNames":{"altglyph":"altGlyph","altglyphdef":"altGlyphDef","altglyphitem":"altGlyphItem","animatecolor":"animateColor","animatemotion":"animateMotion","animatetransform":"animateTransform","clippath":"clipPath","feblend":"feBlend","fecolormatrix":"feColorMatrix","fecomponenttransfer":"feComponentTransfer","fecomposite":"feComposite","feconvolvematrix":"feConvolveMatrix","fediffuselighting":"feDiffuseLighting","fedisplacementmap":"feDisplacementMap","fedistantlight":"feDistantLight","fedropshadow":"feDropShadow","feflood":"feFlood","fefunca":"feFuncA","fefuncb":"feFuncB","fefuncg":"feFuncG","fefuncr":"feFuncR","fegaussianblur":"feGaussianBlur","feimage":"feImage","femerge":"feMerge","femergenode":"feMergeNode","femorphology":"feMorphology","feoffset":"feOffset","fepointlight":"fePointLight","fespecularlighting":"feSpecularLighting","fespotlight":"feSpotLight","fetile":"feTile","feturbulence":"feTurbulence","foreignobject":"foreignObject","glyphref":"glyphRef","lineargradient":"linearGradient","radialgradient":"radialGradient","textpath":"textPath"},"attributeNames":{"definitionurl":"definitionURL","attributename":"attributeName","attributetype":"attributeType","basefrequency":"baseFrequency","baseprofile":"baseProfile","calcmode":"calcMode","clippathunits":"clipPathUnits","diffuseconstant":"diffuseConstant","edgemode":"edgeMode","filterunits":"filterUnits","glyphref":"glyphRef","gradienttransform":"gradientTransform","gradientunits":"gradientUnits","kernelmatrix":"kernelMatrix","kernelunitlength":"kernelUnitLength","keypoints":"keyPoints","keysplines":"keySplines","keytimes":"keyTimes","lengthadjust":"lengthAdjust","limitingconeangle":"limitingConeAngle","markerheight":"markerHeight","markerunits":"markerUnits","markerwidth":"markerWidth","maskcontentunits":"maskContentUnits","maskunits":"maskUnits","numoctaves":"numOctaves","pathlength":"pathLength","patterncontentunits":"patternContentUnits","patterntransform":"patternTransform","patternunits":"patternUnits","pointsatx":"pointsAtX","pointsaty":"pointsAtY","pointsatz":"pointsAtZ","preservealpha":"preserveAlpha","preserveaspectratio":"preserveAspectRatio","primitiveunits":"primitiveUnits","refx":"refX","refy":"refY","repeatcount":"repeatCount","repeatdur":"repeatDur","requiredextensions":"requiredExtensions","requiredfeatures":"requiredFeatures","specularconstant":"specularConstant","specularexponent":"specularExponent","spreadmethod":"spreadMethod","startoffset":"startOffset","stddeviation":"stdDeviation","stitchtiles":"stitchTiles","surfacescale":"surfaceScale","systemlanguage":"systemLanguage","tablevalues":"tableValues","targetx":"targetX","targety":"targetY","textlength":"textLength","viewbox":"viewBox","viewtarget":"viewTarget","xchannelselector":"xChannelSelector","ychannelselector":"yChannelSelector","zoomandpan":"zoomAndPan"}}');

/***/ }),

/***/ "./node_modules/dom-serializer/node_modules/entities/lib/maps/decode.json":
/*!********************************************************************************!*\
  !*** ./node_modules/dom-serializer/node_modules/entities/lib/maps/decode.json ***!
  \********************************************************************************/
/***/ ((module) => {

"use strict";
module.exports = /*#__PURE__*/JSON.parse('{"0":65533,"128":8364,"130":8218,"131":402,"132":8222,"133":8230,"134":8224,"135":8225,"136":710,"137":8240,"138":352,"139":8249,"140":338,"142":381,"145":8216,"146":8217,"147":8220,"148":8221,"149":8226,"150":8211,"151":8212,"152":732,"153":8482,"154":353,"155":8250,"156":339,"158":382,"159":376}');

/***/ }),

/***/ "./node_modules/dom-serializer/node_modules/entities/lib/maps/entities.json":
/*!**********************************************************************************!*\
  !*** ./node_modules/dom-serializer/node_modules/entities/lib/maps/entities.json ***!
  \**********************************************************************************/
/***/ ((module) => {

"use strict";
module.exports = /*#__PURE__*/JSON.parse('{"Aacute":"Á","aacute":"á","Abreve":"Ă","abreve":"ă","ac":"∾","acd":"∿","acE":"∾̳","Acirc":"Â","acirc":"â","acute":"´","Acy":"А","acy":"а","AElig":"Æ","aelig":"æ","af":"⁡","Afr":"𝔄","afr":"𝔞","Agrave":"À","agrave":"à","alefsym":"ℵ","aleph":"ℵ","Alpha":"Α","alpha":"α","Amacr":"Ā","amacr":"ā","amalg":"⨿","amp":"&","AMP":"&","andand":"⩕","And":"⩓","and":"∧","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angmsd":"∡","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","Aogon":"Ą","aogon":"ą","Aopf":"𝔸","aopf":"𝕒","apacir":"⩯","ap":"≈","apE":"⩰","ape":"≊","apid":"≋","apos":"\'","ApplyFunction":"⁡","approx":"≈","approxeq":"≊","Aring":"Å","aring":"å","Ascr":"𝒜","ascr":"𝒶","Assign":"≔","ast":"*","asymp":"≈","asympeq":"≍","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","awconint":"∳","awint":"⨑","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","Backslash":"∖","Barv":"⫧","barvee":"⊽","barwed":"⌅","Barwed":"⌆","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","Bcy":"Б","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","Because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","Bernoullis":"ℬ","Beta":"Β","beta":"β","beth":"ℶ","between":"≬","Bfr":"𝔅","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bNot":"⫭","bnot":"⌐","Bopf":"𝔹","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxbox":"⧉","boxdl":"┐","boxdL":"╕","boxDl":"╖","boxDL":"╗","boxdr":"┌","boxdR":"╒","boxDr":"╓","boxDR":"╔","boxh":"─","boxH":"═","boxhd":"┬","boxHd":"╤","boxhD":"╥","boxHD":"╦","boxhu":"┴","boxHu":"╧","boxhU":"╨","boxHU":"╩","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxul":"┘","boxuL":"╛","boxUl":"╜","boxUL":"╝","boxur":"└","boxuR":"╘","boxUr":"╙","boxUR":"╚","boxv":"│","boxV":"║","boxvh":"┼","boxvH":"╪","boxVh":"╫","boxVH":"╬","boxvl":"┤","boxvL":"╡","boxVl":"╢","boxVL":"╣","boxvr":"├","boxvR":"╞","boxVr":"╟","boxVR":"╠","bprime":"‵","breve":"˘","Breve":"˘","brvbar":"¦","bscr":"𝒷","Bscr":"ℬ","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsolb":"⧅","bsol":"\\\\","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","Bumpeq":"≎","bumpeq":"≏","Cacute":"Ć","cacute":"ć","capand":"⩄","capbrcup":"⩉","capcap":"⩋","cap":"∩","Cap":"⋒","capcup":"⩇","capdot":"⩀","CapitalDifferentialD":"ⅅ","caps":"∩︀","caret":"⁁","caron":"ˇ","Cayleys":"ℭ","ccaps":"⩍","Ccaron":"Č","ccaron":"č","Ccedil":"Ç","ccedil":"ç","Ccirc":"Ĉ","ccirc":"ĉ","Cconint":"∰","ccups":"⩌","ccupssm":"⩐","Cdot":"Ċ","cdot":"ċ","cedil":"¸","Cedilla":"¸","cemptyv":"⦲","cent":"¢","centerdot":"·","CenterDot":"·","cfr":"𝔠","Cfr":"ℭ","CHcy":"Ч","chcy":"ч","check":"✓","checkmark":"✓","Chi":"Χ","chi":"χ","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","CircleDot":"⊙","circledR":"®","circledS":"Ⓢ","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","cir":"○","cirE":"⧃","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","clubs":"♣","clubsuit":"♣","colon":":","Colon":"∷","Colone":"⩴","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","Congruent":"≡","conint":"∮","Conint":"∯","ContourIntegral":"∮","copf":"𝕔","Copf":"ℂ","coprod":"∐","Coproduct":"∐","copy":"©","COPY":"©","copysr":"℗","CounterClockwiseContourIntegral":"∳","crarr":"↵","cross":"✗","Cross":"⨯","Cscr":"𝒞","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cupbrcap":"⩈","cupcap":"⩆","CupCap":"≍","cup":"∪","Cup":"⋓","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dagger":"†","Dagger":"‡","daleth":"ℸ","darr":"↓","Darr":"↡","dArr":"⇓","dash":"‐","Dashv":"⫤","dashv":"⊣","dbkarow":"⤏","dblac":"˝","Dcaron":"Ď","dcaron":"ď","Dcy":"Д","dcy":"д","ddagger":"‡","ddarr":"⇊","DD":"ⅅ","dd":"ⅆ","DDotrahd":"⤑","ddotseq":"⩷","deg":"°","Del":"∇","Delta":"Δ","delta":"δ","demptyv":"⦱","dfisht":"⥿","Dfr":"𝔇","dfr":"𝔡","dHar":"⥥","dharl":"⇃","dharr":"⇂","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","diam":"⋄","diamond":"⋄","Diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","DifferentialD":"ⅆ","digamma":"ϝ","disin":"⋲","div":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","DJcy":"Ђ","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","Dopf":"𝔻","dopf":"𝕕","Dot":"¨","dot":"˙","DotDot":"⃜","doteq":"≐","doteqdot":"≑","DotEqual":"≐","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrowBar":"⤓","downarrow":"↓","DownArrow":"↓","Downarrow":"⇓","DownArrowUpArrow":"⇵","DownBreve":"̑","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVectorBar":"⥖","DownLeftVector":"↽","DownRightTeeVector":"⥟","DownRightVectorBar":"⥗","DownRightVector":"⇁","DownTeeArrow":"↧","DownTee":"⊤","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","Dscr":"𝒟","dscr":"𝒹","DScy":"Ѕ","dscy":"ѕ","dsol":"⧶","Dstrok":"Đ","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","DZcy":"Џ","dzcy":"џ","dzigrarr":"⟿","Eacute":"É","eacute":"é","easter":"⩮","Ecaron":"Ě","ecaron":"ě","Ecirc":"Ê","ecirc":"ê","ecir":"≖","ecolon":"≕","Ecy":"Э","ecy":"э","eDDot":"⩷","Edot":"Ė","edot":"ė","eDot":"≑","ee":"ⅇ","efDot":"≒","Efr":"𝔈","efr":"𝔢","eg":"⪚","Egrave":"È","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","Element":"∈","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","Emacr":"Ē","emacr":"ē","empty":"∅","emptyset":"∅","EmptySmallSquare":"◻","emptyv":"∅","EmptyVerySmallSquare":"▫","emsp13":" ","emsp14":" ","emsp":" ","ENG":"Ŋ","eng":"ŋ","ensp":" ","Eogon":"Ę","eogon":"ę","Eopf":"𝔼","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","Epsilon":"Ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","Equal":"⩵","equals":"=","EqualTilde":"≂","equest":"≟","Equilibrium":"⇌","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erarr":"⥱","erDot":"≓","escr":"ℯ","Escr":"ℰ","esdot":"≐","Esim":"⩳","esim":"≂","Eta":"Η","eta":"η","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","euro":"€","excl":"!","exist":"∃","Exists":"∃","expectation":"ℰ","exponentiale":"ⅇ","ExponentialE":"ⅇ","fallingdotseq":"≒","Fcy":"Ф","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","Ffr":"𝔉","ffr":"𝔣","filig":"fi","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","Fopf":"𝔽","fopf":"𝕗","forall":"∀","ForAll":"∀","fork":"⋔","forkv":"⫙","Fouriertrf":"ℱ","fpartint":"⨍","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","Fscr":"ℱ","gacute":"ǵ","Gamma":"Γ","gamma":"γ","Gammad":"Ϝ","gammad":"ϝ","gap":"⪆","Gbreve":"Ğ","gbreve":"ğ","Gcedil":"Ģ","Gcirc":"Ĝ","gcirc":"ĝ","Gcy":"Г","gcy":"г","Gdot":"Ġ","gdot":"ġ","ge":"≥","gE":"≧","gEl":"⪌","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","gescc":"⪩","ges":"⩾","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","Gfr":"𝔊","gfr":"𝔤","gg":"≫","Gg":"⋙","ggg":"⋙","gimel":"ℷ","GJcy":"Ѓ","gjcy":"ѓ","gla":"⪥","gl":"≷","glE":"⪒","glj":"⪤","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gnE":"≩","gneq":"⪈","gneqq":"≩","gnsim":"⋧","Gopf":"𝔾","gopf":"𝕘","grave":"`","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","gtcc":"⪧","gtcir":"⩺","gt":">","GT":">","Gt":"≫","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","Hacek":"ˇ","hairsp":" ","half":"½","hamilt":"ℋ","HARDcy":"Ъ","hardcy":"ъ","harrcir":"⥈","harr":"↔","hArr":"⇔","harrw":"↭","Hat":"^","hbar":"ℏ","Hcirc":"Ĥ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","Hfr":"ℌ","HilbertSpace":"ℋ","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","Hopf":"ℍ","horbar":"―","HorizontalLine":"─","hscr":"𝒽","Hscr":"ℋ","hslash":"ℏ","Hstrok":"Ħ","hstrok":"ħ","HumpDownHump":"≎","HumpEqual":"≏","hybull":"⁃","hyphen":"‐","Iacute":"Í","iacute":"í","ic":"⁣","Icirc":"Î","icirc":"î","Icy":"И","icy":"и","Idot":"İ","IEcy":"Е","iecy":"е","iexcl":"¡","iff":"⇔","ifr":"𝔦","Ifr":"ℑ","Igrave":"Ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","IJlig":"IJ","ijlig":"ij","Imacr":"Ī","imacr":"ī","image":"ℑ","ImaginaryI":"ⅈ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","Im":"ℑ","imof":"⊷","imped":"Ƶ","Implies":"⇒","incare":"℅","in":"∈","infin":"∞","infintie":"⧝","inodot":"ı","intcal":"⊺","int":"∫","Int":"∬","integers":"ℤ","Integral":"∫","intercal":"⊺","Intersection":"⋂","intlarhk":"⨗","intprod":"⨼","InvisibleComma":"⁣","InvisibleTimes":"⁢","IOcy":"Ё","iocy":"ё","Iogon":"Į","iogon":"į","Iopf":"𝕀","iopf":"𝕚","Iota":"Ι","iota":"ι","iprod":"⨼","iquest":"¿","iscr":"𝒾","Iscr":"ℐ","isin":"∈","isindot":"⋵","isinE":"⋹","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"⁢","Itilde":"Ĩ","itilde":"ĩ","Iukcy":"І","iukcy":"і","Iuml":"Ï","iuml":"ï","Jcirc":"Ĵ","jcirc":"ĵ","Jcy":"Й","jcy":"й","Jfr":"𝔍","jfr":"𝔧","jmath":"ȷ","Jopf":"𝕁","jopf":"𝕛","Jscr":"𝒥","jscr":"𝒿","Jsercy":"Ј","jsercy":"ј","Jukcy":"Є","jukcy":"є","Kappa":"Κ","kappa":"κ","kappav":"ϰ","Kcedil":"Ķ","kcedil":"ķ","Kcy":"К","kcy":"к","Kfr":"𝔎","kfr":"𝔨","kgreen":"ĸ","KHcy":"Х","khcy":"х","KJcy":"Ќ","kjcy":"ќ","Kopf":"𝕂","kopf":"𝕜","Kscr":"𝒦","kscr":"𝓀","lAarr":"⇚","Lacute":"Ĺ","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","Lambda":"Λ","lambda":"λ","lang":"⟨","Lang":"⟪","langd":"⦑","langle":"⟨","lap":"⪅","Laplacetrf":"ℒ","laquo":"«","larrb":"⇤","larrbfs":"⤟","larr":"←","Larr":"↞","lArr":"⇐","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","latail":"⤙","lAtail":"⤛","lat":"⪫","late":"⪭","lates":"⪭︀","lbarr":"⤌","lBarr":"⤎","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","Lcaron":"Ľ","lcaron":"ľ","Lcedil":"Ļ","lcedil":"ļ","lceil":"⌈","lcub":"{","Lcy":"Л","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","lE":"≦","LeftAngleBracket":"⟨","LeftArrowBar":"⇤","leftarrow":"←","LeftArrow":"←","Leftarrow":"⇐","LeftArrowRightArrow":"⇆","leftarrowtail":"↢","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVectorBar":"⥙","LeftDownVector":"⇃","LeftFloor":"⌊","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","LeftRightArrow":"↔","Leftrightarrow":"⇔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","LeftRightVector":"⥎","LeftTeeArrow":"↤","LeftTee":"⊣","LeftTeeVector":"⥚","leftthreetimes":"⋋","LeftTriangleBar":"⧏","LeftTriangle":"⊲","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVectorBar":"⥘","LeftUpVector":"↿","LeftVectorBar":"⥒","LeftVector":"↼","lEg":"⪋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","lescc":"⪨","les":"⩽","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","lessgtr":"≶","LessLess":"⪡","lesssim":"≲","LessSlantEqual":"⩽","LessTilde":"≲","lfisht":"⥼","lfloor":"⌊","Lfr":"𝔏","lfr":"𝔩","lg":"≶","lgE":"⪑","lHar":"⥢","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","LJcy":"Љ","ljcy":"љ","llarr":"⇇","ll":"≪","Ll":"⋘","llcorner":"⌞","Lleftarrow":"⇚","llhard":"⥫","lltri":"◺","Lmidot":"Ŀ","lmidot":"ŀ","lmoustache":"⎰","lmoust":"⎰","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lnE":"≨","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","LongLeftArrow":"⟵","Longleftarrow":"⟸","longleftrightarrow":"⟷","LongLeftRightArrow":"⟷","Longleftrightarrow":"⟺","longmapsto":"⟼","longrightarrow":"⟶","LongRightArrow":"⟶","Longrightarrow":"⟹","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","Lopf":"𝕃","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","LowerLeftArrow":"↙","LowerRightArrow":"↘","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"‎","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","Lscr":"ℒ","lsh":"↰","Lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","Lstrok":"Ł","lstrok":"ł","ltcc":"⪦","ltcir":"⩹","lt":"<","LT":"<","Lt":"≪","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltri":"◃","ltrie":"⊴","ltrif":"◂","ltrPar":"⦖","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","macr":"¯","male":"♂","malt":"✠","maltese":"✠","Map":"⤅","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","Mcy":"М","mcy":"м","mdash":"—","mDDot":"∺","measuredangle":"∡","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","mfr":"𝔪","mho":"℧","micro":"µ","midast":"*","midcir":"⫰","mid":"∣","middot":"·","minusb":"⊟","minus":"−","minusd":"∸","minusdu":"⨪","MinusPlus":"∓","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","Mopf":"𝕄","mopf":"𝕞","mp":"∓","mscr":"𝓂","Mscr":"ℳ","mstpos":"∾","Mu":"Μ","mu":"μ","multimap":"⊸","mumap":"⊸","nabla":"∇","Nacute":"Ń","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natural":"♮","naturals":"ℕ","natur":"♮","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","Ncaron":"Ň","ncaron":"ň","Ncedil":"Ņ","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","Ncy":"Н","ncy":"н","ndash":"–","nearhk":"⤤","nearr":"↗","neArr":"⇗","nearrow":"↗","ne":"≠","nedot":"≐̸","NegativeMediumSpace":"​","NegativeThickSpace":"​","NegativeThinSpace":"​","NegativeVeryThinSpace":"​","nequiv":"≢","nesear":"⤨","nesim":"≂̸","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","nexist":"∄","nexists":"∄","Nfr":"𝔑","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","nGg":"⋙̸","ngsim":"≵","nGt":"≫⃒","ngt":"≯","ngtr":"≯","nGtv":"≫̸","nharr":"↮","nhArr":"⇎","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","NJcy":"Њ","njcy":"њ","nlarr":"↚","nlArr":"⇍","nldr":"‥","nlE":"≦̸","nle":"≰","nleftarrow":"↚","nLeftarrow":"⇍","nleftrightarrow":"↮","nLeftrightarrow":"⇎","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nLl":"⋘̸","nlsim":"≴","nLt":"≪⃒","nlt":"≮","nltri":"⋪","nltrie":"⋬","nLtv":"≪̸","nmid":"∤","NoBreak":"⁠","NonBreakingSpace":" ","nopf":"𝕟","Nopf":"ℕ","Not":"⫬","not":"¬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","notin":"∉","notindot":"⋵̸","notinE":"⋹̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","NotLeftTriangleBar":"⧏̸","NotLeftTriangle":"⋪","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangleBar":"⧐̸","NotRightTriangle":"⋫","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","nparallel":"∦","npar":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","nprec":"⊀","npreceq":"⪯̸","npre":"⪯̸","nrarrc":"⤳̸","nrarr":"↛","nrArr":"⇏","nrarrw":"↝̸","nrightarrow":"↛","nRightarrow":"⇏","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","Nscr":"𝒩","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","Ntilde":"Ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","Nu":"Ν","nu":"ν","num":"#","numero":"№","numsp":" ","nvap":"≍⃒","nvdash":"⊬","nvDash":"⊭","nVdash":"⊮","nVDash":"⊯","nvge":"≥⃒","nvgt":">⃒","nvHarr":"⤄","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwarhk":"⤣","nwarr":"↖","nwArr":"⇖","nwarrow":"↖","nwnear":"⤧","Oacute":"Ó","oacute":"ó","oast":"⊛","Ocirc":"Ô","ocirc":"ô","ocir":"⊚","Ocy":"О","ocy":"о","odash":"⊝","Odblac":"Ő","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","OElig":"Œ","oelig":"œ","ofcir":"⦿","Ofr":"𝔒","ofr":"𝔬","ogon":"˛","Ograve":"Ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","Omacr":"Ō","omacr":"ō","Omega":"Ω","omega":"ω","Omicron":"Ο","omicron":"ο","omid":"⦶","ominus":"⊖","Oopf":"𝕆","oopf":"𝕠","opar":"⦷","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","operp":"⦹","oplus":"⊕","orarr":"↻","Or":"⩔","or":"∨","ord":"⩝","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oS":"Ⓢ","Oscr":"𝒪","oscr":"ℴ","Oslash":"Ø","oslash":"ø","osol":"⊘","Otilde":"Õ","otilde":"õ","otimesas":"⨶","Otimes":"⨷","otimes":"⊗","Ouml":"Ö","ouml":"ö","ovbar":"⌽","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","para":"¶","parallel":"∥","par":"∥","parsim":"⫳","parsl":"⫽","part":"∂","PartialD":"∂","Pcy":"П","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","Pfr":"𝔓","pfr":"𝔭","Phi":"Φ","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","Pi":"Π","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plus":"+","plusdo":"∔","plusdu":"⨥","pluse":"⩲","PlusMinus":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","Poincareplane":"ℌ","pointint":"⨕","popf":"𝕡","Popf":"ℙ","pound":"£","prap":"⪷","Pr":"⪻","pr":"≺","prcue":"≼","precapprox":"⪷","prec":"≺","preccurlyeq":"≼","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","pre":"⪯","prE":"⪳","precsim":"≾","prime":"′","Prime":"″","primes":"ℙ","prnap":"⪹","prnE":"⪵","prnsim":"⋨","prod":"∏","Product":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","Proportional":"∝","Proportion":"∷","propto":"∝","prsim":"≾","prurel":"⊰","Pscr":"𝒫","pscr":"𝓅","Psi":"Ψ","psi":"ψ","puncsp":" ","Qfr":"𝔔","qfr":"𝔮","qint":"⨌","qopf":"𝕢","Qopf":"ℚ","qprime":"⁗","Qscr":"𝒬","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quot":"\\"","QUOT":"\\"","rAarr":"⇛","race":"∽̱","Racute":"Ŕ","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","Rang":"⟫","rangd":"⦒","range":"⦥","rangle":"⟩","raquo":"»","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarr":"→","Rarr":"↠","rArr":"⇒","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","Rarrtl":"⤖","rarrtl":"↣","rarrw":"↝","ratail":"⤚","rAtail":"⤜","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rBarr":"⤏","RBarr":"⤐","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","Rcaron":"Ř","rcaron":"ř","Rcedil":"Ŗ","rcedil":"ŗ","rceil":"⌉","rcub":"}","Rcy":"Р","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","Re":"ℜ","rect":"▭","reg":"®","REG":"®","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","Rfr":"ℜ","rHar":"⥤","rhard":"⇁","rharu":"⇀","rharul":"⥬","Rho":"Ρ","rho":"ρ","rhov":"ϱ","RightAngleBracket":"⟩","RightArrowBar":"⇥","rightarrow":"→","RightArrow":"→","Rightarrow":"⇒","RightArrowLeftArrow":"⇄","rightarrowtail":"↣","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVectorBar":"⥕","RightDownVector":"⇂","RightFloor":"⌋","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","RightTeeArrow":"↦","RightTee":"⊢","RightTeeVector":"⥛","rightthreetimes":"⋌","RightTriangleBar":"⧐","RightTriangle":"⊳","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVectorBar":"⥔","RightUpVector":"↾","RightVectorBar":"⥓","RightVector":"⇀","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"‏","rmoustache":"⎱","rmoust":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","Ropf":"ℝ","roplus":"⨮","rotimes":"⨵","RoundImplies":"⥰","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","Rrightarrow":"⇛","rsaquo":"›","rscr":"𝓇","Rscr":"ℛ","rsh":"↱","Rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","RuleDelayed":"⧴","ruluhar":"⥨","rx":"℞","Sacute":"Ś","sacute":"ś","sbquo":"‚","scap":"⪸","Scaron":"Š","scaron":"š","Sc":"⪼","sc":"≻","sccue":"≽","sce":"⪰","scE":"⪴","Scedil":"Ş","scedil":"ş","Scirc":"Ŝ","scirc":"ŝ","scnap":"⪺","scnE":"⪶","scnsim":"⋩","scpolint":"⨓","scsim":"≿","Scy":"С","scy":"с","sdotb":"⊡","sdot":"⋅","sdote":"⩦","searhk":"⤥","searr":"↘","seArr":"⇘","searrow":"↘","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","Sfr":"𝔖","sfr":"𝔰","sfrown":"⌢","sharp":"♯","SHCHcy":"Щ","shchcy":"щ","SHcy":"Ш","shcy":"ш","ShortDownArrow":"↓","ShortLeftArrow":"←","shortmid":"∣","shortparallel":"∥","ShortRightArrow":"→","ShortUpArrow":"↑","shy":"­","Sigma":"Σ","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","SmallCircle":"∘","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","SOFTcy":"Ь","softcy":"ь","solbar":"⌿","solb":"⧄","sol":"/","Sopf":"𝕊","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","Sqrt":"√","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","square":"□","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","squarf":"▪","squ":"□","squf":"▪","srarr":"→","Sscr":"𝒮","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","Star":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","Sub":"⋐","subdot":"⪽","subE":"⫅","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","Subset":"⋐","subseteq":"⊆","subseteqq":"⫅","SubsetEqual":"⊆","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succapprox":"⪸","succ":"≻","succcurlyeq":"≽","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","SuchThat":"∋","sum":"∑","Sum":"∑","sung":"♪","sup1":"¹","sup2":"²","sup3":"³","sup":"⊃","Sup":"⋑","supdot":"⪾","supdsub":"⫘","supE":"⫆","supe":"⊇","supedot":"⫄","Superset":"⊃","SupersetEqual":"⊇","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","Supset":"⋑","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swarhk":"⤦","swarr":"↙","swArr":"⇙","swarrow":"↙","swnwar":"⤪","szlig":"ß","Tab":"\\t","target":"⌖","Tau":"Τ","tau":"τ","tbrk":"⎴","Tcaron":"Ť","tcaron":"ť","Tcedil":"Ţ","tcedil":"ţ","Tcy":"Т","tcy":"т","tdot":"⃛","telrec":"⌕","Tfr":"𝔗","tfr":"𝔱","there4":"∴","therefore":"∴","Therefore":"∴","Theta":"Θ","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","ThickSpace":"  ","ThinSpace":" ","thinsp":" ","thkap":"≈","thksim":"∼","THORN":"Þ","thorn":"þ","tilde":"˜","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","timesbar":"⨱","timesb":"⊠","times":"×","timesd":"⨰","tint":"∭","toea":"⤨","topbot":"⌶","topcir":"⫱","top":"⊤","Topf":"𝕋","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","TRADE":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","TripleDot":"⃛","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","Tscr":"𝒯","tscr":"𝓉","TScy":"Ц","tscy":"ц","TSHcy":"Ћ","tshcy":"ћ","Tstrok":"Ŧ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","Uacute":"Ú","uacute":"ú","uarr":"↑","Uarr":"↟","uArr":"⇑","Uarrocir":"⥉","Ubrcy":"Ў","ubrcy":"ў","Ubreve":"Ŭ","ubreve":"ŭ","Ucirc":"Û","ucirc":"û","Ucy":"У","ucy":"у","udarr":"⇅","Udblac":"Ű","udblac":"ű","udhar":"⥮","ufisht":"⥾","Ufr":"𝔘","ufr":"𝔲","Ugrave":"Ù","ugrave":"ù","uHar":"⥣","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","Umacr":"Ū","umacr":"ū","uml":"¨","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","uogon":"ų","Uopf":"𝕌","uopf":"𝕦","UpArrowBar":"⤒","uparrow":"↑","UpArrow":"↑","Uparrow":"⇑","UpArrowDownArrow":"⇅","updownarrow":"↕","UpDownArrow":"↕","Updownarrow":"⇕","UpEquilibrium":"⥮","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","UpperLeftArrow":"↖","UpperRightArrow":"↗","upsi":"υ","Upsi":"ϒ","upsih":"ϒ","Upsilon":"Υ","upsilon":"υ","UpTeeArrow":"↥","UpTee":"⊥","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","Uring":"Ů","uring":"ů","urtri":"◹","Uscr":"𝒰","uscr":"𝓊","utdot":"⋰","Utilde":"Ũ","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","Uuml":"Ü","uuml":"ü","uwangle":"⦧","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","vArr":"⇕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vBar":"⫨","Vbar":"⫫","vBarv":"⫩","Vcy":"В","vcy":"в","vdash":"⊢","vDash":"⊨","Vdash":"⊩","VDash":"⊫","Vdashl":"⫦","veebar":"⊻","vee":"∨","Vee":"⋁","veeeq":"≚","vellip":"⋮","verbar":"|","Verbar":"‖","vert":"|","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","Vopf":"𝕍","vopf":"𝕧","vprop":"∝","vrtri":"⊳","Vscr":"𝒱","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","Vvdash":"⊪","vzigzag":"⦚","Wcirc":"Ŵ","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","Wedge":"⋀","wedgeq":"≙","weierp":"℘","Wfr":"𝔚","wfr":"𝔴","Wopf":"𝕎","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","Wscr":"𝒲","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","Xfr":"𝔛","xfr":"𝔵","xharr":"⟷","xhArr":"⟺","Xi":"Ξ","xi":"ξ","xlarr":"⟵","xlArr":"⟸","xmap":"⟼","xnis":"⋻","xodot":"⨀","Xopf":"𝕏","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrarr":"⟶","xrArr":"⟹","Xscr":"𝒳","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","Yacute":"Ý","yacute":"ý","YAcy":"Я","yacy":"я","Ycirc":"Ŷ","ycirc":"ŷ","Ycy":"Ы","ycy":"ы","yen":"¥","Yfr":"𝔜","yfr":"𝔶","YIcy":"Ї","yicy":"ї","Yopf":"𝕐","yopf":"𝕪","Yscr":"𝒴","yscr":"𝓎","YUcy":"Ю","yucy":"ю","yuml":"ÿ","Yuml":"Ÿ","Zacute":"Ź","zacute":"ź","Zcaron":"Ž","zcaron":"ž","Zcy":"З","zcy":"з","Zdot":"Ż","zdot":"ż","zeetrf":"ℨ","ZeroWidthSpace":"​","Zeta":"Ζ","zeta":"ζ","zfr":"𝔷","Zfr":"ℨ","ZHcy":"Ж","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","Zopf":"ℤ","Zscr":"𝒵","zscr":"𝓏","zwj":"‍","zwnj":"‌"}');

/***/ }),

/***/ "./node_modules/dom-serializer/node_modules/entities/lib/maps/legacy.json":
/*!********************************************************************************!*\
  !*** ./node_modules/dom-serializer/node_modules/entities/lib/maps/legacy.json ***!
  \********************************************************************************/
/***/ ((module) => {

"use strict";
module.exports = /*#__PURE__*/JSON.parse('{"Aacute":"Á","aacute":"á","Acirc":"Â","acirc":"â","acute":"´","AElig":"Æ","aelig":"æ","Agrave":"À","agrave":"à","amp":"&","AMP":"&","Aring":"Å","aring":"å","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","brvbar":"¦","Ccedil":"Ç","ccedil":"ç","cedil":"¸","cent":"¢","copy":"©","COPY":"©","curren":"¤","deg":"°","divide":"÷","Eacute":"É","eacute":"é","Ecirc":"Ê","ecirc":"ê","Egrave":"È","egrave":"è","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","frac12":"½","frac14":"¼","frac34":"¾","gt":">","GT":">","Iacute":"Í","iacute":"í","Icirc":"Î","icirc":"î","iexcl":"¡","Igrave":"Ì","igrave":"ì","iquest":"¿","Iuml":"Ï","iuml":"ï","laquo":"«","lt":"<","LT":"<","macr":"¯","micro":"µ","middot":"·","nbsp":" ","not":"¬","Ntilde":"Ñ","ntilde":"ñ","Oacute":"Ó","oacute":"ó","Ocirc":"Ô","ocirc":"ô","Ograve":"Ò","ograve":"ò","ordf":"ª","ordm":"º","Oslash":"Ø","oslash":"ø","Otilde":"Õ","otilde":"õ","Ouml":"Ö","ouml":"ö","para":"¶","plusmn":"±","pound":"£","quot":"\\"","QUOT":"\\"","raquo":"»","reg":"®","REG":"®","sect":"§","shy":"­","sup1":"¹","sup2":"²","sup3":"³","szlig":"ß","THORN":"Þ","thorn":"þ","times":"×","Uacute":"Ú","uacute":"ú","Ucirc":"Û","ucirc":"û","Ugrave":"Ù","ugrave":"ù","uml":"¨","Uuml":"Ü","uuml":"ü","Yacute":"Ý","yacute":"ý","yen":"¥","yuml":"ÿ"}');

/***/ }),

/***/ "./node_modules/dom-serializer/node_modules/entities/lib/maps/xml.json":
/*!*****************************************************************************!*\
  !*** ./node_modules/dom-serializer/node_modules/entities/lib/maps/xml.json ***!
  \*****************************************************************************/
/***/ ((module) => {

"use strict";
module.exports = /*#__PURE__*/JSON.parse('{"amp":"&","apos":"\'","gt":">","lt":"<","quot":"\\""}');

/***/ }),

/***/ "./node_modules/entities/maps/decode.json":
/*!************************************************!*\
  !*** ./node_modules/entities/maps/decode.json ***!
  \************************************************/
/***/ ((module) => {

"use strict";
module.exports = /*#__PURE__*/JSON.parse('{"0":65533,"128":8364,"130":8218,"131":402,"132":8222,"133":8230,"134":8224,"135":8225,"136":710,"137":8240,"138":352,"139":8249,"140":338,"142":381,"145":8216,"146":8217,"147":8220,"148":8221,"149":8226,"150":8211,"151":8212,"152":732,"153":8482,"154":353,"155":8250,"156":339,"158":382,"159":376}');

/***/ }),

/***/ "./node_modules/entities/maps/entities.json":
/*!**************************************************!*\
  !*** ./node_modules/entities/maps/entities.json ***!
  \**************************************************/
/***/ ((module) => {

"use strict";
module.exports = /*#__PURE__*/JSON.parse('{"Aacute":"Á","aacute":"á","Abreve":"Ă","abreve":"ă","ac":"∾","acd":"∿","acE":"∾̳","Acirc":"Â","acirc":"â","acute":"´","Acy":"А","acy":"а","AElig":"Æ","aelig":"æ","af":"⁡","Afr":"𝔄","afr":"𝔞","Agrave":"À","agrave":"à","alefsym":"ℵ","aleph":"ℵ","Alpha":"Α","alpha":"α","Amacr":"Ā","amacr":"ā","amalg":"⨿","amp":"&","AMP":"&","andand":"⩕","And":"⩓","and":"∧","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angmsd":"∡","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","Aogon":"Ą","aogon":"ą","Aopf":"𝔸","aopf":"𝕒","apacir":"⩯","ap":"≈","apE":"⩰","ape":"≊","apid":"≋","apos":"\'","ApplyFunction":"⁡","approx":"≈","approxeq":"≊","Aring":"Å","aring":"å","Ascr":"𝒜","ascr":"𝒶","Assign":"≔","ast":"*","asymp":"≈","asympeq":"≍","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","awconint":"∳","awint":"⨑","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","Backslash":"∖","Barv":"⫧","barvee":"⊽","barwed":"⌅","Barwed":"⌆","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","Bcy":"Б","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","Because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","Bernoullis":"ℬ","Beta":"Β","beta":"β","beth":"ℶ","between":"≬","Bfr":"𝔅","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bNot":"⫭","bnot":"⌐","Bopf":"𝔹","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxbox":"⧉","boxdl":"┐","boxdL":"╕","boxDl":"╖","boxDL":"╗","boxdr":"┌","boxdR":"╒","boxDr":"╓","boxDR":"╔","boxh":"─","boxH":"═","boxhd":"┬","boxHd":"╤","boxhD":"╥","boxHD":"╦","boxhu":"┴","boxHu":"╧","boxhU":"╨","boxHU":"╩","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxul":"┘","boxuL":"╛","boxUl":"╜","boxUL":"╝","boxur":"└","boxuR":"╘","boxUr":"╙","boxUR":"╚","boxv":"│","boxV":"║","boxvh":"┼","boxvH":"╪","boxVh":"╫","boxVH":"╬","boxvl":"┤","boxvL":"╡","boxVl":"╢","boxVL":"╣","boxvr":"├","boxvR":"╞","boxVr":"╟","boxVR":"╠","bprime":"‵","breve":"˘","Breve":"˘","brvbar":"¦","bscr":"𝒷","Bscr":"ℬ","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsolb":"⧅","bsol":"\\\\","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","Bumpeq":"≎","bumpeq":"≏","Cacute":"Ć","cacute":"ć","capand":"⩄","capbrcup":"⩉","capcap":"⩋","cap":"∩","Cap":"⋒","capcup":"⩇","capdot":"⩀","CapitalDifferentialD":"ⅅ","caps":"∩︀","caret":"⁁","caron":"ˇ","Cayleys":"ℭ","ccaps":"⩍","Ccaron":"Č","ccaron":"č","Ccedil":"Ç","ccedil":"ç","Ccirc":"Ĉ","ccirc":"ĉ","Cconint":"∰","ccups":"⩌","ccupssm":"⩐","Cdot":"Ċ","cdot":"ċ","cedil":"¸","Cedilla":"¸","cemptyv":"⦲","cent":"¢","centerdot":"·","CenterDot":"·","cfr":"𝔠","Cfr":"ℭ","CHcy":"Ч","chcy":"ч","check":"✓","checkmark":"✓","Chi":"Χ","chi":"χ","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","CircleDot":"⊙","circledR":"®","circledS":"Ⓢ","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","cir":"○","cirE":"⧃","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","clubs":"♣","clubsuit":"♣","colon":":","Colon":"∷","Colone":"⩴","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","Congruent":"≡","conint":"∮","Conint":"∯","ContourIntegral":"∮","copf":"𝕔","Copf":"ℂ","coprod":"∐","Coproduct":"∐","copy":"©","COPY":"©","copysr":"℗","CounterClockwiseContourIntegral":"∳","crarr":"↵","cross":"✗","Cross":"⨯","Cscr":"𝒞","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cupbrcap":"⩈","cupcap":"⩆","CupCap":"≍","cup":"∪","Cup":"⋓","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dagger":"†","Dagger":"‡","daleth":"ℸ","darr":"↓","Darr":"↡","dArr":"⇓","dash":"‐","Dashv":"⫤","dashv":"⊣","dbkarow":"⤏","dblac":"˝","Dcaron":"Ď","dcaron":"ď","Dcy":"Д","dcy":"д","ddagger":"‡","ddarr":"⇊","DD":"ⅅ","dd":"ⅆ","DDotrahd":"⤑","ddotseq":"⩷","deg":"°","Del":"∇","Delta":"Δ","delta":"δ","demptyv":"⦱","dfisht":"⥿","Dfr":"𝔇","dfr":"𝔡","dHar":"⥥","dharl":"⇃","dharr":"⇂","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","diam":"⋄","diamond":"⋄","Diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","DifferentialD":"ⅆ","digamma":"ϝ","disin":"⋲","div":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","DJcy":"Ђ","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","Dopf":"𝔻","dopf":"𝕕","Dot":"¨","dot":"˙","DotDot":"⃜","doteq":"≐","doteqdot":"≑","DotEqual":"≐","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrowBar":"⤓","downarrow":"↓","DownArrow":"↓","Downarrow":"⇓","DownArrowUpArrow":"⇵","DownBreve":"̑","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVectorBar":"⥖","DownLeftVector":"↽","DownRightTeeVector":"⥟","DownRightVectorBar":"⥗","DownRightVector":"⇁","DownTeeArrow":"↧","DownTee":"⊤","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","Dscr":"𝒟","dscr":"𝒹","DScy":"Ѕ","dscy":"ѕ","dsol":"⧶","Dstrok":"Đ","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","DZcy":"Џ","dzcy":"џ","dzigrarr":"⟿","Eacute":"É","eacute":"é","easter":"⩮","Ecaron":"Ě","ecaron":"ě","Ecirc":"Ê","ecirc":"ê","ecir":"≖","ecolon":"≕","Ecy":"Э","ecy":"э","eDDot":"⩷","Edot":"Ė","edot":"ė","eDot":"≑","ee":"ⅇ","efDot":"≒","Efr":"𝔈","efr":"𝔢","eg":"⪚","Egrave":"È","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","Element":"∈","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","Emacr":"Ē","emacr":"ē","empty":"∅","emptyset":"∅","EmptySmallSquare":"◻","emptyv":"∅","EmptyVerySmallSquare":"▫","emsp13":" ","emsp14":" ","emsp":" ","ENG":"Ŋ","eng":"ŋ","ensp":" ","Eogon":"Ę","eogon":"ę","Eopf":"𝔼","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","Epsilon":"Ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","Equal":"⩵","equals":"=","EqualTilde":"≂","equest":"≟","Equilibrium":"⇌","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erarr":"⥱","erDot":"≓","escr":"ℯ","Escr":"ℰ","esdot":"≐","Esim":"⩳","esim":"≂","Eta":"Η","eta":"η","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","euro":"€","excl":"!","exist":"∃","Exists":"∃","expectation":"ℰ","exponentiale":"ⅇ","ExponentialE":"ⅇ","fallingdotseq":"≒","Fcy":"Ф","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","Ffr":"𝔉","ffr":"𝔣","filig":"fi","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","Fopf":"𝔽","fopf":"𝕗","forall":"∀","ForAll":"∀","fork":"⋔","forkv":"⫙","Fouriertrf":"ℱ","fpartint":"⨍","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","Fscr":"ℱ","gacute":"ǵ","Gamma":"Γ","gamma":"γ","Gammad":"Ϝ","gammad":"ϝ","gap":"⪆","Gbreve":"Ğ","gbreve":"ğ","Gcedil":"Ģ","Gcirc":"Ĝ","gcirc":"ĝ","Gcy":"Г","gcy":"г","Gdot":"Ġ","gdot":"ġ","ge":"≥","gE":"≧","gEl":"⪌","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","gescc":"⪩","ges":"⩾","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","Gfr":"𝔊","gfr":"𝔤","gg":"≫","Gg":"⋙","ggg":"⋙","gimel":"ℷ","GJcy":"Ѓ","gjcy":"ѓ","gla":"⪥","gl":"≷","glE":"⪒","glj":"⪤","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gnE":"≩","gneq":"⪈","gneqq":"≩","gnsim":"⋧","Gopf":"𝔾","gopf":"𝕘","grave":"`","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","gtcc":"⪧","gtcir":"⩺","gt":">","GT":">","Gt":"≫","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","Hacek":"ˇ","hairsp":" ","half":"½","hamilt":"ℋ","HARDcy":"Ъ","hardcy":"ъ","harrcir":"⥈","harr":"↔","hArr":"⇔","harrw":"↭","Hat":"^","hbar":"ℏ","Hcirc":"Ĥ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","Hfr":"ℌ","HilbertSpace":"ℋ","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","Hopf":"ℍ","horbar":"―","HorizontalLine":"─","hscr":"𝒽","Hscr":"ℋ","hslash":"ℏ","Hstrok":"Ħ","hstrok":"ħ","HumpDownHump":"≎","HumpEqual":"≏","hybull":"⁃","hyphen":"‐","Iacute":"Í","iacute":"í","ic":"⁣","Icirc":"Î","icirc":"î","Icy":"И","icy":"и","Idot":"İ","IEcy":"Е","iecy":"е","iexcl":"¡","iff":"⇔","ifr":"𝔦","Ifr":"ℑ","Igrave":"Ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","IJlig":"IJ","ijlig":"ij","Imacr":"Ī","imacr":"ī","image":"ℑ","ImaginaryI":"ⅈ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","Im":"ℑ","imof":"⊷","imped":"Ƶ","Implies":"⇒","incare":"℅","in":"∈","infin":"∞","infintie":"⧝","inodot":"ı","intcal":"⊺","int":"∫","Int":"∬","integers":"ℤ","Integral":"∫","intercal":"⊺","Intersection":"⋂","intlarhk":"⨗","intprod":"⨼","InvisibleComma":"⁣","InvisibleTimes":"⁢","IOcy":"Ё","iocy":"ё","Iogon":"Į","iogon":"į","Iopf":"𝕀","iopf":"𝕚","Iota":"Ι","iota":"ι","iprod":"⨼","iquest":"¿","iscr":"𝒾","Iscr":"ℐ","isin":"∈","isindot":"⋵","isinE":"⋹","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"⁢","Itilde":"Ĩ","itilde":"ĩ","Iukcy":"І","iukcy":"і","Iuml":"Ï","iuml":"ï","Jcirc":"Ĵ","jcirc":"ĵ","Jcy":"Й","jcy":"й","Jfr":"𝔍","jfr":"𝔧","jmath":"ȷ","Jopf":"𝕁","jopf":"𝕛","Jscr":"𝒥","jscr":"𝒿","Jsercy":"Ј","jsercy":"ј","Jukcy":"Є","jukcy":"є","Kappa":"Κ","kappa":"κ","kappav":"ϰ","Kcedil":"Ķ","kcedil":"ķ","Kcy":"К","kcy":"к","Kfr":"𝔎","kfr":"𝔨","kgreen":"ĸ","KHcy":"Х","khcy":"х","KJcy":"Ќ","kjcy":"ќ","Kopf":"𝕂","kopf":"𝕜","Kscr":"𝒦","kscr":"𝓀","lAarr":"⇚","Lacute":"Ĺ","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","Lambda":"Λ","lambda":"λ","lang":"⟨","Lang":"⟪","langd":"⦑","langle":"⟨","lap":"⪅","Laplacetrf":"ℒ","laquo":"«","larrb":"⇤","larrbfs":"⤟","larr":"←","Larr":"↞","lArr":"⇐","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","latail":"⤙","lAtail":"⤛","lat":"⪫","late":"⪭","lates":"⪭︀","lbarr":"⤌","lBarr":"⤎","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","Lcaron":"Ľ","lcaron":"ľ","Lcedil":"Ļ","lcedil":"ļ","lceil":"⌈","lcub":"{","Lcy":"Л","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","lE":"≦","LeftAngleBracket":"⟨","LeftArrowBar":"⇤","leftarrow":"←","LeftArrow":"←","Leftarrow":"⇐","LeftArrowRightArrow":"⇆","leftarrowtail":"↢","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVectorBar":"⥙","LeftDownVector":"⇃","LeftFloor":"⌊","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","LeftRightArrow":"↔","Leftrightarrow":"⇔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","LeftRightVector":"⥎","LeftTeeArrow":"↤","LeftTee":"⊣","LeftTeeVector":"⥚","leftthreetimes":"⋋","LeftTriangleBar":"⧏","LeftTriangle":"⊲","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVectorBar":"⥘","LeftUpVector":"↿","LeftVectorBar":"⥒","LeftVector":"↼","lEg":"⪋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","lescc":"⪨","les":"⩽","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","lessgtr":"≶","LessLess":"⪡","lesssim":"≲","LessSlantEqual":"⩽","LessTilde":"≲","lfisht":"⥼","lfloor":"⌊","Lfr":"𝔏","lfr":"𝔩","lg":"≶","lgE":"⪑","lHar":"⥢","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","LJcy":"Љ","ljcy":"љ","llarr":"⇇","ll":"≪","Ll":"⋘","llcorner":"⌞","Lleftarrow":"⇚","llhard":"⥫","lltri":"◺","Lmidot":"Ŀ","lmidot":"ŀ","lmoustache":"⎰","lmoust":"⎰","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lnE":"≨","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","LongLeftArrow":"⟵","Longleftarrow":"⟸","longleftrightarrow":"⟷","LongLeftRightArrow":"⟷","Longleftrightarrow":"⟺","longmapsto":"⟼","longrightarrow":"⟶","LongRightArrow":"⟶","Longrightarrow":"⟹","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","Lopf":"𝕃","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","LowerLeftArrow":"↙","LowerRightArrow":"↘","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"‎","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","Lscr":"ℒ","lsh":"↰","Lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","Lstrok":"Ł","lstrok":"ł","ltcc":"⪦","ltcir":"⩹","lt":"<","LT":"<","Lt":"≪","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltri":"◃","ltrie":"⊴","ltrif":"◂","ltrPar":"⦖","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","macr":"¯","male":"♂","malt":"✠","maltese":"✠","Map":"⤅","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","Mcy":"М","mcy":"м","mdash":"—","mDDot":"∺","measuredangle":"∡","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","mfr":"𝔪","mho":"℧","micro":"µ","midast":"*","midcir":"⫰","mid":"∣","middot":"·","minusb":"⊟","minus":"−","minusd":"∸","minusdu":"⨪","MinusPlus":"∓","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","Mopf":"𝕄","mopf":"𝕞","mp":"∓","mscr":"𝓂","Mscr":"ℳ","mstpos":"∾","Mu":"Μ","mu":"μ","multimap":"⊸","mumap":"⊸","nabla":"∇","Nacute":"Ń","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natural":"♮","naturals":"ℕ","natur":"♮","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","Ncaron":"Ň","ncaron":"ň","Ncedil":"Ņ","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","Ncy":"Н","ncy":"н","ndash":"–","nearhk":"⤤","nearr":"↗","neArr":"⇗","nearrow":"↗","ne":"≠","nedot":"≐̸","NegativeMediumSpace":"​","NegativeThickSpace":"​","NegativeThinSpace":"​","NegativeVeryThinSpace":"​","nequiv":"≢","nesear":"⤨","nesim":"≂̸","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","nexist":"∄","nexists":"∄","Nfr":"𝔑","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","nGg":"⋙̸","ngsim":"≵","nGt":"≫⃒","ngt":"≯","ngtr":"≯","nGtv":"≫̸","nharr":"↮","nhArr":"⇎","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","NJcy":"Њ","njcy":"њ","nlarr":"↚","nlArr":"⇍","nldr":"‥","nlE":"≦̸","nle":"≰","nleftarrow":"↚","nLeftarrow":"⇍","nleftrightarrow":"↮","nLeftrightarrow":"⇎","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nLl":"⋘̸","nlsim":"≴","nLt":"≪⃒","nlt":"≮","nltri":"⋪","nltrie":"⋬","nLtv":"≪̸","nmid":"∤","NoBreak":"⁠","NonBreakingSpace":" ","nopf":"𝕟","Nopf":"ℕ","Not":"⫬","not":"¬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","notin":"∉","notindot":"⋵̸","notinE":"⋹̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","NotLeftTriangleBar":"⧏̸","NotLeftTriangle":"⋪","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangleBar":"⧐̸","NotRightTriangle":"⋫","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","nparallel":"∦","npar":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","nprec":"⊀","npreceq":"⪯̸","npre":"⪯̸","nrarrc":"⤳̸","nrarr":"↛","nrArr":"⇏","nrarrw":"↝̸","nrightarrow":"↛","nRightarrow":"⇏","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","Nscr":"𝒩","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","Ntilde":"Ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","Nu":"Ν","nu":"ν","num":"#","numero":"№","numsp":" ","nvap":"≍⃒","nvdash":"⊬","nvDash":"⊭","nVdash":"⊮","nVDash":"⊯","nvge":"≥⃒","nvgt":">⃒","nvHarr":"⤄","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwarhk":"⤣","nwarr":"↖","nwArr":"⇖","nwarrow":"↖","nwnear":"⤧","Oacute":"Ó","oacute":"ó","oast":"⊛","Ocirc":"Ô","ocirc":"ô","ocir":"⊚","Ocy":"О","ocy":"о","odash":"⊝","Odblac":"Ő","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","OElig":"Œ","oelig":"œ","ofcir":"⦿","Ofr":"𝔒","ofr":"𝔬","ogon":"˛","Ograve":"Ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","Omacr":"Ō","omacr":"ō","Omega":"Ω","omega":"ω","Omicron":"Ο","omicron":"ο","omid":"⦶","ominus":"⊖","Oopf":"𝕆","oopf":"𝕠","opar":"⦷","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","operp":"⦹","oplus":"⊕","orarr":"↻","Or":"⩔","or":"∨","ord":"⩝","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oS":"Ⓢ","Oscr":"𝒪","oscr":"ℴ","Oslash":"Ø","oslash":"ø","osol":"⊘","Otilde":"Õ","otilde":"õ","otimesas":"⨶","Otimes":"⨷","otimes":"⊗","Ouml":"Ö","ouml":"ö","ovbar":"⌽","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","para":"¶","parallel":"∥","par":"∥","parsim":"⫳","parsl":"⫽","part":"∂","PartialD":"∂","Pcy":"П","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","Pfr":"𝔓","pfr":"𝔭","Phi":"Φ","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","Pi":"Π","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plus":"+","plusdo":"∔","plusdu":"⨥","pluse":"⩲","PlusMinus":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","Poincareplane":"ℌ","pointint":"⨕","popf":"𝕡","Popf":"ℙ","pound":"£","prap":"⪷","Pr":"⪻","pr":"≺","prcue":"≼","precapprox":"⪷","prec":"≺","preccurlyeq":"≼","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","pre":"⪯","prE":"⪳","precsim":"≾","prime":"′","Prime":"″","primes":"ℙ","prnap":"⪹","prnE":"⪵","prnsim":"⋨","prod":"∏","Product":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","Proportional":"∝","Proportion":"∷","propto":"∝","prsim":"≾","prurel":"⊰","Pscr":"𝒫","pscr":"𝓅","Psi":"Ψ","psi":"ψ","puncsp":" ","Qfr":"𝔔","qfr":"𝔮","qint":"⨌","qopf":"𝕢","Qopf":"ℚ","qprime":"⁗","Qscr":"𝒬","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quot":"\\"","QUOT":"\\"","rAarr":"⇛","race":"∽̱","Racute":"Ŕ","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","Rang":"⟫","rangd":"⦒","range":"⦥","rangle":"⟩","raquo":"»","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarr":"→","Rarr":"↠","rArr":"⇒","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","Rarrtl":"⤖","rarrtl":"↣","rarrw":"↝","ratail":"⤚","rAtail":"⤜","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rBarr":"⤏","RBarr":"⤐","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","Rcaron":"Ř","rcaron":"ř","Rcedil":"Ŗ","rcedil":"ŗ","rceil":"⌉","rcub":"}","Rcy":"Р","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","Re":"ℜ","rect":"▭","reg":"®","REG":"®","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","Rfr":"ℜ","rHar":"⥤","rhard":"⇁","rharu":"⇀","rharul":"⥬","Rho":"Ρ","rho":"ρ","rhov":"ϱ","RightAngleBracket":"⟩","RightArrowBar":"⇥","rightarrow":"→","RightArrow":"→","Rightarrow":"⇒","RightArrowLeftArrow":"⇄","rightarrowtail":"↣","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVectorBar":"⥕","RightDownVector":"⇂","RightFloor":"⌋","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","RightTeeArrow":"↦","RightTee":"⊢","RightTeeVector":"⥛","rightthreetimes":"⋌","RightTriangleBar":"⧐","RightTriangle":"⊳","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVectorBar":"⥔","RightUpVector":"↾","RightVectorBar":"⥓","RightVector":"⇀","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"‏","rmoustache":"⎱","rmoust":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","Ropf":"ℝ","roplus":"⨮","rotimes":"⨵","RoundImplies":"⥰","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","Rrightarrow":"⇛","rsaquo":"›","rscr":"𝓇","Rscr":"ℛ","rsh":"↱","Rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","RuleDelayed":"⧴","ruluhar":"⥨","rx":"℞","Sacute":"Ś","sacute":"ś","sbquo":"‚","scap":"⪸","Scaron":"Š","scaron":"š","Sc":"⪼","sc":"≻","sccue":"≽","sce":"⪰","scE":"⪴","Scedil":"Ş","scedil":"ş","Scirc":"Ŝ","scirc":"ŝ","scnap":"⪺","scnE":"⪶","scnsim":"⋩","scpolint":"⨓","scsim":"≿","Scy":"С","scy":"с","sdotb":"⊡","sdot":"⋅","sdote":"⩦","searhk":"⤥","searr":"↘","seArr":"⇘","searrow":"↘","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","Sfr":"𝔖","sfr":"𝔰","sfrown":"⌢","sharp":"♯","SHCHcy":"Щ","shchcy":"щ","SHcy":"Ш","shcy":"ш","ShortDownArrow":"↓","ShortLeftArrow":"←","shortmid":"∣","shortparallel":"∥","ShortRightArrow":"→","ShortUpArrow":"↑","shy":"­","Sigma":"Σ","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","SmallCircle":"∘","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","SOFTcy":"Ь","softcy":"ь","solbar":"⌿","solb":"⧄","sol":"/","Sopf":"𝕊","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","Sqrt":"√","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","square":"□","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","squarf":"▪","squ":"□","squf":"▪","srarr":"→","Sscr":"𝒮","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","Star":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","Sub":"⋐","subdot":"⪽","subE":"⫅","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","Subset":"⋐","subseteq":"⊆","subseteqq":"⫅","SubsetEqual":"⊆","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succapprox":"⪸","succ":"≻","succcurlyeq":"≽","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","SuchThat":"∋","sum":"∑","Sum":"∑","sung":"♪","sup1":"¹","sup2":"²","sup3":"³","sup":"⊃","Sup":"⋑","supdot":"⪾","supdsub":"⫘","supE":"⫆","supe":"⊇","supedot":"⫄","Superset":"⊃","SupersetEqual":"⊇","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","Supset":"⋑","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swarhk":"⤦","swarr":"↙","swArr":"⇙","swarrow":"↙","swnwar":"⤪","szlig":"ß","Tab":"\\t","target":"⌖","Tau":"Τ","tau":"τ","tbrk":"⎴","Tcaron":"Ť","tcaron":"ť","Tcedil":"Ţ","tcedil":"ţ","Tcy":"Т","tcy":"т","tdot":"⃛","telrec":"⌕","Tfr":"𝔗","tfr":"𝔱","there4":"∴","therefore":"∴","Therefore":"∴","Theta":"Θ","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","ThickSpace":"  ","ThinSpace":" ","thinsp":" ","thkap":"≈","thksim":"∼","THORN":"Þ","thorn":"þ","tilde":"˜","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","timesbar":"⨱","timesb":"⊠","times":"×","timesd":"⨰","tint":"∭","toea":"⤨","topbot":"⌶","topcir":"⫱","top":"⊤","Topf":"𝕋","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","TRADE":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","TripleDot":"⃛","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","Tscr":"𝒯","tscr":"𝓉","TScy":"Ц","tscy":"ц","TSHcy":"Ћ","tshcy":"ћ","Tstrok":"Ŧ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","Uacute":"Ú","uacute":"ú","uarr":"↑","Uarr":"↟","uArr":"⇑","Uarrocir":"⥉","Ubrcy":"Ў","ubrcy":"ў","Ubreve":"Ŭ","ubreve":"ŭ","Ucirc":"Û","ucirc":"û","Ucy":"У","ucy":"у","udarr":"⇅","Udblac":"Ű","udblac":"ű","udhar":"⥮","ufisht":"⥾","Ufr":"𝔘","ufr":"𝔲","Ugrave":"Ù","ugrave":"ù","uHar":"⥣","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","Umacr":"Ū","umacr":"ū","uml":"¨","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","uogon":"ų","Uopf":"𝕌","uopf":"𝕦","UpArrowBar":"⤒","uparrow":"↑","UpArrow":"↑","Uparrow":"⇑","UpArrowDownArrow":"⇅","updownarrow":"↕","UpDownArrow":"↕","Updownarrow":"⇕","UpEquilibrium":"⥮","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","UpperLeftArrow":"↖","UpperRightArrow":"↗","upsi":"υ","Upsi":"ϒ","upsih":"ϒ","Upsilon":"Υ","upsilon":"υ","UpTeeArrow":"↥","UpTee":"⊥","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","Uring":"Ů","uring":"ů","urtri":"◹","Uscr":"𝒰","uscr":"𝓊","utdot":"⋰","Utilde":"Ũ","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","Uuml":"Ü","uuml":"ü","uwangle":"⦧","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","vArr":"⇕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vBar":"⫨","Vbar":"⫫","vBarv":"⫩","Vcy":"В","vcy":"в","vdash":"⊢","vDash":"⊨","Vdash":"⊩","VDash":"⊫","Vdashl":"⫦","veebar":"⊻","vee":"∨","Vee":"⋁","veeeq":"≚","vellip":"⋮","verbar":"|","Verbar":"‖","vert":"|","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","Vopf":"𝕍","vopf":"𝕧","vprop":"∝","vrtri":"⊳","Vscr":"𝒱","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","Vvdash":"⊪","vzigzag":"⦚","Wcirc":"Ŵ","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","Wedge":"⋀","wedgeq":"≙","weierp":"℘","Wfr":"𝔚","wfr":"𝔴","Wopf":"𝕎","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","Wscr":"𝒲","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","Xfr":"𝔛","xfr":"𝔵","xharr":"⟷","xhArr":"⟺","Xi":"Ξ","xi":"ξ","xlarr":"⟵","xlArr":"⟸","xmap":"⟼","xnis":"⋻","xodot":"⨀","Xopf":"𝕏","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrarr":"⟶","xrArr":"⟹","Xscr":"𝒳","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","Yacute":"Ý","yacute":"ý","YAcy":"Я","yacy":"я","Ycirc":"Ŷ","ycirc":"ŷ","Ycy":"Ы","ycy":"ы","yen":"¥","Yfr":"𝔜","yfr":"𝔶","YIcy":"Ї","yicy":"ї","Yopf":"𝕐","yopf":"𝕪","Yscr":"𝒴","yscr":"𝓎","YUcy":"Ю","yucy":"ю","yuml":"ÿ","Yuml":"Ÿ","Zacute":"Ź","zacute":"ź","Zcaron":"Ž","zcaron":"ž","Zcy":"З","zcy":"з","Zdot":"Ż","zdot":"ż","zeetrf":"ℨ","ZeroWidthSpace":"​","Zeta":"Ζ","zeta":"ζ","zfr":"𝔷","Zfr":"ℨ","ZHcy":"Ж","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","Zopf":"ℤ","Zscr":"𝒵","zscr":"𝓏","zwj":"‍","zwnj":"‌"}');

/***/ }),

/***/ "./node_modules/entities/maps/legacy.json":
/*!************************************************!*\
  !*** ./node_modules/entities/maps/legacy.json ***!
  \************************************************/
/***/ ((module) => {

"use strict";
module.exports = /*#__PURE__*/JSON.parse('{"Aacute":"Á","aacute":"á","Acirc":"Â","acirc":"â","acute":"´","AElig":"Æ","aelig":"æ","Agrave":"À","agrave":"à","amp":"&","AMP":"&","Aring":"Å","aring":"å","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","brvbar":"¦","Ccedil":"Ç","ccedil":"ç","cedil":"¸","cent":"¢","copy":"©","COPY":"©","curren":"¤","deg":"°","divide":"÷","Eacute":"É","eacute":"é","Ecirc":"Ê","ecirc":"ê","Egrave":"È","egrave":"è","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","frac12":"½","frac14":"¼","frac34":"¾","gt":">","GT":">","Iacute":"Í","iacute":"í","Icirc":"Î","icirc":"î","iexcl":"¡","Igrave":"Ì","igrave":"ì","iquest":"¿","Iuml":"Ï","iuml":"ï","laquo":"«","lt":"<","LT":"<","macr":"¯","micro":"µ","middot":"·","nbsp":" ","not":"¬","Ntilde":"Ñ","ntilde":"ñ","Oacute":"Ó","oacute":"ó","Ocirc":"Ô","ocirc":"ô","Ograve":"Ò","ograve":"ò","ordf":"ª","ordm":"º","Oslash":"Ø","oslash":"ø","Otilde":"Õ","otilde":"õ","Ouml":"Ö","ouml":"ö","para":"¶","plusmn":"±","pound":"£","quot":"\\"","QUOT":"\\"","raquo":"»","reg":"®","REG":"®","sect":"§","shy":"­","sup1":"¹","sup2":"²","sup3":"³","szlig":"ß","THORN":"Þ","thorn":"þ","times":"×","Uacute":"Ú","uacute":"ú","Ucirc":"Û","ucirc":"û","Ugrave":"Ù","ugrave":"ù","uml":"¨","Uuml":"Ü","uuml":"ü","Yacute":"Ý","yacute":"ý","yen":"¥","yuml":"ÿ"}');

/***/ }),

/***/ "./node_modules/entities/maps/xml.json":
/*!*********************************************!*\
  !*** ./node_modules/entities/maps/xml.json ***!
  \*********************************************/
/***/ ((module) => {

"use strict";
module.exports = /*#__PURE__*/JSON.parse('{"amp":"&","apos":"\'","gt":">","lt":"<","quot":"\\""}');

/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/compat get default export */
/******/ 	(() => {
/******/ 		// getDefaultExport function for compatibility with non-harmony modules
/******/ 		__webpack_require__.n = (module) => {
/******/ 			var getter = module && module.__esModule ?
/******/ 				() => (module['default']) :
/******/ 				() => (module);
/******/ 			__webpack_require__.d(getter, { a: getter });
/******/ 			return getter;
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/create fake namespace object */
/******/ 	(() => {
/******/ 		var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);
/******/ 		var leafPrototypes;
/******/ 		// create a fake namespace object
/******/ 		// mode & 1: value is a module id, require it
/******/ 		// mode & 2: merge all properties of value into the ns
/******/ 		// mode & 4: return value when already ns object
/******/ 		// mode & 16: return value when it's Promise-like
/******/ 		// mode & 8|1: behave like require
/******/ 		__webpack_require__.t = function(value, mode) {
/******/ 			if(mode & 1) value = this(value);
/******/ 			if(mode & 8) return value;
/******/ 			if(typeof value === 'object' && value) {
/******/ 				if((mode & 4) && value.__esModule) return value;
/******/ 				if((mode & 16) && typeof value.then === 'function') return value;
/******/ 			}
/******/ 			var ns = Object.create(null);
/******/ 			__webpack_require__.r(ns);
/******/ 			var def = {};
/******/ 			leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];
/******/ 			for(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {
/******/ 				Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));
/******/ 			}
/******/ 			def['default'] = () => (value);
/******/ 			__webpack_require__.d(ns, def);
/******/ 			return ns;
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/define property getters */
/******/ 	(() => {
/******/ 		// define getter functions for harmony exports
/******/ 		__webpack_require__.d = (exports, definition) => {
/******/ 			for(var key in definition) {
/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ 				}
/******/ 			}
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
/******/ 	(() => {
/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/make namespace object */
/******/ 	(() => {
/******/ 		// define __esModule on exports
/******/ 		__webpack_require__.r = (exports) => {
/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 			}
/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
/******/ 		};
/******/ 	})();
/******/ 	
/************************************************************************/
var __webpack_exports__ = {};
// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
(() => {
"use strict";
/*!************************************!*\
  !*** ./assets/src/DashboardApp.js ***!
  \************************************/
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ "react-dom");
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _common_all_config_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./common/all-config.scss */ "./assets/src/common/all-config.scss");
/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./common/common */ "./assets/src/common/common.js");
/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_common_common__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _DashboardApp_SettingsWrap__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @DashboardApp/SettingsWrap */ "./assets/src/dashboard-app/SettingsWrap.js");
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
/* harmony import */ var _Admin_store_globalDataStore__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Admin/store/globalDataStore */ "./assets/src/store/globalDataStore.js");
/* harmony import */ var _Utils_setInitialState__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Utils/setInitialState */ "./assets/src/utils/setInitialState.js");




/* Main Component */






const currentState = _Admin_store_globalDataStore__WEBPACK_IMPORTED_MODULE_7__["default"].getState();
if (!currentState.initialStateSetFlag) {
  (0,_Utils_setInitialState__WEBPACK_IMPORTED_MODULE_8__["default"])(_Admin_store_globalDataStore__WEBPACK_IMPORTED_MODULE_7__["default"]);
}
react_dom__WEBPACK_IMPORTED_MODULE_2___default().render((0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(react_redux__WEBPACK_IMPORTED_MODULE_6__.Provider, {
  store: _Admin_store_globalDataStore__WEBPACK_IMPORTED_MODULE_7__["default"]
}, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_DashboardApp_SettingsWrap__WEBPACK_IMPORTED_MODULE_5__["default"], null)), document.getElementById('astra-dashboard-app'));
})();

/******/ })()
;
//# sourceMappingURL=dashboard-app.js.map

Youez - 2016 - github.com/yon3zu
LinuXploit