academe-kit 0.3.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/clsx/dist/clsx.mjs","../src/components/Button/Button.tsx","../node_modules/@react-keycloak/core/lib/context.js","../node_modules/react-fast-compare/index.js","../node_modules/@react-keycloak/core/lib/provider.js","../node_modules/@react-keycloak/web/lib/context.js","../node_modules/@react-keycloak/web/lib/provider.js","../node_modules/@react-keycloak/web/lib/useKeycloak.js","../node_modules/@react-keycloak/web/lib/withKeycloak.js","../node_modules/keycloak-js/lib/keycloak.js","../node_modules/openapi-fetch/dist/index.mjs","../src/services/UserService.ts","../src/services/InstitutionService.ts","../src/services/ReportService.ts","../src/services/ClassroomService.ts","../src/services/OrganizationService.ts","../src/services/SerieService.ts","../src/services/ShiftService.ts","../src/services/GuardianService.ts","../src/services/index.ts","../src/roles/global.ts","../src/context/SecurityProvider/index.tsx","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/loader-circle.js","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../src/components/ui/spinner.tsx","../src/components/ProtectedApp/index.tsx","../src/components/ProtectedComponent/index.tsx","../src/components/ProtectedRouter/index.tsx","../node_modules/style-inject/dist/style-inject.es.js","../src/roles/backoffice.ts","../src/roles/dashboard.ts","../src/types/academe-api.ts"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import React from 'react';\nimport clsx from 'clsx';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'secondary' | 'outline';\n size?: 'sm' | 'md' | 'lg';\n children: React.ReactNode;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ variant = 'primary', size = 'md', className, children, ...props }, ref) => {\n const baseClasses = 'font-semibold rounded-lg transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2';\n\n const variantClasses = {\n primary: 'bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500',\n secondary: 'bg-gray-600 text-white hover:bg-gray-700 focus:ring-gray-500',\n outline: 'bg-transparent border-2 border-blue-600 text-blue-600 hover:bg-blue-50 focus:ring-blue-500',\n };\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-6 py-3 text-lg',\n };\n\n return (\n <button\n ref={ref}\n className={clsx(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { createContext } from 'react';\n/**\n * Create a React context containing an AuthClient instance.\n *\n * @param {IAuthContextProps} initialContext initial context value.\n *\n * @returns {React.Context} the ReactKeycloak context.\n */\nexport function createAuthContext(initialContext) {\n return createContext(__assign({ initialized: false }, initialContext));\n}\nexport default createAuthContext;\n//# sourceMappingURL=context.js.map","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport isEqual from 'react-fast-compare';\n/**\n * Create an AuthProvider component to wrap a React app with, it will take care of common AuthClient\n * lifecycle handling (such as initialization and token refresh).\n *\n * @param AuthContext the Auth context to be used by the created AuthProvider\n *\n * @returns the AuthProvider component\n */\nexport function createAuthProvider(AuthContext) {\n var defaultInitOptions = {\n onLoad: 'check-sso',\n };\n var initialState = {\n initialized: false,\n isAuthenticated: false,\n isLoading: true,\n };\n return /** @class */ (function (_super) {\n __extends(KeycloakProvider, _super);\n function KeycloakProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = __assign({}, initialState);\n _this.onError = function (event) { return function (error) {\n var onEvent = _this.props.onEvent;\n // Notify Events listener\n onEvent && onEvent(event, error);\n }; };\n _this.updateState = function (event) { return function () {\n var _a = _this.props, authClient = _a.authClient, onEvent = _a.onEvent, onTokens = _a.onTokens, isLoadingCheck = _a.isLoadingCheck;\n var _b = _this.state, prevInitialized = _b.initialized, prevAuthenticated = _b.isAuthenticated, prevLoading = _b.isLoading;\n // Notify Events listener\n onEvent && onEvent(event);\n // Check Loading state\n var isLoading = isLoadingCheck ? isLoadingCheck(authClient) : false;\n // Check if user is authenticated\n var isAuthenticated = isUserAuthenticated(authClient);\n // Avoid double-refresh if state hasn't changed\n if (!prevInitialized ||\n isAuthenticated !== prevAuthenticated ||\n isLoading !== prevLoading) {\n _this.setState({\n initialized: true,\n isAuthenticated: isAuthenticated,\n isLoading: isLoading,\n });\n }\n // Notify token listener, if any\n var idToken = authClient.idToken, refreshToken = authClient.refreshToken, token = authClient.token;\n onTokens &&\n onTokens({\n idToken: idToken,\n refreshToken: refreshToken,\n token: token,\n });\n }; };\n _this.refreshToken = function (event) { return function () {\n var _a = _this.props, autoRefreshToken = _a.autoRefreshToken, authClient = _a.authClient, onEvent = _a.onEvent;\n // Notify Events listener\n onEvent && onEvent(event);\n if (autoRefreshToken !== false) {\n // Refresh Keycloak token\n authClient.updateToken(5);\n }\n }; };\n return _this;\n }\n KeycloakProvider.prototype.componentDidMount = function () {\n this.init();\n };\n KeycloakProvider.prototype.componentDidUpdate = function (_a) {\n var prevAuthClient = _a.authClient, prevInitOptions = _a.initOptions;\n var _b = this.props, initOptions = _b.initOptions, authClient = _b.authClient;\n if (authClient !== prevAuthClient ||\n !isEqual(initOptions, prevInitOptions)) {\n // De-init previous AuthClient instance\n prevAuthClient.onReady = undefined;\n prevAuthClient.onAuthSuccess = undefined;\n prevAuthClient.onAuthError = undefined;\n prevAuthClient.onAuthRefreshSuccess = undefined;\n prevAuthClient.onAuthRefreshError = undefined;\n prevAuthClient.onAuthLogout = undefined;\n prevAuthClient.onTokenExpired = undefined;\n // Reset state\n this.setState(__assign({}, initialState));\n // Init new AuthClient instance\n this.init();\n }\n };\n KeycloakProvider.prototype.init = function () {\n var _a = this.props, initOptions = _a.initOptions, authClient = _a.authClient;\n // Attach Keycloak listeners\n authClient.onReady = this.updateState('onReady');\n authClient.onAuthSuccess = this.updateState('onAuthSuccess');\n authClient.onAuthError = this.onError('onAuthError');\n authClient.onAuthRefreshSuccess = this.updateState('onAuthRefreshSuccess');\n authClient.onAuthRefreshError = this.onError('onAuthRefreshError');\n authClient.onAuthLogout = this.updateState('onAuthLogout');\n authClient.onTokenExpired = this.refreshToken('onTokenExpired');\n authClient\n .init(__assign(__assign({}, defaultInitOptions), initOptions))\n .catch(this.onError('onInitError'));\n };\n KeycloakProvider.prototype.render = function () {\n var _a = this.props, children = _a.children, authClient = _a.authClient, LoadingComponent = _a.LoadingComponent;\n var _b = this.state, initialized = _b.initialized, isLoading = _b.isLoading;\n if (!!LoadingComponent && (!initialized || isLoading)) {\n return LoadingComponent;\n }\n return (React.createElement(AuthContext.Provider, { value: { initialized: initialized, authClient: authClient } }, children));\n };\n return KeycloakProvider;\n }(React.PureComponent));\n}\nfunction isUserAuthenticated(authClient) {\n return !!authClient.idToken && !!authClient.token;\n}\nexport default createAuthProvider;\n//# sourceMappingURL=provider.js.map","import { createAuthContext } from '@react-keycloak/core';\nexport var reactKeycloakWebContext = createAuthContext();\nexport var ReactKeycloakWebContextConsumer = reactKeycloakWebContext.Consumer;\n//# sourceMappingURL=context.js.map","import { createAuthProvider } from '@react-keycloak/core';\nimport { reactKeycloakWebContext } from './context';\nexport var ReactKeycloakProvider = createAuthProvider(reactKeycloakWebContext);\n//# sourceMappingURL=provider.js.map","import { useContext } from 'react';\nimport { reactKeycloakWebContext } from './context';\nexport function useKeycloak() {\n var ctx = useContext(reactKeycloakWebContext);\n if (!ctx) {\n throw new Error('useKeycloak hook must be used inside ReactKeycloakProvider context');\n }\n if (!ctx.authClient) {\n throw new Error('authClient has not been assigned to ReactKeycloakProvider');\n }\n var authClient = ctx.authClient, initialized = ctx.initialized;\n return {\n initialized: initialized,\n keycloak: authClient,\n };\n}\n//# sourceMappingURL=useKeycloak.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useKeycloak } from './useKeycloak';\n/**\n * An HOC which injects the `keycloak` instance and the `keycloakInitialized` flag as props.\n *\n * @deprecated Please migrate to useKeycloak hook where/when possible.\n */\nexport function withKeycloak(Component) {\n return function WrappedComponent(props) {\n var _a = useKeycloak(), keycloak = _a.keycloak, initialized = _a.initialized;\n return (React.createElement(Component, __assign({}, props, { keycloakInitialized: initialized, keycloak: keycloak })));\n };\n}\n//# sourceMappingURL=withKeycloak.js.map","/*\n * Copyright 2016 Red Hat, Inc. and/or its affiliates\n * and other contributors as indicated by the @author tags.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction Keycloak (config) {\n if (!(this instanceof Keycloak)) {\n throw new Error(\"The 'Keycloak' constructor must be invoked with 'new'.\")\n }\n\n if (typeof config !== 'string' && !isObject(config)) {\n throw new Error(\"The 'Keycloak' constructor must be provided with a configuration object, or a URL to a JSON configuration file.\");\n }\n\n if (isObject(config)) {\n const requiredProperties = 'oidcProvider' in config\n ? ['clientId']\n : ['url', 'realm', 'clientId'];\n\n for (const property of requiredProperties) {\n if (!config[property]) {\n throw new Error(`The configuration object is missing the required '${property}' property.`);\n }\n }\n }\n\n var kc = this;\n var adapter;\n var refreshQueue = [];\n var callbackStorage;\n\n var loginIframe = {\n enable: true,\n callbackList: [],\n interval: 5\n };\n\n kc.didInitialize = false;\n\n var useNonce = true;\n var logInfo = createLogger(console.info);\n var logWarn = createLogger(console.warn);\n\n if (!globalThis.isSecureContext) {\n logWarn(\n \"[KEYCLOAK] Keycloak JS must be used in a 'secure context' to function properly as it relies on browser APIs that are otherwise not available.\\n\" +\n \"Continuing to run your application insecurely will lead to unexpected behavior and breakage.\\n\\n\" +\n \"For more information see: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts\"\n );\n }\n\n kc.init = function (initOptions = {}) {\n if (kc.didInitialize) {\n throw new Error(\"A 'Keycloak' instance can only be initialized once.\");\n }\n\n kc.didInitialize = true;\n\n kc.authenticated = false;\n\n callbackStorage = createCallbackStorage();\n var adapters = ['default', 'cordova', 'cordova-native'];\n\n if (adapters.indexOf(initOptions.adapter) > -1) {\n adapter = loadAdapter(initOptions.adapter);\n } else if (typeof initOptions.adapter === \"object\") {\n adapter = initOptions.adapter;\n } else {\n if (window.Cordova || window.cordova) {\n adapter = loadAdapter('cordova');\n } else {\n adapter = loadAdapter();\n }\n }\n\n if (typeof initOptions.useNonce !== 'undefined') {\n useNonce = initOptions.useNonce;\n }\n\n if (typeof initOptions.checkLoginIframe !== 'undefined') {\n loginIframe.enable = initOptions.checkLoginIframe;\n }\n\n if (initOptions.checkLoginIframeInterval) {\n loginIframe.interval = initOptions.checkLoginIframeInterval;\n }\n\n if (initOptions.onLoad === 'login-required') {\n kc.loginRequired = true;\n }\n\n if (initOptions.responseMode) {\n if (initOptions.responseMode === 'query' || initOptions.responseMode === 'fragment') {\n kc.responseMode = initOptions.responseMode;\n } else {\n throw 'Invalid value for responseMode';\n }\n }\n\n if (initOptions.flow) {\n switch (initOptions.flow) {\n case 'standard':\n kc.responseType = 'code';\n break;\n case 'implicit':\n kc.responseType = 'id_token token';\n break;\n case 'hybrid':\n kc.responseType = 'code id_token token';\n break;\n default:\n throw 'Invalid value for flow';\n }\n kc.flow = initOptions.flow;\n }\n\n if (initOptions.timeSkew != null) {\n kc.timeSkew = initOptions.timeSkew;\n }\n\n if(initOptions.redirectUri) {\n kc.redirectUri = initOptions.redirectUri;\n }\n\n if (initOptions.silentCheckSsoRedirectUri) {\n kc.silentCheckSsoRedirectUri = initOptions.silentCheckSsoRedirectUri;\n }\n\n if (typeof initOptions.silentCheckSsoFallback === 'boolean') {\n kc.silentCheckSsoFallback = initOptions.silentCheckSsoFallback;\n } else {\n kc.silentCheckSsoFallback = true;\n }\n\n if (typeof initOptions.pkceMethod !== \"undefined\") {\n if (initOptions.pkceMethod !== \"S256\" && initOptions.pkceMethod !== false) {\n throw new TypeError(`Invalid value for pkceMethod', expected 'S256' or false but got ${initOptions.pkceMethod}.`);\n }\n\n kc.pkceMethod = initOptions.pkceMethod;\n } else {\n kc.pkceMethod = \"S256\";\n }\n\n if (typeof initOptions.enableLogging === 'boolean') {\n kc.enableLogging = initOptions.enableLogging;\n } else {\n kc.enableLogging = false;\n }\n\n if (initOptions.logoutMethod === 'POST') {\n kc.logoutMethod = 'POST';\n } else {\n kc.logoutMethod = 'GET';\n }\n\n if (typeof initOptions.scope === 'string') {\n kc.scope = initOptions.scope;\n }\n\n if (typeof initOptions.acrValues === 'string') {\n kc.acrValues = initOptions.acrValues;\n }\n\n if (typeof initOptions.messageReceiveTimeout === 'number' && initOptions.messageReceiveTimeout > 0) {\n kc.messageReceiveTimeout = initOptions.messageReceiveTimeout;\n } else {\n kc.messageReceiveTimeout = 10000;\n }\n\n if (!kc.responseMode) {\n kc.responseMode = 'fragment';\n }\n if (!kc.responseType) {\n kc.responseType = 'code';\n kc.flow = 'standard';\n }\n\n var promise = createPromise();\n\n var initPromise = createPromise();\n initPromise.promise.then(function() {\n kc.onReady && kc.onReady(kc.authenticated);\n promise.setSuccess(kc.authenticated);\n }).catch(function(error) {\n promise.setError(error);\n });\n\n var configPromise = loadConfig();\n\n function onLoad() {\n var doLogin = function(prompt) {\n if (!prompt) {\n options.prompt = 'none';\n }\n\n if (initOptions.locale) {\n options.locale = initOptions.locale;\n }\n kc.login(options).then(function () {\n initPromise.setSuccess();\n }).catch(function (error) {\n initPromise.setError(error);\n });\n }\n\n var checkSsoSilently = async function() {\n var ifrm = document.createElement(\"iframe\");\n var src = await kc.createLoginUrl({prompt: 'none', redirectUri: kc.silentCheckSsoRedirectUri});\n ifrm.setAttribute(\"src\", src);\n ifrm.setAttribute(\"sandbox\", \"allow-storage-access-by-user-activation allow-scripts allow-same-origin\");\n ifrm.setAttribute(\"title\", \"keycloak-silent-check-sso\");\n ifrm.style.display = \"none\";\n document.body.appendChild(ifrm);\n\n var messageCallback = function(event) {\n if (event.origin !== window.location.origin || ifrm.contentWindow !== event.source) {\n return;\n }\n\n var oauth = parseCallback(event.data);\n processCallback(oauth, initPromise);\n\n document.body.removeChild(ifrm);\n window.removeEventListener(\"message\", messageCallback);\n };\n\n window.addEventListener(\"message\", messageCallback);\n };\n\n var options = {};\n switch (initOptions.onLoad) {\n case 'check-sso':\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (!unchanged) {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n } else {\n initPromise.setSuccess();\n }\n }).catch(function (error) {\n initPromise.setError(error);\n });\n });\n } else {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n }\n break;\n case 'login-required':\n doLogin(true);\n break;\n default:\n throw 'Invalid value for onLoad';\n }\n }\n\n function processInit() {\n var callback = parseCallback(window.location.href);\n\n if (callback) {\n window.history.replaceState(window.history.state, null, callback.newUrl);\n }\n\n if (callback && callback.valid) {\n return setupCheckLoginIframe().then(function() {\n processCallback(callback, initPromise);\n }).catch(function (error) {\n initPromise.setError(error);\n });\n }\n\n if (initOptions.token && initOptions.refreshToken) {\n setToken(initOptions.token, initOptions.refreshToken, initOptions.idToken);\n\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (unchanged) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n scheduleCheckIframe();\n } else {\n initPromise.setSuccess();\n }\n }).catch(function (error) {\n initPromise.setError(error);\n });\n });\n } else {\n kc.updateToken(-1).then(function() {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n }).catch(function(error) {\n kc.onAuthError && kc.onAuthError();\n if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setError(error);\n }\n });\n }\n } else if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setSuccess();\n }\n }\n\n configPromise.then(function () {\n check3pCookiesSupported()\n .then(processInit)\n .catch(function (error) {\n promise.setError(error);\n });\n });\n configPromise.catch(function (error) {\n promise.setError(error);\n });\n\n return promise.promise;\n }\n\n kc.login = function (options) {\n return adapter.login(options);\n }\n\n function generateRandomData(len) {\n if (typeof crypto === \"undefined\" || typeof crypto.getRandomValues === \"undefined\") {\n throw new Error(\"Web Crypto API is not available.\");\n }\n\n return crypto.getRandomValues(new Uint8Array(len));\n }\n\n function generateCodeVerifier(len) {\n return generateRandomString(len, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');\n }\n\n function generateRandomString(len, alphabet){\n var randomData = generateRandomData(len);\n var chars = new Array(len);\n for (var i = 0; i < len; i++) {\n chars[i] = alphabet.charCodeAt(randomData[i] % alphabet.length);\n }\n return String.fromCharCode.apply(null, chars);\n }\n\n async function generatePkceChallenge(pkceMethod, codeVerifier) {\n if (pkceMethod !== \"S256\") {\n throw new TypeError(`Invalid value for 'pkceMethod', expected 'S256' but got '${pkceMethod}'.`);\n }\n\n // hash codeVerifier, then encode as url-safe base64 without padding\n const hashBytes = new Uint8Array(await sha256Digest(codeVerifier));\n const encodedHash = bytesToBase64(hashBytes)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/\\=/g, '');\n\n return encodedHash;\n }\n\n function buildClaimsParameter(requestedAcr){\n var claims = {\n id_token: {\n acr: requestedAcr\n }\n }\n return JSON.stringify(claims);\n }\n\n kc.createLoginUrl = async function(options) {\n var state = createUUID();\n var nonce = createUUID();\n\n var redirectUri = adapter.redirectUri(options);\n\n var callbackState = {\n state: state,\n nonce: nonce,\n redirectUri: encodeURIComponent(redirectUri),\n loginOptions: options\n };\n\n if (options && options.prompt) {\n callbackState.prompt = options.prompt;\n }\n\n var baseUrl;\n if (options && options.action == 'register') {\n baseUrl = kc.endpoints.register();\n } else {\n baseUrl = kc.endpoints.authorize();\n }\n\n var scope = options && options.scope || kc.scope;\n if (!scope) {\n // if scope is not set, default to \"openid\"\n scope = \"openid\";\n } else if (scope.indexOf(\"openid\") === -1) {\n // if openid scope is missing, prefix the given scopes with it\n scope = \"openid \" + scope;\n }\n\n var url = baseUrl\n + '?client_id=' + encodeURIComponent(kc.clientId)\n + '&redirect_uri=' + encodeURIComponent(redirectUri)\n + '&state=' + encodeURIComponent(state)\n + '&response_mode=' + encodeURIComponent(kc.responseMode)\n + '&response_type=' + encodeURIComponent(kc.responseType)\n + '&scope=' + encodeURIComponent(scope);\n if (useNonce) {\n url = url + '&nonce=' + encodeURIComponent(nonce);\n }\n\n if (options && options.prompt) {\n url += '&prompt=' + encodeURIComponent(options.prompt);\n }\n\n if (options && typeof options.maxAge === 'number') {\n url += '&max_age=' + encodeURIComponent(options.maxAge);\n }\n\n if (options && options.loginHint) {\n url += '&login_hint=' + encodeURIComponent(options.loginHint);\n }\n\n if (options && options.idpHint) {\n url += '&kc_idp_hint=' + encodeURIComponent(options.idpHint);\n }\n\n if (options && options.action && options.action != 'register') {\n url += '&kc_action=' + encodeURIComponent(options.action);\n }\n\n if (options && options.locale) {\n url += '&ui_locales=' + encodeURIComponent(options.locale);\n }\n\n if (options && options.acr) {\n var claimsParameter = buildClaimsParameter(options.acr);\n url += '&claims=' + encodeURIComponent(claimsParameter);\n }\n\n if ((options && options.acrValues) || kc.acrValues) {\n url += '&acr_values=' + encodeURIComponent(options.acrValues || kc.acrValues);\n }\n\n if (kc.pkceMethod) {\n try {\n const codeVerifier = generateCodeVerifier(96);\n const pkceChallenge = await generatePkceChallenge(kc.pkceMethod, codeVerifier);\n\n callbackState.pkceCodeVerifier = codeVerifier;\n\n url += '&code_challenge=' + pkceChallenge;\n url += '&code_challenge_method=' + kc.pkceMethod;\n } catch (error) {\n throw new Error(\"Failed to generate PKCE challenge.\", { cause: error });\n }\n }\n\n callbackStorage.add(callbackState);\n\n return url;\n }\n\n kc.logout = function(options) {\n return adapter.logout(options);\n }\n\n kc.createLogoutUrl = function(options) {\n\n const logoutMethod = options?.logoutMethod ?? kc.logoutMethod;\n if (logoutMethod === 'POST') {\n return kc.endpoints.logout();\n }\n\n var url = kc.endpoints.logout()\n + '?client_id=' + encodeURIComponent(kc.clientId)\n + '&post_logout_redirect_uri=' + encodeURIComponent(adapter.redirectUri(options, false));\n\n if (kc.idToken) {\n url += '&id_token_hint=' + encodeURIComponent(kc.idToken);\n }\n\n return url;\n }\n\n kc.register = function (options) {\n return adapter.register(options);\n }\n\n kc.createRegisterUrl = async function(options) {\n if (!options) {\n options = {};\n }\n options.action = 'register';\n return await kc.createLoginUrl(options);\n }\n\n kc.createAccountUrl = function(options) {\n var realm = getRealmUrl();\n var url = undefined;\n if (typeof realm !== 'undefined') {\n url = realm\n + '/account'\n + '?referrer=' + encodeURIComponent(kc.clientId)\n + '&referrer_uri=' + encodeURIComponent(adapter.redirectUri(options));\n }\n return url;\n }\n\n kc.accountManagement = function() {\n return adapter.accountManagement();\n }\n\n kc.hasRealmRole = function (role) {\n var access = kc.realmAccess;\n return !!access && access.roles.indexOf(role) >= 0;\n }\n\n kc.hasResourceRole = function(role, resource) {\n if (!kc.resourceAccess) {\n return false;\n }\n\n var access = kc.resourceAccess[resource || kc.clientId];\n return !!access && access.roles.indexOf(role) >= 0;\n }\n\n kc.loadUserProfile = function() {\n var url = getRealmUrl() + '/account';\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.profile = JSON.parse(req.responseText);\n promise.setSuccess(kc.profile);\n } else {\n promise.setError();\n }\n }\n }\n\n req.send();\n\n return promise.promise;\n }\n\n kc.loadUserInfo = function() {\n var url = kc.endpoints.userinfo();\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.userInfo = JSON.parse(req.responseText);\n promise.setSuccess(kc.userInfo);\n } else {\n promise.setError();\n }\n }\n }\n\n req.send();\n\n return promise.promise;\n }\n\n kc.isTokenExpired = function(minValidity) {\n if (!kc.tokenParsed || (!kc.refreshToken && kc.flow != 'implicit' )) {\n throw 'Not authenticated';\n }\n\n if (kc.timeSkew == null) {\n logInfo('[KEYCLOAK] Unable to determine if token is expired as timeskew is not set');\n return true;\n }\n\n var expiresIn = kc.tokenParsed['exp'] - Math.ceil(new Date().getTime() / 1000) + kc.timeSkew;\n if (minValidity) {\n if (isNaN(minValidity)) {\n throw 'Invalid minValidity';\n }\n expiresIn -= minValidity;\n }\n return expiresIn < 0;\n }\n\n kc.updateToken = function(minValidity) {\n var promise = createPromise();\n\n if (!kc.refreshToken) {\n promise.setError();\n return promise.promise;\n }\n\n minValidity = minValidity || 5;\n\n var exec = function() {\n var refreshToken = false;\n if (minValidity == -1) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: forced refresh');\n } else if (!kc.tokenParsed || kc.isTokenExpired(minValidity)) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: token expired');\n }\n\n if (!refreshToken) {\n promise.setSuccess(false);\n } else {\n var params = 'grant_type=refresh_token&' + 'refresh_token=' + kc.refreshToken;\n var url = kc.endpoints.token();\n\n refreshQueue.push(promise);\n\n if (refreshQueue.length == 1) {\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n req.withCredentials = true;\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n\n var timeLocal = new Date().getTime();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n logInfo('[KEYCLOAK] Token refreshed');\n\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n var tokenResponse = JSON.parse(req.responseText);\n\n setToken(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], timeLocal);\n\n kc.onAuthRefreshSuccess && kc.onAuthRefreshSuccess();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setSuccess(true);\n }\n } else {\n logWarn('[KEYCLOAK] Failed to refresh token');\n\n if (req.status == 400) {\n kc.clearToken();\n }\n\n kc.onAuthRefreshError && kc.onAuthRefreshError();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setError(\"Failed to refresh token: An unexpected HTTP error occurred while attempting to refresh the token.\");\n }\n }\n }\n };\n\n req.send(params);\n }\n }\n }\n\n if (loginIframe.enable) {\n var iframePromise = checkLoginIframe();\n iframePromise.then(function() {\n exec();\n }).catch(function(error) {\n promise.setError(error);\n });\n } else {\n exec();\n }\n\n return promise.promise;\n }\n\n kc.clearToken = function() {\n if (kc.token) {\n setToken(null, null, null);\n kc.onAuthLogout && kc.onAuthLogout();\n if (kc.loginRequired) {\n kc.login();\n }\n }\n }\n\n function getRealmUrl() {\n if (typeof kc.authServerUrl !== 'undefined') {\n if (kc.authServerUrl.charAt(kc.authServerUrl.length - 1) == '/') {\n return kc.authServerUrl + 'realms/' + encodeURIComponent(kc.realm);\n } else {\n return kc.authServerUrl + '/realms/' + encodeURIComponent(kc.realm);\n }\n } else {\n return undefined;\n }\n }\n\n function getOrigin() {\n if (!window.location.origin) {\n return window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');\n } else {\n return window.location.origin;\n }\n }\n\n function processCallback(oauth, promise) {\n var code = oauth.code;\n var error = oauth.error;\n var prompt = oauth.prompt;\n\n var timeLocal = new Date().getTime();\n\n if (oauth['kc_action_status']) {\n kc.onActionUpdate && kc.onActionUpdate(oauth['kc_action_status'], oauth['kc_action']);\n }\n\n if (error) {\n if (prompt != 'none') {\n if (oauth.error_description && oauth.error_description === \"authentication_expired\") {\n kc.login(oauth.loginOptions);\n } else {\n var errorData = { error: error, error_description: oauth.error_description };\n kc.onAuthError && kc.onAuthError(errorData);\n promise && promise.setError(errorData);\n }\n } else {\n promise && promise.setSuccess();\n }\n return;\n } else if ((kc.flow != 'standard') && (oauth.access_token || oauth.id_token)) {\n authSuccess(oauth.access_token, null, oauth.id_token, true);\n }\n\n if ((kc.flow != 'implicit') && code) {\n var params = 'code=' + code + '&grant_type=authorization_code';\n var url = kc.endpoints.token();\n\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n params += '&redirect_uri=' + oauth.redirectUri;\n\n if (oauth.pkceCodeVerifier) {\n params += '&code_verifier=' + oauth.pkceCodeVerifier;\n }\n\n req.withCredentials = true;\n\n req.onreadystatechange = function() {\n if (req.readyState == 4) {\n if (req.status == 200) {\n\n var tokenResponse = JSON.parse(req.responseText);\n authSuccess(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], kc.flow === 'standard');\n scheduleCheckIframe();\n } else {\n kc.onAuthError && kc.onAuthError();\n promise && promise.setError();\n }\n }\n };\n\n req.send(params);\n }\n\n function authSuccess(accessToken, refreshToken, idToken, fulfillPromise) {\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n setToken(accessToken, refreshToken, idToken, timeLocal);\n\n if (useNonce && (kc.idTokenParsed && kc.idTokenParsed.nonce != oauth.storedNonce)) {\n logInfo('[KEYCLOAK] Invalid nonce, clearing token');\n kc.clearToken();\n promise && promise.setError();\n } else {\n if (fulfillPromise) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n promise && promise.setSuccess();\n }\n }\n }\n\n }\n\n function loadConfig() {\n var promise = createPromise();\n var configUrl;\n\n if (typeof config === 'string') {\n configUrl = config;\n }\n\n function setupOidcEndoints(oidcConfiguration) {\n if (! oidcConfiguration) {\n kc.endpoints = {\n authorize: function() {\n return getRealmUrl() + '/protocol/openid-connect/auth';\n },\n token: function() {\n return getRealmUrl() + '/protocol/openid-connect/token';\n },\n logout: function() {\n return getRealmUrl() + '/protocol/openid-connect/logout';\n },\n checkSessionIframe: function() {\n return getRealmUrl() + '/protocol/openid-connect/login-status-iframe.html';\n },\n thirdPartyCookiesIframe: function() {\n return getRealmUrl() + '/protocol/openid-connect/3p-cookies/step1.html';\n },\n register: function() {\n return getRealmUrl() + '/protocol/openid-connect/registrations';\n },\n userinfo: function() {\n return getRealmUrl() + '/protocol/openid-connect/userinfo';\n }\n };\n } else {\n kc.endpoints = {\n authorize: function() {\n return oidcConfiguration.authorization_endpoint;\n },\n token: function() {\n return oidcConfiguration.token_endpoint;\n },\n logout: function() {\n if (!oidcConfiguration.end_session_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.end_session_endpoint;\n },\n checkSessionIframe: function() {\n if (!oidcConfiguration.check_session_iframe) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.check_session_iframe;\n },\n register: function() {\n throw 'Redirection to \"Register user\" page not supported in standard OIDC mode';\n },\n userinfo: function() {\n if (!oidcConfiguration.userinfo_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.userinfo_endpoint;\n }\n }\n }\n }\n\n if (configUrl) {\n var req = new XMLHttpRequest();\n req.open('GET', configUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var config = JSON.parse(req.responseText);\n\n kc.authServerUrl = config['auth-server-url'];\n kc.realm = config['realm'];\n kc.clientId = config['resource'];\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n kc.clientId = config.clientId;\n\n var oidcProvider = config['oidcProvider'];\n if (!oidcProvider) {\n kc.authServerUrl = config.url;\n kc.realm = config.realm;\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n if (typeof oidcProvider === 'string') {\n var oidcProviderConfigUrl;\n if (oidcProvider.charAt(oidcProvider.length - 1) == '/') {\n oidcProviderConfigUrl = oidcProvider + '.well-known/openid-configuration';\n } else {\n oidcProviderConfigUrl = oidcProvider + '/.well-known/openid-configuration';\n }\n var req = new XMLHttpRequest();\n req.open('GET', oidcProviderConfigUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var oidcProviderConfig = JSON.parse(req.responseText);\n setupOidcEndoints(oidcProviderConfig);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n setupOidcEndoints(oidcProvider);\n promise.setSuccess();\n }\n }\n }\n\n return promise.promise;\n }\n\n function fileLoaded(xhr) {\n return xhr.status == 0 && xhr.responseText && xhr.responseURL.startsWith('file:');\n }\n\n function setToken(token, refreshToken, idToken, timeLocal) {\n if (kc.tokenTimeoutHandle) {\n clearTimeout(kc.tokenTimeoutHandle);\n kc.tokenTimeoutHandle = null;\n }\n\n if (refreshToken) {\n kc.refreshToken = refreshToken;\n kc.refreshTokenParsed = decodeToken(refreshToken);\n } else {\n delete kc.refreshToken;\n delete kc.refreshTokenParsed;\n }\n\n if (idToken) {\n kc.idToken = idToken;\n kc.idTokenParsed = decodeToken(idToken);\n } else {\n delete kc.idToken;\n delete kc.idTokenParsed;\n }\n\n if (token) {\n kc.token = token;\n kc.tokenParsed = decodeToken(token);\n kc.sessionId = kc.tokenParsed.sid;\n kc.authenticated = true;\n kc.subject = kc.tokenParsed.sub;\n kc.realmAccess = kc.tokenParsed.realm_access;\n kc.resourceAccess = kc.tokenParsed.resource_access;\n\n if (timeLocal) {\n kc.timeSkew = Math.floor(timeLocal / 1000) - kc.tokenParsed.iat;\n }\n\n if (kc.timeSkew != null) {\n logInfo('[KEYCLOAK] Estimated time difference between browser and server is ' + kc.timeSkew + ' seconds');\n\n if (kc.onTokenExpired) {\n var expiresIn = (kc.tokenParsed['exp'] - (new Date().getTime() / 1000) + kc.timeSkew) * 1000;\n logInfo('[KEYCLOAK] Token expires in ' + Math.round(expiresIn / 1000) + ' s');\n if (expiresIn <= 0) {\n kc.onTokenExpired();\n } else {\n kc.tokenTimeoutHandle = setTimeout(kc.onTokenExpired, expiresIn);\n }\n }\n }\n } else {\n delete kc.token;\n delete kc.tokenParsed;\n delete kc.subject;\n delete kc.realmAccess;\n delete kc.resourceAccess;\n\n kc.authenticated = false;\n }\n }\n\n function createUUID() {\n if (typeof crypto === \"undefined\" || typeof crypto.randomUUID === \"undefined\") {\n throw new Error(\"Web Crypto API is not available.\");\n }\n\n return crypto.randomUUID();\n }\n\n function parseCallback(url) {\n var oauth = parseCallbackUrl(url);\n if (!oauth) {\n return;\n }\n\n var oauthState = callbackStorage.get(oauth.state);\n\n if (oauthState) {\n oauth.valid = true;\n oauth.redirectUri = oauthState.redirectUri;\n oauth.storedNonce = oauthState.nonce;\n oauth.prompt = oauthState.prompt;\n oauth.pkceCodeVerifier = oauthState.pkceCodeVerifier;\n oauth.loginOptions = oauthState.loginOptions;\n }\n\n return oauth;\n }\n\n function parseCallbackUrl(url) {\n var supportedParams;\n switch (kc.flow) {\n case 'standard':\n supportedParams = ['code', 'state', 'session_state', 'kc_action_status', 'kc_action', 'iss'];\n break;\n case 'implicit':\n supportedParams = ['access_token', 'token_type', 'id_token', 'state', 'session_state', 'expires_in', 'kc_action_status', 'kc_action', 'iss'];\n break;\n case 'hybrid':\n supportedParams = ['access_token', 'token_type', 'id_token', 'code', 'state', 'session_state', 'expires_in', 'kc_action_status', 'kc_action', 'iss'];\n break;\n }\n\n supportedParams.push('error');\n supportedParams.push('error_description');\n supportedParams.push('error_uri');\n\n var queryIndex = url.indexOf('?');\n var fragmentIndex = url.indexOf('#');\n\n var newUrl;\n var parsed;\n\n if (kc.responseMode === 'query' && queryIndex !== -1) {\n newUrl = url.substring(0, queryIndex);\n parsed = parseCallbackParams(url.substring(queryIndex + 1, fragmentIndex !== -1 ? fragmentIndex : url.length), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '?' + parsed.paramsString;\n }\n if (fragmentIndex !== -1) {\n newUrl += url.substring(fragmentIndex);\n }\n } else if (kc.responseMode === 'fragment' && fragmentIndex !== -1) {\n newUrl = url.substring(0, fragmentIndex);\n parsed = parseCallbackParams(url.substring(fragmentIndex + 1), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '#' + parsed.paramsString;\n }\n }\n\n if (parsed && parsed.oauthParams) {\n if (kc.flow === 'standard' || kc.flow === 'hybrid') {\n if ((parsed.oauthParams.code || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n } else if (kc.flow === 'implicit') {\n if ((parsed.oauthParams.access_token || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n }\n }\n }\n\n function parseCallbackParams(paramsString, supportedParams) {\n var p = paramsString.split('&');\n var result = {\n paramsString: '',\n oauthParams: {}\n }\n for (var i = 0; i < p.length; i++) {\n var split = p[i].indexOf(\"=\");\n var key = p[i].slice(0, split);\n if (supportedParams.indexOf(key) !== -1) {\n result.oauthParams[key] = p[i].slice(split + 1);\n } else {\n if (result.paramsString !== '') {\n result.paramsString += '&';\n }\n result.paramsString += p[i];\n }\n }\n return result;\n }\n\n function createPromise() {\n // Need to create a native Promise which also preserves the\n // interface of the custom promise type previously used by the API\n var p = {\n setSuccess: function(result) {\n p.resolve(result);\n },\n\n setError: function(result) {\n p.reject(result);\n }\n };\n p.promise = new Promise(function(resolve, reject) {\n p.resolve = resolve;\n p.reject = reject;\n });\n\n return p;\n }\n\n // Function to extend existing native Promise with timeout\n function applyTimeoutToPromise(promise, timeout, errorMessage) {\n var timeoutHandle = null;\n var timeoutPromise = new Promise(function (resolve, reject) {\n timeoutHandle = setTimeout(function () {\n reject({ \"error\": errorMessage || \"Promise is not settled within timeout of \" + timeout + \"ms\" });\n }, timeout);\n });\n\n return Promise.race([promise, timeoutPromise]).finally(function () {\n clearTimeout(timeoutHandle);\n });\n }\n\n function setupCheckLoginIframe() {\n var promise = createPromise();\n\n if (!loginIframe.enable) {\n promise.setSuccess();\n return promise.promise;\n }\n\n if (loginIframe.iframe) {\n promise.setSuccess();\n return promise.promise;\n }\n\n var iframe = document.createElement('iframe');\n loginIframe.iframe = iframe;\n\n iframe.onload = function() {\n var authUrl = kc.endpoints.authorize();\n if (authUrl.charAt(0) === '/') {\n loginIframe.iframeOrigin = getOrigin();\n } else {\n loginIframe.iframeOrigin = authUrl.substring(0, authUrl.indexOf('/', 8));\n }\n promise.setSuccess();\n }\n\n var src = kc.endpoints.checkSessionIframe();\n iframe.setAttribute('src', src );\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin');\n iframe.setAttribute('title', 'keycloak-session-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if ((event.origin !== loginIframe.iframeOrigin) || (loginIframe.iframe.contentWindow !== event.source)) {\n return;\n }\n\n if (!(event.data == 'unchanged' || event.data == 'changed' || event.data == 'error')) {\n return;\n }\n\n\n if (event.data != 'unchanged') {\n kc.clearToken();\n }\n\n var callbacks = loginIframe.callbackList.splice(0, loginIframe.callbackList.length);\n\n for (var i = callbacks.length - 1; i >= 0; --i) {\n var promise = callbacks[i];\n if (event.data == 'error') {\n promise.setError();\n } else {\n promise.setSuccess(event.data == 'unchanged');\n }\n }\n };\n\n window.addEventListener('message', messageCallback, false);\n\n return promise.promise;\n }\n\n function scheduleCheckIframe() {\n if (loginIframe.enable) {\n if (kc.token) {\n setTimeout(function() {\n checkLoginIframe().then(function(unchanged) {\n if (unchanged) {\n scheduleCheckIframe();\n }\n });\n }, loginIframe.interval * 1000);\n }\n }\n }\n\n function checkLoginIframe() {\n var promise = createPromise();\n\n if (loginIframe.iframe && loginIframe.iframeOrigin ) {\n var msg = kc.clientId + ' ' + (kc.sessionId ? kc.sessionId : '');\n loginIframe.callbackList.push(promise);\n var origin = loginIframe.iframeOrigin;\n if (loginIframe.callbackList.length == 1) {\n loginIframe.iframe.contentWindow.postMessage(msg, origin);\n }\n } else {\n promise.setSuccess();\n }\n\n return promise.promise;\n }\n\n function check3pCookiesSupported() {\n var promise = createPromise();\n\n if ((loginIframe.enable || kc.silentCheckSsoRedirectUri) && typeof kc.endpoints.thirdPartyCookiesIframe === 'function') {\n var iframe = document.createElement('iframe');\n iframe.setAttribute('src', kc.endpoints.thirdPartyCookiesIframe());\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin');\n iframe.setAttribute('title', 'keycloak-3p-check-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if (iframe.contentWindow !== event.source) {\n return;\n }\n\n if (event.data !== \"supported\" && event.data !== \"unsupported\") {\n return;\n } else if (event.data === \"unsupported\") {\n logWarn(\n \"[KEYCLOAK] Your browser is blocking access to 3rd-party cookies, this means:\\n\\n\" +\n \" - It is not possible to retrieve tokens without redirecting to the Keycloak server (a.k.a. no support for silent authentication).\\n\" +\n \" - It is not possible to automatically detect changes to the session status (such as the user logging out in another tab).\\n\\n\" +\n \"For more information see: https://www.keycloak.org/securing-apps/javascript-adapter#_modern_browsers\"\n );\n\n loginIframe.enable = false;\n if (kc.silentCheckSsoFallback) {\n kc.silentCheckSsoRedirectUri = false;\n }\n }\n\n document.body.removeChild(iframe);\n window.removeEventListener(\"message\", messageCallback);\n promise.setSuccess();\n };\n\n window.addEventListener('message', messageCallback, false);\n } else {\n promise.setSuccess();\n }\n\n return applyTimeoutToPromise(promise.promise, kc.messageReceiveTimeout, \"Timeout when waiting for 3rd party check iframe message.\");\n }\n\n function loadAdapter(type) {\n if (!type || type == 'default') {\n return {\n login: async function(options) {\n window.location.assign(await kc.createLoginUrl(options));\n return createPromise().promise;\n },\n\n logout: async function(options) {\n\n const logoutMethod = options?.logoutMethod ?? kc.logoutMethod;\n if (logoutMethod === \"GET\") {\n window.location.replace(kc.createLogoutUrl(options));\n return;\n }\n\n // Create form to send POST request.\n const form = document.createElement(\"form\");\n\n form.setAttribute(\"method\", \"POST\");\n form.setAttribute(\"action\", kc.createLogoutUrl(options));\n form.style.display = \"none\";\n\n // Add data to form as hidden input fields.\n const data = {\n id_token_hint: kc.idToken,\n client_id: kc.clientId,\n post_logout_redirect_uri: adapter.redirectUri(options, false)\n };\n\n for (const [name, value] of Object.entries(data)) {\n const input = document.createElement(\"input\");\n\n input.setAttribute(\"type\", \"hidden\");\n input.setAttribute(\"name\", name);\n input.setAttribute(\"value\", value);\n\n form.appendChild(input);\n }\n\n // Append form to page and submit it to perform logout and redirect.\n document.body.appendChild(form);\n form.submit();\n },\n\n register: async function(options) {\n window.location.assign(await kc.createRegisterUrl(options));\n return createPromise().promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.location.href = accountUrl;\n } else {\n throw \"Not supported by the OIDC server\";\n }\n return createPromise().promise;\n },\n\n redirectUri: function(options, encodeHash) {\n if (arguments.length == 1) {\n encodeHash = true;\n }\n\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return location.href;\n }\n }\n };\n }\n\n if (type == 'cordova') {\n loginIframe.enable = false;\n var cordovaOpenWindowWrapper = function(loginUrl, target, options) {\n if (window.cordova && window.cordova.InAppBrowser) {\n // Use inappbrowser for IOS and Android if available\n return window.cordova.InAppBrowser.open(loginUrl, target, options);\n } else {\n return window.open(loginUrl, target, options);\n }\n };\n\n var shallowCloneCordovaOptions = function (userOptions) {\n if (userOptions && userOptions.cordovaOptions) {\n return Object.keys(userOptions.cordovaOptions).reduce(function (options, optionName) {\n options[optionName] = userOptions.cordovaOptions[optionName];\n return options;\n }, {});\n } else {\n return {};\n }\n };\n\n var formatCordovaOptions = function (cordovaOptions) {\n return Object.keys(cordovaOptions).reduce(function (options, optionName) {\n options.push(optionName+\"=\"+cordovaOptions[optionName]);\n return options;\n }, []).join(\",\");\n };\n\n var createCordovaOptions = function (userOptions) {\n var cordovaOptions = shallowCloneCordovaOptions(userOptions);\n cordovaOptions.location = 'no';\n if (userOptions && userOptions.prompt == 'none') {\n cordovaOptions.hidden = 'yes';\n }\n return formatCordovaOptions(cordovaOptions);\n };\n\n var getCordovaRedirectUri = function() {\n return kc.redirectUri || 'http://localhost';\n }\n\n return {\n login: async function(options) {\n var promise = createPromise();\n\n var cordovaOptions = createCordovaOptions(options);\n var loginUrl = await kc.createLoginUrl(options);\n var ref = cordovaOpenWindowWrapper(loginUrl, '_blank', cordovaOptions);\n var completed = false;\n\n var closed = false;\n var closeBrowser = function() {\n closed = true;\n ref.close();\n };\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (!completed) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n } else {\n promise.setError();\n closeBrowser();\n }\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (!closed) {\n promise.setError({\n reason: \"closed_by_user\"\n });\n }\n });\n\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n\n var logoutUrl = kc.createLogoutUrl(options);\n var ref = cordovaOpenWindowWrapper(logoutUrl, '_blank', 'location=no,hidden=yes,clearcache=yes');\n\n var error;\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n } else {\n error = true;\n ref.close();\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (error) {\n promise.setError();\n } else {\n kc.clearToken();\n promise.setSuccess();\n }\n });\n\n return promise.promise;\n },\n\n register : async function(options) {\n var promise = createPromise();\n var registerUrl = await kc.createRegisterUrl();\n var cordovaOptions = createCordovaOptions(options);\n var ref = cordovaOpenWindowWrapper(registerUrl, '_blank', cordovaOptions);\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n }\n });\n return promise.promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n var ref = cordovaOpenWindowWrapper(accountUrl, '_blank', 'location=no');\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n }\n });\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n return getCordovaRedirectUri();\n }\n }\n }\n\n if (type == 'cordova-native') {\n loginIframe.enable = false;\n\n return {\n login: async function(options) {\n var promise = createPromise();\n var loginUrl = await kc.createLoginUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n\n window.cordova.plugins.browsertab.openUrl(loginUrl);\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n var logoutUrl = kc.createLogoutUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n kc.clearToken();\n promise.setSuccess();\n });\n\n window.cordova.plugins.browsertab.openUrl(logoutUrl);\n return promise.promise;\n },\n\n register : async function(options) {\n var promise = createPromise();\n var registerUrl = await kc.createRegisterUrl(options);\n universalLinks.subscribe('keycloak' , function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n window.cordova.plugins.browsertab.openUrl(registerUrl);\n return promise.promise;\n\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.cordova.plugins.browsertab.openUrl(accountUrl);\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return \"http://localhost\";\n }\n }\n }\n }\n\n throw 'invalid adapter type: ' + type;\n }\n\n const STORAGE_KEY_PREFIX = 'kc-callback-';\n\n var LocalStorage = function() {\n if (!(this instanceof LocalStorage)) {\n return new LocalStorage();\n }\n\n localStorage.setItem('kc-test', 'test');\n localStorage.removeItem('kc-test');\n\n var cs = this;\n\n /**\n * Clears all values from local storage that are no longer valid.\n */\n function clearInvalidValues() {\n const currentTime = Date.now();\n\n for (const [key, value] of getStoredEntries()) {\n // Attempt to parse the expiry time from the value.\n const expiry = parseExpiry(value);\n\n // Discard the value if it is malformed or expired.\n if (expiry === null || expiry < currentTime) {\n localStorage.removeItem(key);\n }\n }\n }\n\n /**\n * Clears all known values from local storage.\n */\n function clearAllValues() {\n for (const [key] of getStoredEntries()) {\n localStorage.removeItem(key);\n }\n }\n\n /**\n * Gets all entries stored in local storage that are known to be managed by this class.\n * @returns {Array<[string, unknown]>} An array of key-value pairs.\n */\n function getStoredEntries() {\n return Object.entries(localStorage).filter(([key]) => key.startsWith(STORAGE_KEY_PREFIX));\n }\n\n /**\n * Parses the expiry time from a value stored in local storage.\n * @param {unknown} value\n * @returns {number | null} The expiry time in milliseconds, or `null` if the value is malformed.\n */\n function parseExpiry(value) {\n let parsedValue;\n\n // Attempt to parse the value as JSON.\n try {\n parsedValue = JSON.parse(value);\n } catch (error) {\n return null;\n }\n\n // Attempt to extract the 'expires' property.\n if (isObject(parsedValue) && 'expires' in parsedValue && typeof parsedValue.expires === 'number') {\n return parsedValue.expires;\n }\n\n return null;\n }\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var key = STORAGE_KEY_PREFIX + state;\n var value = localStorage.getItem(key);\n if (value) {\n localStorage.removeItem(key);\n value = JSON.parse(value);\n }\n\n clearInvalidValues();\n return value;\n };\n\n cs.add = function(state) {\n clearInvalidValues();\n\n const key = STORAGE_KEY_PREFIX + state.state;\n const value = JSON.stringify({\n ...state,\n // Set the expiry time to 1 hour from now.\n expires: Date.now() + (60 * 60 * 1000)\n });\n\n try {\n localStorage.setItem(key, value);\n } catch (error) {\n // If the storage is full, clear all known values and try again.\n clearAllValues();\n localStorage.setItem(key, value);\n }\n };\n };\n\n var CookieStorage = function() {\n if (!(this instanceof CookieStorage)) {\n return new CookieStorage();\n }\n\n var cs = this;\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var value = getCookie(STORAGE_KEY_PREFIX + state);\n setCookie(STORAGE_KEY_PREFIX + state, '', cookieExpiration(-100));\n if (value) {\n return JSON.parse(value);\n }\n };\n\n cs.add = function(state) {\n setCookie(STORAGE_KEY_PREFIX + state.state, JSON.stringify(state), cookieExpiration(60));\n };\n\n cs.removeItem = function(key) {\n setCookie(key, '', cookieExpiration(-100));\n };\n\n var cookieExpiration = function (minutes) {\n var exp = new Date();\n exp.setTime(exp.getTime() + (minutes*60*1000));\n return exp;\n };\n\n var getCookie = function (key) {\n var name = key + '=';\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n };\n\n var setCookie = function (key, value, expirationDate) {\n var cookie = key + '=' + value + '; '\n + 'expires=' + expirationDate.toUTCString() + '; ';\n document.cookie = cookie;\n }\n };\n\n function createCallbackStorage() {\n try {\n return new LocalStorage();\n } catch (err) {\n }\n\n return new CookieStorage();\n }\n\n function createLogger(fn) {\n return function() {\n if (kc.enableLogging) {\n fn.apply(console, Array.prototype.slice.call(arguments));\n }\n };\n }\n}\n\nexport default Keycloak;\n\n/**\n * @param {ArrayBuffer} bytes\n * @see https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem\n */\nfunction bytesToBase64(bytes) {\n const binString = String.fromCodePoint(...bytes);\n return btoa(binString);\n}\n\n/**\n * @param {string} message\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#basic_example\n */\nasync function sha256Digest(message) {\n const encoder = new TextEncoder();\n const data = encoder.encode(message);\n\n if (typeof crypto === \"undefined\" || typeof crypto.subtle === \"undefined\") {\n throw new Error(\"Web Crypto API is not available.\");\n }\n\n return await crypto.subtle.digest(\"SHA-256\", data);\n}\n\n/**\n * @param {string} token\n */\nfunction decodeToken(token) {\n const [header, payload] = token.split(\".\");\n\n if (typeof payload !== \"string\") {\n throw new Error(\"Unable to decode token, payload not found.\");\n }\n\n let decoded;\n\n try {\n decoded = base64UrlDecode(payload);\n } catch (error) {\n throw new Error(\"Unable to decode token, payload is not a valid Base64URL value.\", { cause: error });\n }\n\n try {\n return JSON.parse(decoded);\n } catch (error) {\n throw new Error(\"Unable to decode token, payload is not a valid JSON value.\", { cause: error });\n }\n}\n\n/**\n * @param {string} input\n */\nfunction base64UrlDecode(input) {\n let output = input\n .replaceAll(\"-\", \"+\")\n .replaceAll(\"_\", \"/\");\n\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"Input is not of the correct length.\");\n }\n\n try {\n return b64DecodeUnicode(output);\n } catch (error) {\n return atob(output);\n }\n}\n\n/**\n * @param {string} input\n */\nfunction b64DecodeUnicode(input) {\n return decodeURIComponent(atob(input).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n\n if (code.length < 2) {\n code = \"0\" + code;\n }\n\n return \"%\" + code;\n }));\n}\n\n/**\n * Check if the input is an object that can be operated on.\n * @param {unknown} input\n */\nfunction isObject(input) {\n return typeof input === 'object' && input !== null;\n}\n","const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\nconst supportsRequestInitExt = () => {\n return typeof process === \"object\" && Number.parseInt(process?.versions?.node?.substring(0, 2)) >= 18 && process.versions.undici;\n};\nfunction randomID() {\n return Math.random().toString(36).slice(2, 11);\n}\nfunction createClient(clientOptions) {\n let {\n baseUrl = \"\",\n Request: CustomRequest = globalThis.Request,\n fetch: baseFetch = globalThis.fetch,\n querySerializer: globalQuerySerializer,\n bodySerializer: globalBodySerializer,\n headers: baseHeaders,\n requestInitExt = void 0,\n ...baseOptions\n } = { ...clientOptions };\n requestInitExt = supportsRequestInitExt() ? requestInitExt : void 0;\n baseUrl = removeTrailingSlash(baseUrl);\n const globalMiddlewares = [];\n async function coreFetch(schemaPath, fetchOptions) {\n const {\n baseUrl: localBaseUrl,\n fetch = baseFetch,\n Request = CustomRequest,\n headers,\n params = {},\n parseAs = \"json\",\n querySerializer: requestQuerySerializer,\n bodySerializer = globalBodySerializer ?? defaultBodySerializer,\n body,\n middleware: requestMiddlewares = [],\n ...init\n } = fetchOptions || {};\n let finalBaseUrl = baseUrl;\n if (localBaseUrl) {\n finalBaseUrl = removeTrailingSlash(localBaseUrl) ?? baseUrl;\n }\n let querySerializer = typeof globalQuerySerializer === \"function\" ? globalQuerySerializer : createQuerySerializer(globalQuerySerializer);\n if (requestQuerySerializer) {\n querySerializer = typeof requestQuerySerializer === \"function\" ? requestQuerySerializer : createQuerySerializer({\n ...typeof globalQuerySerializer === \"object\" ? globalQuerySerializer : {},\n ...requestQuerySerializer\n });\n }\n const serializedBody = body === void 0 ? void 0 : bodySerializer(\n body,\n // Note: we declare mergeHeaders() both here and below because it’s a bit of a chicken-or-egg situation:\n // bodySerializer() needs all headers so we aren’t dropping ones set by the user, however,\n // the result of this ALSO sets the lowest-priority content-type header. So we re-merge below,\n // setting the content-type at the very beginning to be overwritten.\n // Lastly, based on the way headers work, it’s not a simple “present-or-not” check becauase null intentionally un-sets headers.\n mergeHeaders(baseHeaders, headers, params.header)\n );\n const finalHeaders = mergeHeaders(\n // with no body, we should not to set Content-Type\n serializedBody === void 0 || // if serialized body is FormData; browser will correctly set Content-Type & boundary expression\n serializedBody instanceof FormData ? {} : {\n \"Content-Type\": \"application/json\"\n },\n baseHeaders,\n headers,\n params.header\n );\n const finalMiddlewares = [...globalMiddlewares, ...requestMiddlewares];\n const requestInit = {\n redirect: \"follow\",\n ...baseOptions,\n ...init,\n body: serializedBody,\n headers: finalHeaders\n };\n let id;\n let options;\n let request = new Request(\n createFinalURL(schemaPath, { baseUrl: finalBaseUrl, params, querySerializer }),\n requestInit\n );\n let response;\n for (const key in init) {\n if (!(key in request)) {\n request[key] = init[key];\n }\n }\n if (finalMiddlewares.length) {\n id = randomID();\n options = Object.freeze({\n baseUrl: finalBaseUrl,\n fetch,\n parseAs,\n querySerializer,\n bodySerializer\n });\n for (const m of finalMiddlewares) {\n if (m && typeof m === \"object\" && typeof m.onRequest === \"function\") {\n const result = await m.onRequest({\n request,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (result instanceof Request) {\n request = result;\n } else if (result instanceof Response) {\n response = result;\n break;\n } else {\n throw new Error(\"onRequest: must return new Request() or Response() when modifying the request\");\n }\n }\n }\n }\n }\n if (!response) {\n try {\n response = await fetch(request, requestInitExt);\n } catch (error2) {\n let errorAfterMiddleware = error2;\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onError === \"function\") {\n const result = await m.onError({\n request,\n error: errorAfterMiddleware,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (result instanceof Response) {\n errorAfterMiddleware = void 0;\n response = result;\n break;\n }\n if (result instanceof Error) {\n errorAfterMiddleware = result;\n continue;\n }\n throw new Error(\"onError: must return new Response() or instance of Error\");\n }\n }\n }\n }\n if (errorAfterMiddleware) {\n throw errorAfterMiddleware;\n }\n }\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onResponse === \"function\") {\n const result = await m.onResponse({\n request,\n response,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (!(result instanceof Response)) {\n throw new Error(\"onResponse: must return new Response() when modifying the response\");\n }\n response = result;\n }\n }\n }\n }\n }\n if (response.status === 204 || request.method === \"HEAD\" || response.headers.get(\"Content-Length\") === \"0\") {\n return response.ok ? { data: void 0, response } : { error: void 0, response };\n }\n if (response.ok) {\n if (parseAs === \"stream\") {\n return { data: response.body, response };\n }\n return { data: await response[parseAs](), response };\n }\n let error = await response.text();\n try {\n error = JSON.parse(error);\n } catch {\n }\n return { error, response };\n }\n return {\n request(method, url, init) {\n return coreFetch(url, { ...init, method: method.toUpperCase() });\n },\n /** Call a GET endpoint */\n GET(url, init) {\n return coreFetch(url, { ...init, method: \"GET\" });\n },\n /** Call a PUT endpoint */\n PUT(url, init) {\n return coreFetch(url, { ...init, method: \"PUT\" });\n },\n /** Call a POST endpoint */\n POST(url, init) {\n return coreFetch(url, { ...init, method: \"POST\" });\n },\n /** Call a DELETE endpoint */\n DELETE(url, init) {\n return coreFetch(url, { ...init, method: \"DELETE\" });\n },\n /** Call a OPTIONS endpoint */\n OPTIONS(url, init) {\n return coreFetch(url, { ...init, method: \"OPTIONS\" });\n },\n /** Call a HEAD endpoint */\n HEAD(url, init) {\n return coreFetch(url, { ...init, method: \"HEAD\" });\n },\n /** Call a PATCH endpoint */\n PATCH(url, init) {\n return coreFetch(url, { ...init, method: \"PATCH\" });\n },\n /** Call a TRACE endpoint */\n TRACE(url, init) {\n return coreFetch(url, { ...init, method: \"TRACE\" });\n },\n /** Register middleware */\n use(...middleware) {\n for (const m of middleware) {\n if (!m) {\n continue;\n }\n if (typeof m !== \"object\" || !(\"onRequest\" in m || \"onResponse\" in m || \"onError\" in m)) {\n throw new Error(\"Middleware must be an object with one of `onRequest()`, `onResponse() or `onError()`\");\n }\n globalMiddlewares.push(m);\n }\n },\n /** Unregister middleware */\n eject(...middleware) {\n for (const m of middleware) {\n const i = globalMiddlewares.indexOf(m);\n if (i !== -1) {\n globalMiddlewares.splice(i, 1);\n }\n }\n }\n };\n}\nclass PathCallForwarder {\n constructor(client, url) {\n this.client = client;\n this.url = url;\n }\n GET = (init) => {\n return this.client.GET(this.url, init);\n };\n PUT = (init) => {\n return this.client.PUT(this.url, init);\n };\n POST = (init) => {\n return this.client.POST(this.url, init);\n };\n DELETE = (init) => {\n return this.client.DELETE(this.url, init);\n };\n OPTIONS = (init) => {\n return this.client.OPTIONS(this.url, init);\n };\n HEAD = (init) => {\n return this.client.HEAD(this.url, init);\n };\n PATCH = (init) => {\n return this.client.PATCH(this.url, init);\n };\n TRACE = (init) => {\n return this.client.TRACE(this.url, init);\n };\n}\nclass PathClientProxyHandler {\n constructor() {\n this.client = null;\n }\n // Assume the property is an URL.\n get(coreClient, url) {\n const forwarder = new PathCallForwarder(coreClient, url);\n this.client[url] = forwarder;\n return forwarder;\n }\n}\nfunction wrapAsPathBasedClient(coreClient) {\n const handler = new PathClientProxyHandler();\n const proxy = new Proxy(coreClient, handler);\n function Client() {\n }\n Client.prototype = proxy;\n const client = new Client();\n handler.client = client;\n return client;\n}\nfunction createPathBasedClient(clientOptions) {\n return wrapAsPathBasedClient(createClient(clientOptions));\n}\nfunction serializePrimitiveParam(name, value, options) {\n if (value === void 0 || value === null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n throw new Error(\n \"Deeply-nested arrays/objects aren\\u2019t supported. Provide your own `querySerializer()` to handle these.\"\n );\n }\n return `${name}=${options?.allowReserved === true ? value : encodeURIComponent(value)}`;\n}\nfunction serializeObjectParam(name, value, options) {\n if (!value || typeof value !== \"object\") {\n return \"\";\n }\n const values = [];\n const joiner = {\n simple: \",\",\n label: \".\",\n matrix: \";\"\n }[options.style] || \"&\";\n if (options.style !== \"deepObject\" && options.explode === false) {\n for (const k in value) {\n values.push(k, options.allowReserved === true ? value[k] : encodeURIComponent(value[k]));\n }\n const final2 = values.join(\",\");\n switch (options.style) {\n case \"form\": {\n return `${name}=${final2}`;\n }\n case \"label\": {\n return `.${final2}`;\n }\n case \"matrix\": {\n return `;${name}=${final2}`;\n }\n default: {\n return final2;\n }\n }\n }\n for (const k in value) {\n const finalName = options.style === \"deepObject\" ? `${name}[${k}]` : k;\n values.push(serializePrimitiveParam(finalName, value[k], options));\n }\n const final = values.join(joiner);\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${final}` : final;\n}\nfunction serializeArrayParam(name, value, options) {\n if (!Array.isArray(value)) {\n return \"\";\n }\n if (options.explode === false) {\n const joiner2 = { form: \",\", spaceDelimited: \"%20\", pipeDelimited: \"|\" }[options.style] || \",\";\n const final = (options.allowReserved === true ? value : value.map((v) => encodeURIComponent(v))).join(joiner2);\n switch (options.style) {\n case \"simple\": {\n return final;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n // case \"spaceDelimited\":\n // case \"pipeDelimited\":\n default: {\n return `${name}=${final}`;\n }\n }\n }\n const joiner = { simple: \",\", label: \".\", matrix: \";\" }[options.style] || \"&\";\n const values = [];\n for (const v of value) {\n if (options.style === \"simple\" || options.style === \"label\") {\n values.push(options.allowReserved === true ? v : encodeURIComponent(v));\n } else {\n values.push(serializePrimitiveParam(name, v, options));\n }\n }\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${values.join(joiner)}` : values.join(joiner);\n}\nfunction createQuerySerializer(options) {\n return function querySerializer(queryParams) {\n const search = [];\n if (queryParams && typeof queryParams === \"object\") {\n for (const name in queryParams) {\n const value = queryParams[name];\n if (value === void 0 || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n continue;\n }\n search.push(\n serializeArrayParam(name, value, {\n style: \"form\",\n explode: true,\n ...options?.array,\n allowReserved: options?.allowReserved || false\n })\n );\n continue;\n }\n if (typeof value === \"object\") {\n search.push(\n serializeObjectParam(name, value, {\n style: \"deepObject\",\n explode: true,\n ...options?.object,\n allowReserved: options?.allowReserved || false\n })\n );\n continue;\n }\n search.push(serializePrimitiveParam(name, value, options));\n }\n }\n return search.join(\"&\");\n };\n}\nfunction defaultPathSerializer(pathname, pathParams) {\n let nextURL = pathname;\n for (const match of pathname.match(PATH_PARAM_RE) ?? []) {\n let name = match.substring(1, match.length - 1);\n let explode = false;\n let style = \"simple\";\n if (name.endsWith(\"*\")) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n if (name.startsWith(\".\")) {\n style = \"label\";\n name = name.substring(1);\n } else if (name.startsWith(\";\")) {\n style = \"matrix\";\n name = name.substring(1);\n }\n if (!pathParams || pathParams[name] === void 0 || pathParams[name] === null) {\n continue;\n }\n const value = pathParams[name];\n if (Array.isArray(value)) {\n nextURL = nextURL.replace(match, serializeArrayParam(name, value, { style, explode }));\n continue;\n }\n if (typeof value === \"object\") {\n nextURL = nextURL.replace(match, serializeObjectParam(name, value, { style, explode }));\n continue;\n }\n if (style === \"matrix\") {\n nextURL = nextURL.replace(match, `;${serializePrimitiveParam(name, value)}`);\n continue;\n }\n nextURL = nextURL.replace(match, style === \"label\" ? `.${encodeURIComponent(value)}` : encodeURIComponent(value));\n }\n return nextURL;\n}\nfunction defaultBodySerializer(body, headers) {\n if (body instanceof FormData) {\n return body;\n }\n if (headers) {\n const contentType = headers.get instanceof Function ? headers.get(\"Content-Type\") ?? headers.get(\"content-type\") : headers[\"Content-Type\"] ?? headers[\"content-type\"];\n if (contentType === \"application/x-www-form-urlencoded\") {\n return new URLSearchParams(body).toString();\n }\n }\n return JSON.stringify(body);\n}\nfunction createFinalURL(pathname, options) {\n let finalURL = `${options.baseUrl}${pathname}`;\n if (options.params?.path) {\n finalURL = defaultPathSerializer(finalURL, options.params.path);\n }\n let search = options.querySerializer(options.params.query ?? {});\n if (search.startsWith(\"?\")) {\n search = search.substring(1);\n }\n if (search) {\n finalURL += `?${search}`;\n }\n return finalURL;\n}\nfunction mergeHeaders(...allHeaders) {\n const finalHeaders = new Headers();\n for (const h of allHeaders) {\n if (!h || typeof h !== \"object\") {\n continue;\n }\n const iterator = h instanceof Headers ? h.entries() : Object.entries(h);\n for (const [k, v] of iterator) {\n if (v === null) {\n finalHeaders.delete(k);\n } else if (Array.isArray(v)) {\n for (const v2 of v) {\n finalHeaders.append(k, v2);\n }\n } else if (v !== void 0) {\n finalHeaders.set(k, v);\n }\n }\n }\n return finalHeaders;\n}\nfunction removeTrailingSlash(url) {\n if (url.endsWith(\"/\")) {\n return url.substring(0, url.length - 1);\n }\n return url;\n}\n\nexport { createFinalURL, createPathBasedClient, createQuerySerializer, createClient as default, defaultBodySerializer, defaultPathSerializer, mergeHeaders, randomID, removeTrailingSlash, serializeArrayParam, serializeObjectParam, serializePrimitiveParam, wrapAsPathBasedClient };\n//# sourceMappingURL=index.mjs.map\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateUserBody = {\n firstName: string;\n lastName: string;\n email: string;\n password: string;\n phone?: string;\n document?: number;\n gender?: 'male' | 'female' | 'other';\n birthdate?: string;\n};\n\ntype UpdateUserDto = components['schemas']['UpdateUserDto'];\n\ntype GetUsersParams = {\n email?: string;\n document?: number;\n only_students?: boolean;\n institution_id?: string;\n search?: string;\n page?: number;\n limit?: number;\n};\n\nexport function createUserService(apiClient: AcademeApiClient) {\n return {\n /**\n * Get current authenticated user\n */\n getMe() {\n return apiClient.GET('/users/me');\n },\n\n /**\n * List all users with optional filters\n */\n getUsers(params?: GetUsersParams) {\n return apiClient.GET('/users', {\n params: { query: params },\n });\n },\n\n /**\n * Get user by ID\n */\n getUserById(id: string) {\n return apiClient.GET('/users/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Create a new user\n */\n createUser(body: CreateUserBody) {\n return apiClient.POST('/users', {\n body,\n });\n },\n\n /**\n * Update user information\n */\n updateUser(id: string, body: UpdateUserDto) {\n return apiClient.PATCH('/users/{id}', {\n params: { path: { id } },\n body,\n });\n },\n\n /**\n * Delete user\n */\n deleteUser(id: string) {\n return apiClient.DELETE('/users/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get user's groups\n */\n getUserGroups(id: string) {\n return apiClient.GET('/users/{id}/groups', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get user's certificates\n */\n getUserCertificates(id: string) {\n return apiClient.GET('/users/{id}/certificates', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get user's institutions\n */\n getUserInstitutions(id: string) {\n return apiClient.GET('/users/{id}/institutions', {\n params: { path: { id } },\n });\n },\n\n /**\n * Sync user with Keycloak\n */\n syncUser(id: string) {\n return apiClient.POST('/users/{id}/sync', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type UserService = ReturnType<typeof createUserService>;\n","import type { AcademeApiClient } from './index';\nimport type { components, paths } from '../types/academe-api';\n\ntype CreateInstitutionGroupDto = components['schemas']['CreateInstitutionGroupDto'];\ntype UpdateInstitutionGroupDto = components['schemas']['UpdateInstitutionGroupDto'];\ntype CreateInstitutionClassroomDto = components['schemas']['CreateInstitutionClassroomDto'];\ntype UpdateInstitutionClassroomDto = components['schemas']['UpdateInstitutionClassroomDto'];\ntype CreateInstitutionRegistrationDto = components['schemas']['CreateInstitutionRegistrationDto'];\ntype UpdateInstitutionRegistrationDto = components['schemas']['UpdateInstitutionRegistrationDto'];\ntype AssignClassroomDto = components['schemas']['AssignClassroomDto'];\n\n// Extract query parameters type directly from API path definition\ntype GetInstitutionUsersQuery = paths['/institutions/{institutionId}/users']['get']['parameters']['query'];\n\nexport function createInstitutionService(apiClient: AcademeApiClient) {\n return {\n getAll() {\n return apiClient.GET('/institutions');\n },\n getById(id: string) {\n return apiClient.GET('/institutions/{id}', { params: { path: { id } } });\n },\n\n // Institution Groups\n getGroups(institutionId: string) {\n return apiClient.GET('/institutions/{institutionId}/groups', {\n params: { path: { institutionId } },\n });\n },\n addGroup(institutionId: string, data: CreateInstitutionGroupDto) {\n return apiClient.POST('/institutions/{institutionId}/groups', {\n params: { path: { institutionId } },\n body: data,\n });\n },\n removeGroup(institutionId: string, groupId: string) {\n return apiClient.DELETE('/institutions/{institutionId}/groups/{groupId}', {\n params: { path: { institutionId, groupId } },\n });\n },\n updateGroup(institutionId: string, groupId: string, data: UpdateInstitutionGroupDto) {\n return apiClient.PATCH('/institutions/{institutionId}/groups/{groupId}', {\n params: { path: { institutionId, groupId } },\n body: data,\n });\n },\n // Institution Classrooms\n getClassrooms(institutionId: string, options?: { includeUserCount?: boolean }) {\n return apiClient.GET('/institutions/{institutionId}/classrooms', {\n params: {\n path: { institutionId },\n query: options,\n },\n });\n },\n getClassroomById(institutionId: string, classroomId: string) {\n return apiClient.GET('/institutions/{institutionId}/classrooms/{classroomId}', {\n params: { path: { institutionId, classroomId } },\n });\n },\n addClassroom(institutionId: string, data: CreateInstitutionClassroomDto) {\n return apiClient.POST('/institutions/{institutionId}/classrooms', {\n params: { path: { institutionId } },\n body: data,\n });\n },\n updateClassroom(institutionId: string, classroomId: string, data: UpdateInstitutionClassroomDto) {\n return apiClient.PATCH('/institutions/{institutionId}/classrooms/{classroomId}', {\n params: { path: { institutionId, classroomId } },\n body: data,\n });\n },\n removeClassroom(institutionId: string, classroomId: string) {\n return apiClient.DELETE('/institutions/{institutionId}/classrooms/{classroomId}', {\n params: { path: { institutionId, classroomId } },\n });\n },\n\n // Institution Users (list all users with filters)\n getUsers(\n institutionId: string,\n options?: GetInstitutionUsersQuery\n ) {\n return apiClient.GET('/institutions/{institutionId}/users', {\n params: {\n path: { institutionId },\n query: options,\n },\n });\n },\n\n // Institution Registrations (Users in Institution)\n getRegistrations(institutionId: string) {\n return apiClient.GET('/institutions/{institutionId}/registrations', {\n params: { path: { institutionId } },\n });\n },\n getRegistrationById(institutionId: string, registrationId: string) {\n return apiClient.GET('/institutions/{institutionId}/registrations/{registrationId}', {\n params: { path: { institutionId, registrationId } },\n });\n },\n getRegistrationByUserId(institutionId: string, userId: string) {\n return apiClient.GET('/institutions/{institutionId}/registrations/user/{userId}', {\n params: { path: { institutionId, userId } },\n });\n },\n registerUser(institutionId: string, data: CreateInstitutionRegistrationDto) {\n return apiClient.POST('/institutions/{institutionId}/registrations', {\n params: { path: { institutionId } },\n body: data,\n });\n },\n updateRegistration(institutionId: string, registrationId: string, data: UpdateInstitutionRegistrationDto) {\n return apiClient.PATCH('/institutions/{institutionId}/registrations/{registrationId}', {\n params: { path: { institutionId, registrationId } },\n body: data,\n });\n },\n assignUserToClassroom(institutionId: string, registrationId: string, data: AssignClassroomDto) {\n return apiClient.PATCH('/institutions/{institutionId}/registrations/{registrationId}/classroom', {\n params: { path: { institutionId, registrationId } },\n body: data,\n });\n },\n removeRegistration(institutionId: string, registrationId: string) {\n return apiClient.DELETE('/institutions/{institutionId}/registrations/{registrationId}', {\n params: { path: { institutionId, registrationId } },\n });\n },\n getGroupUsers(institutionId: string) {\n return apiClient.GET('/institutions/{institutionId}/groups/users', {\n params: { path: { institutionId } },\n });\n },\n };\n}\n\nexport type InstitutionService = ReturnType<typeof createInstitutionService>;\n","import type { AcademeApiClient } from './index';\n\ntype GetDashboardParams = {\n institutionId?: string;\n};\n\ntype GetRecentActivitiesParams = {\n period?: '7days' | '30days' | 'all';\n};\n\ntype GetTopStudentsParams = {\n filterType: 'nota' | 'engajamento' | 'conclusao';\n year?: number;\n};\n\nexport function createReportService(apiClient: AcademeApiClient) {\n return {\n /**\n * Get dashboard data (global)\n * Returns aggregated dashboard data for all institutions (requires admin permission)\n */\n getDashboard(params?: GetDashboardParams) {\n return apiClient.GET('/reports/dashboard', {\n params: { query: params },\n });\n },\n\n /**\n * Get dashboard data for specific institution\n * Returns aggregated dashboard data for a specific institution\n */\n getDashboardByInstitution(id: string) {\n return apiClient.GET('/reports/dashboard/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get courses distribution by area (global)\n * Returns distribution of course completions by area/category\n */\n getCoursesByArea() {\n return apiClient.GET('/reports/courses-by-area');\n },\n\n /**\n * Get courses distribution by area for specific institution\n * Returns distribution of course completions by area/category for an institution\n */\n getCoursesByAreaByInstitution(id: string) {\n return apiClient.GET('/reports/courses-by-area/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get adhesion rate (global)\n * Returns adhesion rate (unique students who accessed) per month for the last 6 months\n */\n getAdhesionRate() {\n return apiClient.GET('/reports/adhesion-rate');\n },\n\n /**\n * Get adhesion rate for specific institution\n * Returns adhesion rate for an institution for the last 6 months\n */\n getAdhesionRateByInstitution(id: string) {\n return apiClient.GET('/reports/adhesion-rate/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get recent activities (global)\n * Returns recent student activities (certificates issued and courses started)\n */\n getRecentActivities(params?: GetRecentActivitiesParams) {\n return apiClient.GET('/reports/recent-activities', {\n params: { query: params },\n });\n },\n\n /**\n * Get recent activities for specific institution\n * Returns recent student activities for an institution\n */\n getRecentActivitiesByInstitution(id: string, params?: GetRecentActivitiesParams) {\n return apiClient.GET('/reports/recent-activities/{id}', {\n params: {\n path: { id },\n query: params,\n },\n });\n },\n\n /**\n * Get top students (global)\n * Returns top 10 students based on selected filter\n */\n getTopStudents(params: GetTopStudentsParams) {\n return apiClient.GET('/reports/top-students', {\n params: { query: params },\n });\n },\n\n /**\n * Get top students for specific institution\n * Returns top 10 students for an institution based on selected filter\n */\n getTopStudentsByInstitution(id: string, params: GetTopStudentsParams) {\n return apiClient.GET('/reports/top-students/{id}', {\n params: {\n path: { id },\n query: params,\n },\n });\n },\n };\n}\n\nexport type ReportService = ReturnType<typeof createReportService>;\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateClassroomDto = components['schemas']['CreateClassroomDto'];\ntype UpdateClassroomDto = components['schemas']['UpdateClassroomDto'];\n\ntype GetClassroomsByInstitutionParams = {\n page?: number;\n limit?: number;\n search?: string;\n};\n\nexport function createClassroomService(apiClient: AcademeApiClient) {\n return {\n /**\n * List all classrooms\n */\n getAll() {\n return apiClient.GET('/classrooms');\n },\n\n /**\n * Get classroom by ID\n */\n getById(id: string) {\n return apiClient.GET('/classrooms/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get classrooms by institution ID\n */\n getByInstitution(institutionId: string, params?: GetClassroomsByInstitutionParams) {\n return apiClient.GET('/classrooms/institution/{id}', {\n params: {\n path: { id: institutionId },\n query: params,\n },\n });\n },\n\n /**\n * Create a new classroom\n */\n create(data: CreateClassroomDto) {\n return apiClient.POST('/classrooms', {\n body: data,\n });\n },\n\n /**\n * Update classroom\n */\n update(id: string, data: UpdateClassroomDto) {\n return apiClient.PATCH('/classrooms/{id}', {\n params: { path: { id } },\n body: data,\n });\n },\n\n /**\n * Delete classroom\n */\n delete(id: string) {\n return apiClient.DELETE('/classrooms/{id}', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type ClassroomService = ReturnType<typeof createClassroomService>;\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateOrganizationDto = components['schemas']['CreateOrganizationDto'];\ntype UpdateOrganizationDto = components['schemas']['UpdateOrganizationDto'];\n\ntype GetOrganizationsParams = {\n name?: string;\n type?: string;\n isActive?: boolean;\n search?: string;\n page?: number;\n limit?: number;\n};\n\nexport function createOrganizationService(apiClient: AcademeApiClient) {\n return {\n /**\n * List all organizations with optional filters\n */\n getAll(params?: GetOrganizationsParams) {\n return apiClient.GET('/organizations', {\n params: { query: params },\n });\n },\n\n /**\n * Get organization by ID\n */\n getById(id: string) {\n return apiClient.GET('/organizations/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Create a new organization\n */\n create(body: CreateOrganizationDto) {\n return apiClient.POST('/organizations', {\n body,\n });\n },\n\n /**\n * Update organization information\n */\n update(id: string, body: UpdateOrganizationDto) {\n return apiClient.PATCH('/organizations/{id}', {\n params: { path: { id } },\n body,\n });\n },\n\n /**\n * Delete organization\n * Note: Cannot delete organizations with children\n */\n delete(id: string) {\n return apiClient.DELETE('/organizations/{id}', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type OrganizationService = ReturnType<typeof createOrganizationService>;\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateSerieDto = components['schemas']['CreateSerieDto'];\ntype UpdateSerieDto = components['schemas']['UpdateSerieDto'];\n\nexport function createSerieService(apiClient: AcademeApiClient) {\n return {\n /**\n * List all series\n */\n getAll() {\n return apiClient.GET('/series');\n },\n\n /**\n * Get serie by ID\n */\n getById(id: string) {\n return apiClient.GET('/series/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Create a new serie\n */\n create(data: CreateSerieDto) {\n return apiClient.POST('/series', {\n body: data,\n });\n },\n\n /**\n * Update serie\n */\n update(id: string, data: UpdateSerieDto) {\n return apiClient.PATCH('/series/{id}', {\n params: { path: { id } },\n body: data,\n });\n },\n\n /**\n * Delete serie\n */\n delete(id: string) {\n return apiClient.DELETE('/series/{id}', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type SerieService = ReturnType<typeof createSerieService>;\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateShiftDto = components['schemas']['CreateShiftDto'];\ntype UpdateShiftDto = components['schemas']['UpdateShiftDto'];\n\nexport function createShiftService(apiClient: AcademeApiClient) {\n return {\n /**\n * List all shifts\n */\n getAll() {\n return apiClient.GET('/shifts');\n },\n\n /**\n * Get shift by ID\n */\n getById(id: string) {\n return apiClient.GET('/shifts/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Create a new shift\n */\n create(data: CreateShiftDto) {\n return apiClient.POST('/shifts', {\n body: data,\n });\n },\n\n /**\n * Update shift\n */\n update(id: string, data: UpdateShiftDto) {\n return apiClient.PATCH('/shifts/{id}', {\n params: { path: { id } },\n body: data,\n });\n },\n\n /**\n * Delete shift\n */\n delete(id: string) {\n return apiClient.DELETE('/shifts/{id}', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type ShiftService = ReturnType<typeof createShiftService>;\n\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateGuardianDto = components['schemas']['CreateGuardianDto'];\ntype UpdateGuardianDto = components['schemas']['UpdateGuardianDto'];\ntype AssignGuardianToUserDto = components['schemas']['AssignGuardianToUserDto'];\n\nexport function createGuardianService(apiClient: AcademeApiClient) {\n return {\n // List all guardians\n getAll() {\n return apiClient.GET('/guardians');\n },\n\n // Get guardian by ID\n getById(id: string) {\n return apiClient.GET('/guardians/{id}', {\n params: { path: { id } },\n });\n },\n\n // Create a new guardian\n create(data: CreateGuardianDto) {\n return apiClient.POST('/guardians', {\n body: data,\n });\n },\n\n // Update guardian\n update(id: string, data: UpdateGuardianDto) {\n return apiClient.PATCH('/guardians/{id}', {\n params: { path: { id } },\n body: data,\n });\n },\n\n // Delete guardian\n delete(id: string) {\n return apiClient.DELETE('/guardians/{id}', {\n params: { path: { id } },\n });\n },\n\n // Get guardian's users (students)\n getUsers(id: string) {\n return apiClient.GET('/guardians/{id}/users', {\n params: { path: { id } },\n });\n },\n\n // Assign guardian to user\n assignToUser(data: AssignGuardianToUserDto) {\n return apiClient.POST('/guardians/assign', {\n body: data,\n });\n },\n\n // Remove guardian from user\n removeFromUser(guardianId: string, userId: string) {\n return apiClient.DELETE('/guardians/{guardianId}/users/{userId}', {\n params: { path: { guardianId, userId } },\n });\n },\n };\n}\n\nexport type GuardianService = ReturnType<typeof createGuardianService>;\n\n","import type { paths } from '../types/academe-api';\nimport createClient from 'openapi-fetch';\nimport { createUserService, type UserService } from './UserService';\nimport { createInstitutionService, type InstitutionService } from './InstitutionService';\nimport { createReportService, type ReportService } from './ReportService';\nimport { createClassroomService, type ClassroomService } from './ClassroomService';\nimport { createOrganizationService, type OrganizationService } from './OrganizationService';\nimport { createSerieService, type SerieService } from './SerieService';\nimport { createShiftService, type ShiftService } from './ShiftService';\nimport { createGuardianService, type GuardianService } from './GuardianService';\n\nexport type AcademeApiClient = ReturnType<typeof createClient<paths>>;\n\nexport function createAcademeApiClient(baseUrl: string): AcademeApiClient {\n return createClient<paths>({ baseUrl });\n}\n\nexport interface AcademeServices {\n user: UserService;\n institution: InstitutionService;\n report: ReportService;\n classroom: ClassroomService;\n organization: OrganizationService;\n serie: SerieService;\n shift: ShiftService;\n guardian: GuardianService;\n}\n\nexport function createAcademeServices(apiClient: AcademeApiClient): AcademeServices {\n return {\n user: createUserService(apiClient),\n institution: createInstitutionService(apiClient),\n report: createReportService(apiClient),\n classroom: createClassroomService(apiClient),\n organization: createOrganizationService(apiClient),\n serie: createSerieService(apiClient),\n shift: createShiftService(apiClient),\n guardian: createGuardianService(apiClient),\n };\n}\n\nexport { createUserService, type UserService } from './UserService';\nexport { createReportService, type ReportService } from './ReportService';\nexport { createClassroomService, type ClassroomService } from './ClassroomService';\nexport { createOrganizationService, type OrganizationService } from './OrganizationService';\nexport { createSerieService, type SerieService } from './SerieService';\nexport { createShiftService, type ShiftService } from './ShiftService';\nexport { createGuardianService, type GuardianService } from './GuardianService';","export enum GLOBAL_ROLES {\n ADMIN_ACADEME = \"admin_academe\",\n SCHOOL_ADMIN = \"school_admin\",\n TEACHER = \"teacher\",\n STUDENT = \"student\",\n GUARDIAN = \"guardian\",\n}","import {\n createContext,\n useContext,\n useEffect,\n useState,\n useCallback,\n useMemo,\n} from \"react\";\nimport { ReactKeycloakProvider, useKeycloak } from \"@react-keycloak/web\";\nimport Keycloak from \"keycloak-js\";\nimport {\n createAcademeApiClient,\n createAcademeServices,\n type AcademeApiClient,\n type AcademeServices,\n} from \"../../services\";\nimport {\n SecurityContextType,\n SecurityProviderProps,\n AcademeKeycloakContextProps,\n AcademeUser,\n KeycloakUser,\n} from \"./types\";\nimport { GLOBAL_ROLES } from \"../../roles/global\";\n\nexport const AcademeAuthProvider: React.FC<AcademeKeycloakContextProps> = ({\n realm,\n hubUrl,\n children,\n clientId,\n keycloakUrl,\n apiBaseUrl,\n}) => {\n return (\n <ReactKeycloakProvider\n authClient={new Keycloak({ clientId, realm, url: keycloakUrl })}\n >\n <SecurityProvider hubUrl={hubUrl} apiBaseUrl={apiBaseUrl}>\n {children}\n </SecurityProvider>\n </ReactKeycloakProvider>\n );\n};\n\nconst SecurityContext = createContext<SecurityContextType>({\n isInitialized: false,\n user: null,\n refreshUserData: async () => {},\n signOut: () => null,\n goToLogin: () => null,\n hasSchool: () => false,\n hasRealmRole: () => false,\n hasClientRole: () => false,\n isAuthenticated: () => false,\n apiClient: null,\n services: null,\n});\n\nconst SecurityProvider: React.FC<SecurityProviderProps> = ({\n apiBaseUrl = \"https://stg-api.academe.com.br\",\n children,\n}) => {\n const [isInitialized, setIsInitialized] = useState(false);\n const [currentUser, setCurrentUser] = useState<AcademeUser | null>(null);\n const { initialized, keycloak } = useKeycloak();\n\n // Create API client with the provided baseUrl\n const apiClient = useMemo<AcademeApiClient>(() => {\n return createAcademeApiClient(apiBaseUrl);\n }, [apiBaseUrl]);\n\n const services = useMemo<AcademeServices>(() => {\n return createAcademeServices(apiClient);\n }, [apiClient]);\n\n useEffect(() => {\n if (keycloak?.token) {\n apiClient.use({\n onRequest({ request }) {\n request.headers.set(\"Authorization\", `Bearer ${keycloak.token}`);\n return request;\n },\n });\n }\n }, [keycloak?.token, apiClient]);\n\n useEffect(() => {\n setIsInitialized(initialized);\n }, [initialized]);\n\n useEffect(() => {\n window.accessToken = keycloak.token;\n }, [keycloak.token]);\n\n const getKeycloakUser = useCallback((): KeycloakUser => {\n const idTokenParsed = keycloak?.idTokenParsed || {};\n\n return {\n email: idTokenParsed?.email || \"\",\n name: idTokenParsed?.given_name || \"\",\n lastName: idTokenParsed?.family_name || \"\",\n };\n }, [keycloak?.idTokenParsed]);\n\n // Fetch user data from API when authenticated\n useEffect(() => {\n const fetchUserData = async () => {\n if (initialized && keycloak?.authenticated && keycloak?.token) {\n try {\n const response = await services.user.getMe();\n if (response?.data?.data) {\n const academeUser: AcademeUser = {\n ...response.data.data,\n keycloakUser: getKeycloakUser(),\n };\n setCurrentUser(academeUser);\n }\n } catch (error) {\n console.error(\"Error fetching user data:\", error);\n }\n } else if (!keycloak?.authenticated) {\n setCurrentUser(null);\n }\n };\n\n fetchUserData();\n }, [\n initialized,\n keycloak?.authenticated,\n keycloak?.token,\n getKeycloakUser,\n services,\n ]);\n\n const refreshUserData = useCallback(async () => {\n if (keycloak?.authenticated) {\n try {\n const response = await services.user.getMe();\n if (response?.data?.data) {\n const academeUser: AcademeUser = {\n ...response.data.data,\n keycloakUser: getKeycloakUser(),\n };\n setCurrentUser(academeUser);\n }\n } catch (error) {\n console.error(\"Error refreshing user data:\", error);\n }\n }\n }, [keycloak?.authenticated, getKeycloakUser, services]);\n\n const signOut = () => {\n setCurrentUser(null);\n keycloak?.logout();\n };\n\n const isAuthenticated = () => {\n return (\n !!keycloak?.idTokenParsed?.email?.length && !!keycloak?.authenticated\n );\n };\n\n const hasSchool = (schoolId: string) => {\n if (keycloak?.hasRealmRole(GLOBAL_ROLES.ADMIN_ACADEME)) {\n return true;\n }\n\n if (\n currentUser?.institutionRegistrations?.some(\n (registration) => registration.institutionId === schoolId\n )\n ) {\n return true;\n }\n\n return false;\n };\n\n return (\n <SecurityContext.Provider\n value={{\n isInitialized,\n user: currentUser,\n refreshUserData,\n signOut,\n isAuthenticated,\n hasSchool,\n goToLogin: keycloak.login,\n hasRealmRole: keycloak?.hasRealmRole,\n hasClientRole: keycloak.hasResourceRole,\n apiClient,\n services,\n }}\n >\n {children}\n </SecurityContext.Provider>\n );\n};\n\ndeclare global {\n interface Window {\n accessToken?: string;\n }\n}\n\nexport const useAcademeAuth = () => useContext(SecurityContext);\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]];\nconst LoaderCircle = createLucideIcon(\"loader-circle\", __iconNode);\n\nexport { __iconNode, LoaderCircle as default };\n//# sourceMappingURL=loader-circle.js.map\n","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n } else if (currentCharacter === '(') {\n parenDepth++;\n } else if (currentCharacter === ')') {\n parenDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined\n };\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1);\n }\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1);\n }\n return baseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n const sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n };\n return sortModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { Loader2Icon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <Loader2Icon\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"size-10 animate-spin text-violet-500\", className)}\n {...props}\n />\n );\n}\n\nexport { Spinner };\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\nimport { Spinner } from \"../ui/spinner\";\n\ntype ProtectedAppProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n requiredRealmRoles?: string[];\n};\n\nexport const ProtectedApp: React.FC<ProtectedAppProps> = ({\n children,\n requiredClientRoles,\n requiredRealmRoles,\n}) => {\n const {\n isInitialized,\n goToLogin,\n hasClientRole,\n hasRealmRole,\n isAuthenticated,\n } = useAcademeAuth();\n\n if (!isInitialized) {\n return (\n <div className=\"flex w-screen h-screen items-center justify-center\">\n <Spinner className=\"size-10 text-violet-500\" />\n </div>\n );\n }\n\n if (!isAuthenticated()) {\n goToLogin();\n return <></>;\n }\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n return <></>;\n }\n\n if (\n requiredRealmRoles &&\n !requiredRealmRoles?.some((role) => hasRealmRole(role))\n ) {\n return (\n <div className=\"flex w-screen h-screen items-center justify-center\">\n <h1 className=\"text-2xl font-bold\">\n Você não tem permissão para acessar esta página\n </h1>\n <span>\n Se você acredita que isso é um erro, entre em contato com o suporte.\n </span>\n </div>\n );\n }\n\n return children;\n};\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\n\ntype ProtectedRouterProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n requiredRealmRoles?: string[];\n};\n\nexport const ProtectedComponent: React.FC<ProtectedRouterProps> = ({\n children,\n requiredRealmRoles,\n requiredClientRoles,\n}) => {\n const { hasClientRole, hasRealmRole } = useAcademeAuth();\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n return <></>;\n }\n\n if (\n requiredRealmRoles &&\n !requiredRealmRoles?.some((role) => hasRealmRole(role))\n ) {\n return <></>;\n }\n\n return children;\n};\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\n\ntype ProtectedRouterProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n unauthorizedMessage?: string;\n};\n\nexport const ProtectedRouter: React.FC<ProtectedRouterProps> = ({\n children,\n requiredClientRoles,\n unauthorizedMessage,\n}) => {\n const { hasClientRole } = useAcademeAuth();\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n return <h1>{unauthorizedMessage || \"unauthorized\"}</h1>;\n }\n\n return children;\n};\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","export enum BACKOFFICE_ROLES {\n}","export enum DASHBOARD_ROLES {\n}","/**\n * This file was auto-generated by openapi-typescript.\n * Do not make direct changes to the file.\n */\n\nexport interface paths {\n \"/applications\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** Get all applications */\n get: {\n parameters: {\n query?: {\n /** @description Search applications by name */\n search?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of applications */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Application\"][];\n };\n };\n };\n };\n put?: never;\n /** Create a new application */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateApplicationDto\"];\n };\n };\n responses: {\n /** @description Application created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Application\"];\n };\n };\n /** @description Application already exists */\n 409: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/applications/sync\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Sync applications with Keycloak */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Sync completed successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n message?: string;\n synced?: number;\n errors?: number;\n };\n };\n };\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/applications/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** Get an application by ID */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Application ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Application found */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Application\"];\n };\n };\n /** @description Application not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n /** Delete an application */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Application ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Application deleted successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Application not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n options?: never;\n head?: never;\n /** Update an application */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Application ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateApplicationDto\"];\n };\n };\n responses: {\n /** @description Application updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Application\"];\n };\n };\n /** @description Application not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n trace?: never;\n };\n \"/auth/token\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Generate TheMembers JWT token for authenticated user\n * @description Generates a signed JWT token for TheMembers platform authentication.\n * This endpoint requires the user to be already authenticated with Keycloak.\n *\n * **Authentication Flow:**\n * 1. User must first authenticate with Keycloak\n * 2. Client sends request with Keycloak Bearer token in Authorization header\n * 3. Endpoint validates the token and extracts user information\n * 4. Endpoint returns TheMembers JWT token signed with RSA private key\n *\n * **Token Details:**\n * - Algorithm: RS256 (RSA with SHA-256)\n * - Payload includes user email and organization ID\n * - Token can be used for TheMembers platform authentication\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Token generated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: {\n /**\n * @description JWT token signed with RS256 algorithm for TheMembers\n * @example eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\n */\n token?: string;\n /** @description User information from Keycloak */\n user?: {\n /** @example user@example.com */\n email?: string;\n /** @example John Doe */\n name?: string;\n /**\n * @description Keycloak user subject identifier\n * @example f6c4a7e9-8b3d-4f2e-9c1a-5d8e7f2a1b3c\n */\n sub?: string;\n };\n };\n };\n };\n };\n /** @description Bad Request - Token generation failed */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example error */\n status?: string;\n /** @example Token generation failed */\n message?: string;\n };\n };\n };\n /** @description Unauthorized - User not authenticated or invalid Keycloak token */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example error */\n status?: string;\n /** @example User not authenticated */\n message?: string;\n };\n };\n };\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example error */\n status?: string;\n /** @example Failed to generate authentication token */\n message?: string;\n };\n };\n };\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/categories\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all categories\n * @description Retrieve a list of all course categories\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of categories */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Category\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new category\n * @description Create a new course category\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateCategoryDto\"];\n };\n };\n responses: {\n /** @description Category created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Category\"];\n /** @example Category created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/categories/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get category by ID\n * @description Retrieve detailed information about a specific category\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Category information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Category\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete category\n * @description Remove a category from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Category deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Category deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update category\n * @description Update category information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateCategoryDto\"];\n };\n };\n responses: {\n /** @description Category updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Category\"];\n /** @example Category updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/certificates\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all certificates\n * @description Retrieve a list of all certificates in the system\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of certificates */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new certificate\n * @description Issue a new certificate for a user\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateCertificateDto\"];\n };\n };\n responses: {\n /** @description Certificate created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"];\n /** @example Certificate created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/certificates/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get certificate by ID\n * @description Retrieve detailed information about a specific certificate\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Certificate information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete certificate\n * @description Remove a certificate from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Certificate deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Certificate deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update certificate\n * @description Update certificate information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateCertificateDto\"];\n };\n };\n responses: {\n /** @description Certificate updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"];\n /** @example Certificate updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/classrooms\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all classrooms\n * @description Retrieve a list of all classrooms\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of classrooms */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new classroom\n * @description Create a new classroom\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateClassroomDto\"];\n };\n };\n responses: {\n /** @description Classroom created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"];\n /** @example Classroom created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/classrooms/institution/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get classrooms by institution ID\n * @description Retrieve all active classrooms associated with a specific institution\n */\n get: {\n parameters: {\n query?: {\n /** @description Page number */\n page?: number;\n /** @description Number of items per page */\n limit?: number;\n /** @description Search by classroom name */\n search?: string;\n };\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of classrooms for the institution */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"][];\n meta?: {\n total?: number;\n page?: number;\n limit?: number;\n totalPages?: number;\n };\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/classrooms/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get classroom by ID\n * @description Retrieve detailed information about a specific classroom\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Classroom information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete classroom\n * @description Remove a classroom from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Classroom deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Classroom deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update classroom\n * @description Update classroom information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateClassroomDto\"];\n };\n };\n responses: {\n /** @description Classroom updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"];\n /** @example Classroom updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/courses\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all courses\n * @description Retrieve a list of all courses\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of courses */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Course\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new course\n * @description Create a new course in the system\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateCourseDto\"];\n };\n };\n responses: {\n /** @description Course created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Course\"];\n /** @example Course created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/courses/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get course by ID\n * @description Retrieve detailed information about a specific course\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Course\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete course\n * @description Remove a course from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update course\n * @description Update course information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateCourseDto\"];\n };\n };\n responses: {\n /** @description Course updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Course\"];\n /** @example Course updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/courses/modules\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Create course module\n * @description Create a new module for a course\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** Format: uuid */\n courseId: string;\n /** @example Introduction to Programming */\n title: string;\n description?: string;\n /** @example 1 */\n order?: number;\n };\n };\n };\n responses: {\n /** @description Course module created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/courses/modules/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get course module by ID\n * @description Retrieve detailed information about a specific course module\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course module information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: Record<string, never>;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete course module\n * @description Remove a module from a course\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course module deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update course module\n * @description Update course module information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n title?: string;\n description?: string;\n order?: number;\n };\n };\n };\n responses: {\n /** @description Course module updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/courses/modules/lessons\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Create course module lesson\n * @description Create a new lesson for a course module\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** Format: uuid */\n courseModuleId: string;\n /** @example Variables and Data Types */\n title: string;\n content?: string;\n /** @example 1 */\n order?: number;\n /** @example 30 */\n duration?: number;\n };\n };\n };\n responses: {\n /** @description Course module lesson created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module lesson created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/courses/modules/lessons/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get course module lesson by ID\n * @description Retrieve detailed information about a specific lesson\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course module lesson information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: Record<string, never>;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete course module lesson\n * @description Remove a lesson from a course module\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course module lesson deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module lesson deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update course module lesson\n * @description Update lesson information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n title?: string;\n content?: string;\n order?: number;\n duration?: number;\n };\n };\n };\n responses: {\n /** @description Course module lesson updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module lesson updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/groups\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all groups\n * @description Retrieve a list of all groups in the system\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of groups */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new group\n * @description Create a new group in the system and sync with Keycloak\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** @description Name of the group (e.g., student, teacher, admin) */\n name: string;\n /**\n * @description If true, group is automatically associated when creating institutions\n * @default false\n */\n isDefault?: boolean;\n /**\n * @description Type of the group\n * @default other\n * @enum {string}\n */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n };\n };\n };\n responses: {\n /** @description Group created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"];\n /** @example Group created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n /** @description Group already exists */\n 409: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get group by ID\n * @description Retrieve detailed information about a specific group\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Group information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete group\n * @description Remove a group from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Group deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Group deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update group\n * @description Update group information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** @description Name of the group */\n name?: string;\n /** @description If true, group is automatically associated when creating institutions */\n isDefault?: boolean;\n /**\n * @description Type of the group\n * @enum {string}\n */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n };\n };\n };\n responses: {\n /** @description Group updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"];\n /** @example Group updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/groups/{id}/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get group users\n * @description Retrieve all users that belong to a specific group\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of group users */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/{id}/roles\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get group roles\n * @description Retrieve all roles associated with a specific group\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of group roles */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/assign\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Assign user to group\n * @description Add a user to a specific group\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"AssignUserToGroupDto\"];\n };\n };\n responses: {\n /** @description User assigned to group successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example User assigned to group successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/{groupId}/users/{userId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Remove user from group\n * @description Remove a user from a specific group\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Group ID */\n groupId: string;\n /** @description User ID */\n userId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User removed from group successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example User removed from group successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/roles\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Assign role to group\n * @description Assign an existing role to a group\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /**\n * Format: uuid\n * @description ID of the group to assign the role to\n */\n groupId: string;\n /**\n * Format: uuid\n * @description ID of the role to assign to the group\n */\n roleId: string;\n };\n };\n };\n responses: {\n /** @description Group role created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Group role created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/roles/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Delete group role\n * @description Remove a role from a group\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Group role deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Group role deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update group role\n * @description Update an existing group role\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** Format: uuid */\n groupId?: string;\n /** Format: uuid */\n roleId?: string;\n };\n };\n };\n responses: {\n /** @description Group role updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Group role updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/guardians\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all guardians\n * @description Retrieve a list of all guardians in the system\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of guardians */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Guardian\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new guardian\n * @description Create a new guardian in the system\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateGuardianDto\"];\n };\n };\n responses: {\n /** @description Guardian created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Guardian\"];\n /** @example Guardian created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/guardians/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get guardian by ID\n * @description Retrieve detailed information about a specific guardian\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Guardian information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Guardian\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete guardian\n * @description Remove a guardian from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Guardian deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Guardian deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update guardian\n * @description Update guardian information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateGuardianDto\"];\n };\n };\n responses: {\n /** @description Guardian updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Guardian\"];\n /** @example Guardian updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/guardians/{id}/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get guardian's users\n * @description Retrieve all users (students) associated with a guardian\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of guardian's users */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/guardians/assign\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Assign guardian to user\n * @description Link a guardian to a user (student)\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"AssignGuardianToUserDto\"];\n };\n };\n responses: {\n /** @description Guardian assigned to user successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Guardian assigned to user successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/guardians/{guardianId}/users/{userId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Remove guardian from user\n * @description Remove the link between a guardian and a user (student)\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Guardian ID */\n guardianId: string;\n /** @description User ID */\n userId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Guardian removed from user successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Guardian removed from user successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/classrooms\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all classrooms of an institution\n * @description Retrieve a list of all classrooms associated with a specific institution, including shift and serie information. Optionally includes user count for each classroom.\n */\n get: {\n parameters: {\n query?: {\n /** @description When true, includes a userCount field with the number of users registered in each classroom */\n includeUserCount?: boolean;\n };\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of institution classrooms */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: (components[\"schemas\"][\"InstitutionClassroom\"] & {\n /**\n * @description Number of users registered in this classroom (only present when includeUserCount=true)\n * @example 25\n */\n userCount?: number;\n })[];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Associate a classroom with an institution\n * @description Create a new association between a classroom and an institution\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateInstitutionClassroomDto\"];\n };\n };\n responses: {\n /** @description Classroom associated successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionClassroom\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/classrooms/{classroomId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get a specific classroom of an institution\n * @description Retrieve details of a specific classroom associated with an institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Classroom ID */\n classroomId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Institution classroom details */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionClassroom\"];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Remove a classroom from an institution\n * @description Remove the association between a classroom and an institution\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Classroom ID */\n classroomId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Classroom removed from institution successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update institution classroom\n * @description Update the status of a classroom in an institution\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Classroom ID */\n classroomId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateInstitutionClassroomDto\"];\n };\n };\n responses: {\n /** @description Institution classroom updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionClassroom\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions/{institutionId}/groups\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all groups of an institution\n * @description Retrieve a list of all groups associated with a specific institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of institution groups */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionGroup\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Associate a group with an institution\n * @description Create a new association between a group and an institution\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateInstitutionGroupDto\"];\n };\n };\n responses: {\n /** @description Group associated successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionGroup\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/groups/{groupId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Remove a group from an institution\n * @description Remove the association between a group and an institution\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Group ID */\n groupId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Group removed from institution successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update institution group quantity\n * @description Update the available quantity for a group in an institution\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Group ID */\n groupId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateInstitutionGroupDto\"];\n };\n };\n responses: {\n /** @description Institution group updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionGroup\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions/{institutionId}/groups/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get all users of all groups in an institution\n * @description Retrieve all users from all groups associated with a specific institution.\n * Returns a map where keys are group IDs and values are arrays of users in each group.\n * This is more efficient than calling /groups/{id}/users multiple times.\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Users grouped by group ID */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n /**\n * @example {\n * \"status\": \"success\",\n * \"data\": {\n * \"group-uuid-1\": [\n * {\n * \"id\": \"user-uuid-1\",\n * \"firstName\": \"John\",\n * \"lastName\": \"Doe\",\n * \"email\": \"john@example.com\",\n * \"assignedAt\": \"2024-01-15T10:30:00Z\"\n * },\n * {\n * \"id\": \"user-uuid-2\",\n * \"firstName\": \"Jane\",\n * \"lastName\": \"Smith\",\n * \"email\": \"jane@example.com\",\n * \"assignedAt\": \"2024-01-16T14:20:00Z\"\n * }\n * ],\n * \"group-uuid-2\": [\n * {\n * \"id\": \"user-uuid-3\",\n * \"firstName\": \"Bob\",\n * \"lastName\": \"Wilson\",\n * \"email\": \"bob@example.com\",\n * \"assignedAt\": \"2024-01-17T09:15:00Z\"\n * }\n * ]\n * }\n * }\n */\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @description Map of group IDs to arrays of users */\n data?: {\n [key: string]: {\n /** Format: uuid */\n id?: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n document?: string;\n phone?: string;\n isActive?: boolean;\n /** Format: date-time */\n assignedAt?: string;\n /** Format: uuid */\n assignedBy?: string;\n }[];\n };\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/registrations\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all registrations of an institution\n * @description Retrieve a list of all users registered in a specific institution, including classroom assignments\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of institution registrations */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Register a user in an institution\n * @description Create a new registration for a user in an institution, optionally assigning them to a classroom\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateInstitutionRegistrationDto\"];\n };\n };\n responses: {\n /** @description User registered successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/registrations/{registrationId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get a specific registration\n * @description Retrieve details of a specific user registration in an institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Registration ID */\n registrationId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Registration details */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Remove a registration\n * @description Remove a user's registration from an institution\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Registration ID */\n registrationId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Registration removed successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update a registration\n * @description Update a user's registration details in an institution\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Registration ID */\n registrationId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateInstitutionRegistrationDto\"];\n };\n };\n responses: {\n /** @description Registration updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions/{institutionId}/registrations/user/{userId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get registration by user ID\n * @description Retrieve a user's registration in a specific institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description User ID */\n userId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User registration details */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/registrations/{registrationId}/classroom\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n /**\n * Assign user to a classroom\n * @description Assign or change a user's classroom in an institution. Send null to remove assignment.\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Registration ID */\n registrationId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"AssignClassroomDto\"];\n };\n };\n responses: {\n /** @description Classroom assigned successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all institutions\n * @description Retrieve a list of all educational institutions\n */\n get: {\n parameters: {\n query?: {\n /** @description Filter by institution name */\n name?: string;\n /** @description Filter by institution code */\n code?: string;\n /** @description Filter by organization ID */\n organizationId?: string;\n /** @description Filter by active status */\n isActive?: boolean;\n /** @description Search in institution name */\n search?: string;\n /** @description Page number */\n page?: number;\n /** @description Items per page */\n limit?: number;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of institutions */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"][];\n meta?: {\n total?: number;\n page?: number;\n limit?: number;\n totalPages?: number;\n };\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new institution\n * @description Create a new educational institution\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateInstitutionDto\"];\n };\n };\n responses: {\n /** @description Institution created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get institution by ID\n * @description Retrieve detailed information about a specific institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Institution information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete institution\n * @description Remove an institution from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Institution deleted successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update institution\n * @description Update institution information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateInstitutionDto\"];\n };\n };\n responses: {\n /** @description Institution updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions/{institutionId}/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all users from an institution\n * @description Retrieve a paginated list of all users registered in an institution with advanced filtering options\n */\n get: {\n parameters: {\n query?: {\n /** @description Filter by classroom (institution_classroom_id) */\n classroomId?: string;\n /** @description Filter by user active status */\n isActive?: boolean;\n /** @description Filter users by group type (e.g., student, teacher, school-director, other) */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n /** @description Filter users with certificates (true) or without (false) */\n hasCertificates?: boolean;\n /** @description Filter users with guardian (true) or without (false) */\n hasGuardian?: boolean;\n /** @description Search by email, first name, last name, or full name (case-insensitive) */\n search?: string;\n /** @description Page number */\n page?: number;\n /** @description Items per page */\n limit?: number;\n };\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of users from the institution */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"InstitutionUserListResponse\"];\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/organizations\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all organizations\n * @description Retrieve a list of all organizations with optional filters\n */\n get: {\n parameters: {\n query?: {\n /** @description Filter by organization name */\n name?: string;\n /** @description Filter by organization type (municipal, estadual, federal, privada) */\n type?: string;\n /** @description Filter by active status */\n isActive?: boolean;\n /** @description Search in organization name */\n search?: string;\n /** @description Page number */\n page?: number;\n /** @description Items per page */\n limit?: number;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of organizations */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Organization\"][];\n meta?: {\n total?: number;\n page?: number;\n limit?: number;\n totalPages?: number;\n };\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new organization\n * @description Create a new organization in the hierarchy\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateOrganizationDto\"];\n };\n };\n responses: {\n /** @description Organization created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Organization\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/organizations/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get organization by ID\n * @description Retrieve detailed information about a specific organization\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Organization information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Organization\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete organization\n * @description Remove an organization from the system. Cannot delete organizations with children.\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Organization deleted successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update organization\n * @description Update organization information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateOrganizationDto\"];\n };\n };\n responses: {\n /** @description Organization updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Organization\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/reports/dashboard\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get dashboard data (global)\n * @description Retorna dados agregados do dashboard para todas as instituições (requer permissão de admin)\n */\n get: {\n parameters: {\n query?: {\n /** @description ID da instituição (opcional) */\n institutionId?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Dashboard data retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"DashboardResponse\"];\n };\n };\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/dashboard/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get dashboard data for specific institution\n * @description Retorna dados agregados do dashboard para uma instituição específica\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Dashboard data retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"DashboardResponse\"];\n };\n };\n };\n /** @description Invalid institution ID */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Institution not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/courses-by-area\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get courses distribution by area (global)\n * @description Retorna distribuição de realizações de cursos por área/categoria\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Courses by area retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: {\n areas?: components[\"schemas\"][\"AreaData\"][];\n };\n };\n };\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/courses-by-area/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get courses distribution by area for specific institution\n * @description Retorna distribuição de realizações de cursos por área/categoria para uma instituição\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Courses by area retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: {\n areas?: components[\"schemas\"][\"AreaData\"][];\n };\n };\n };\n };\n /** @description Invalid institution ID */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/adhesion-rate\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get adhesion rate (global)\n * @description Retorna taxa de adesão (alunos únicos que acessaram) por mês nos últimos 6 meses\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Adhesion rate retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"AdhesionRateResponse\"];\n };\n };\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/adhesion-rate/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get adhesion rate for specific institution\n * @description Retorna taxa de adesão para uma instituição nos últimos 6 meses\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Adhesion rate retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"AdhesionRateResponse\"];\n };\n };\n };\n /** @description Invalid institution ID */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/recent-activities\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get recent activities (global)\n * @description Retorna atividades recentes dos alunos (certificados emitidos e cursos iniciados)\n */\n get: {\n parameters: {\n query?: {\n /** @description Período de consulta */\n period?: \"7days\" | \"30days\" | \"all\";\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Recent activities retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"RecentActivitiesResponse\"];\n };\n };\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/recent-activities/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get recent activities for specific institution\n * @description Retorna atividades recentes dos alunos de uma instituição\n */\n get: {\n parameters: {\n query?: {\n /** @description Período de consulta */\n period?: \"7days\" | \"30days\" | \"all\";\n };\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Recent activities retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"RecentActivitiesResponse\"];\n };\n };\n };\n /** @description Invalid institution ID or period */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/top-students\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get top students (global)\n * @description Retorna top 10 alunos baseado em filtro escolhido\n */\n get: {\n parameters: {\n query: {\n /** @description Tipo de filtro para ordenação */\n filterType: \"nota\" | \"engajamento\" | \"conclusao\";\n /** @description Ano para filtrar dados (padrão ano atual) */\n year?: number;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Top students retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"TopStudentsResponse\"];\n };\n };\n };\n /** @description Invalid filterType or year */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/top-students/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get top students for specific institution\n * @description Retorna top 10 alunos de uma instituição baseado em filtro\n */\n get: {\n parameters: {\n query: {\n /** @description Tipo de filtro para ordenação */\n filterType: \"nota\" | \"engajamento\" | \"conclusao\";\n /** @description Ano para filtrar dados (padrão ano atual) */\n year?: number;\n };\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Top students retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"TopStudentsResponse\"];\n };\n };\n };\n /** @description Invalid institution ID, filterType or year */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/roles\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all roles\n * @description Retrieve a paginated list of roles with optional search filters\n */\n get: {\n parameters: {\n query?: {\n /** @description Search roles by name */\n search?: string;\n /** @description Page number */\n page?: components[\"parameters\"][\"page\"];\n /** @description Items per page */\n limit?: components[\"parameters\"][\"limit\"];\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of roles */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"][];\n meta?: components[\"schemas\"][\"PaginationMeta\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new role\n * @description Create a new role in the system and sync with Keycloak\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateRoleDto\"];\n };\n };\n responses: {\n /** @description Role created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"];\n /** @example Role created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n /** @description Role already exists */\n 409: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/roles/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get role by ID\n * @description Retrieve detailed information about a specific role\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Role information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete role\n * @description Remove a role from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Role deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Role deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update role\n * @description Update role information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateRoleDto\"];\n };\n };\n responses: {\n /** @description Role updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"];\n /** @example Role updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/roles/{id}/groups\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get role's groups\n * @description Retrieve all groups that have this role assigned\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of groups with this role */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/roles/sync\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Sync roles with Keycloak\n * @description Synchronize all roles with Keycloak identity provider\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Roles synchronized successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Roles synchronized with Keycloak successfully */\n message?: string;\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/series\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all series\n * @description Retrieve a list of all educational series/grades\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of series */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Serie\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new serie\n * @description Create a new educational serie/grade\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateSerieDto\"];\n };\n };\n responses: {\n /** @description Serie created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Serie\"];\n /** @example Serie created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/series/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get serie by ID\n * @description Retrieve detailed information about a specific serie/grade\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Serie information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Serie\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete serie\n * @description Remove a serie from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Serie deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Serie deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update serie\n * @description Update serie information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateSerieDto\"];\n };\n };\n responses: {\n /** @description Serie updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Serie\"];\n /** @example Serie updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/shifts\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all shifts\n * @description Retrieve a list of all institution shifts (manhã, tarde, noite)\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of shifts */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Shift\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new shift\n * @description Create a new institution shift\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateShiftDto\"];\n };\n };\n responses: {\n /** @description Shift created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Shift\"];\n /** @example Shift created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/shifts/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get shift by ID\n * @description Retrieve detailed information about a specific shift\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Shift information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Shift\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete shift\n * @description Remove a shift from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Shift deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Shift deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update shift\n * @description Update shift information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateShiftDto\"];\n };\n };\n responses: {\n /** @description Shift updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Shift\"];\n /** @example Shift updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/superset/dashboard/{dash_id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Get Superset dashboard guest token\n * @description Generate a guest token to embed a Superset dashboard with optional filters\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description The Superset dashboard ID */\n dash_id: string;\n };\n cookie?: never;\n };\n requestBody?: {\n content: {\n \"application/json\": {\n /**\n * @description Optional filters to apply to the dashboard (key-value pairs)\n * @example {\n * \"institution_id\": \"123\",\n * \"course_id\": \"456\"\n * }\n */\n filters?: {\n [key: string]: string;\n };\n };\n };\n };\n responses: {\n /** @description Dashboard token generated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: {\n /** @description Guest token for embedding the dashboard */\n token?: string;\n /** @description The dashboard ID */\n dashboardId?: string;\n };\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n /** @description Forbidden - Insufficient permissions */\n 403: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Dashboard not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/me\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get current authenticated user\n * @description Returns the profile information of the currently authenticated user including:\n * - User groups (userGroups)\n * - User guardians (userGuardians)\n * - Certificates (certificates)\n * - Institution registrations with detailed classroom information (institutionRegistrations)\n * - Institution data\n * - Classroom assignment (institutionClassroom)\n * - Classroom details (name, shift, serie)\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Current user information with all related entities */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all users\n * @description Retrieve a paginated list of users with optional search filters.\n * Each user includes detailed information about:\n * - User groups (userGroups)\n * - User guardians (userGuardians)\n * - Institution registrations (institutionRegistrations) with:\n * - Institution details\n * - Classroom assignment via institutionClassroom\n * - Complete classroom information (name, shift, serie)\n * - Certificate count (certificatesCount)\n */\n get: {\n parameters: {\n query?: {\n /** @description Filter users by email */\n email?: string;\n /** @description Filter users by document number */\n document?: number;\n /** @description Filter only users that are students */\n only_students?: boolean;\n /** @description Filter users by institution ID (only returns users registered in that institution) */\n institution_id?: string;\n /** @description Search users by name or email */\n search?: string;\n /** @description Page number */\n page?: components[\"parameters\"][\"page\"];\n /** @description Items per page */\n limit?: components[\"parameters\"][\"limit\"];\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of users with detailed institution and classroom information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"UserListResponse\"];\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new user\n * @description Creates a new user following this flow:\n * 1. Creates the user in Keycloak with username, email, password, and profile information\n * 2. Retrieves the generated Keycloak user ID\n * 3. Creates the user in MongoDB using the Keycloak ID as the primary key\n *\n * Note: The user ID is automatically generated by Keycloak and should NOT be provided in the request.\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** @example John */\n firstName: string;\n /** @example Doe */\n lastName: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email: string;\n /**\n * @description Password for the user's Keycloak account\n * @example SecurePassword123!\n */\n password: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 12345678901 */\n document?: number;\n /**\n * @example male\n * @enum {string}\n */\n gender?: \"male\" | \"female\" | \"other\";\n /**\n * Format: date-time\n * @example 1990-01-15T00:00:00.000Z\n */\n birthdate?: string;\n };\n };\n };\n responses: {\n /** @description User created successfully in both Keycloak and MongoDB */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n /** @description User already exists (either in Keycloak or MongoDB) */\n 409: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get user by ID\n * @description Retrieve detailed information about a specific user including related data:\n * - User groups (userGroups) with group details\n * - User guardians (userGuardians)\n * - Certificates (certificates)\n * - Institution registrations (institutionRegistrations) with:\n * - Institution information (id, name, code, etc.)\n * - Classroom assignment (institutionClassroom)\n * - Complete classroom details including:\n * - Classroom name\n * - Shift (manhã, tarde, noite)\n * - Serie (grade level)\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User information with all related entities including classroom details */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete user\n * @description Remove a user from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example User deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update user\n * @description Update user information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateUserDto\"];\n };\n };\n responses: {\n /** @description User updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n /** @example User updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/users/{id}/groups\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get user's groups\n * @description Retrieve all groups that a user belongs to\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of user's groups */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/{id}/certificates\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get user's certificates\n * @description Retrieve all certificates earned by a user\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of user's certificates */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/{id}/institutions\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get user's institutions\n * @description Retrieve all institutions where the user is registered\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of user's institutions */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/{id}/sync\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Sync user with Keycloak\n * @description Synchronize user data with Keycloak identity provider\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User synchronized successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n /** @example User synchronized with Keycloak successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n}\nexport type webhooks = Record<string, never>;\nexport interface components {\n schemas: {\n Error: {\n /** @example error */\n status?: string;\n /** @example Error message */\n message?: string;\n /** @example Detailed error information */\n errors?: string;\n };\n Success: {\n /** @example success */\n status?: string;\n data?: Record<string, never>;\n message?: string;\n };\n PaginationMeta: {\n /** @example 100 */\n total?: number;\n /** @example 1 */\n page?: number;\n /** @example 10 */\n limit?: number;\n /** @example 10 */\n totalPages?: number;\n };\n User: {\n /**\n * Format: uuid\n * @description Keycloak User ID\n */\n id?: string;\n /** @example John */\n firstName?: string;\n /** @example Doe */\n lastName?: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string | null;\n /** @example 12345678901 */\n document?: number | null;\n /** @enum {string|null} */\n gender?: \"male\" | \"female\" | \"other\" | null;\n /** Format: date-time */\n birthdate?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /** @description User's group associations */\n userGroups?: components[\"schemas\"][\"UserGroup\"][];\n /** @description User's guardian associations */\n userGuardians?: components[\"schemas\"][\"UserGuardian\"][];\n /** @description User's certificates */\n certificates?: components[\"schemas\"][\"Certificate\"][];\n /** @description User's institution registrations */\n institutionRegistrations?: components[\"schemas\"][\"InstitutionRegistration\"][];\n };\n UpdateUserDto: {\n /** @example John */\n firstName?: string;\n /** @example Doe */\n lastName?: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 12345678901 */\n document?: number;\n /**\n * @example male\n * @enum {string}\n */\n gender?: \"male\" | \"female\" | \"other\";\n /**\n * Format: date-time\n * @example 1990-01-01T00:00:00Z\n */\n birthdate?: string;\n };\n UserListResponse: {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"][];\n meta?: components[\"schemas\"][\"PaginationMeta\"];\n };\n Group: {\n /**\n * Format: uuid\n * @description Keycloak Group ID\n */\n id?: string;\n /** @example students */\n name?: string;\n /**\n * @description If true, group is automatically associated when creating institutions\n * @example false\n */\n isDefault?: boolean;\n /**\n * @description Type of the group\n * @example student\n * @enum {string}\n */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n CreateGroupDto: {\n /** @example students */\n name: string;\n /**\n * @description If true, group is automatically associated when creating institutions\n * @default false\n */\n isDefault: boolean;\n /**\n * @description Type of the group\n * @default other\n * @enum {string}\n */\n type: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n };\n UpdateGroupDto: {\n /** @example students */\n name?: string;\n /** @description If true, group is automatically associated when creating institutions */\n isDefault?: boolean;\n /**\n * @description Type of the group\n * @enum {string}\n */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n };\n AssignUserToGroupDto: {\n /** Format: uuid */\n userId: string;\n /** Format: uuid */\n groupId: string;\n /** Format: uuid */\n assignedBy?: string;\n };\n UserGroup: {\n /** Format: uuid */\n id?: string;\n /** Format: uuid */\n userId?: string;\n /** Format: uuid */\n groupId?: string;\n /** Format: date-time */\n assignedAt?: string;\n /** Format: uuid */\n assignedBy?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n group?: components[\"schemas\"][\"Group\"];\n };\n UserGuardian: {\n /** Format: uuid */\n id?: string;\n /** Format: uuid */\n userId?: string;\n /** Format: uuid */\n guardianId?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n guardian?: components[\"schemas\"][\"Guardian\"];\n };\n /** @description User with institution registration details (returned by GET /institutions/{institutionId}/users) */\n InstitutionUser: {\n /**\n * Format: uuid\n * @description Keycloak User ID\n */\n id?: string;\n /** @example John */\n firstName?: string;\n /** @example Doe */\n lastName?: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string | null;\n /** @example 12345678901 */\n document?: string | null;\n /** @enum {string|null} */\n gender?: \"male\" | \"female\" | \"other\" | null;\n /**\n * @description Indicates if the user is active\n * @example true\n */\n isActive?: boolean;\n /** Format: date-time */\n birthdate?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /**\n * @description Number of certificates the user has\n * @example 5\n */\n certificatesCount?: number;\n /** @description User's guardian associations */\n userGuardians?: {\n /** Format: uuid */\n id?: string;\n guardian?: {\n /** Format: uuid */\n id?: string;\n /** @example Maria Silva */\n name?: string;\n /**\n * Format: email\n * @example maria@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string | null;\n };\n }[];\n /** @description User's registration info in the institution */\n institutionRegistration?: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Indicates if the registration is active\n * @example true\n */\n isActive?: boolean;\n /** @description Classroom assignment details */\n institutionClassroom?: {\n /** Format: uuid */\n id?: string;\n classroom?: {\n /** Format: uuid */\n id?: string;\n /** @example 9º Ano A */\n name?: string;\n /** @description Grade level information */\n serie?: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Grade level value (1-12)\n * @example 9\n */\n value?: number;\n } | null;\n /** @description Shift information (manhã, tarde, noite) */\n shift?: {\n /** Format: uuid */\n id?: string;\n /**\n * @example manhã\n * @enum {string}\n */\n name?: \"manhã\" | \"tarde\" | \"noite\";\n } | null;\n } | null;\n } | null;\n };\n };\n InstitutionUserListResponse: {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionUser\"][];\n meta?: components[\"schemas\"][\"PaginationMeta\"];\n };\n InstitutionRegistration: {\n /** Format: uuid */\n id?: string;\n /** Format: uuid */\n userId?: string;\n /** Format: uuid */\n institutionId?: string;\n /**\n * Format: uuid\n * @description ID of the institution classroom assignment\n */\n institutionClassroomId?: string | null;\n /**\n * @description Indicates if the user is active in the institution\n * @example true\n */\n isActive?: boolean;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /** @description Institution details */\n institution?: components[\"schemas\"][\"Institution\"];\n /** @description Classroom assignment with complete details (classroom, shift, serie) */\n institutionClassroom?: components[\"schemas\"][\"InstitutionClassroom\"];\n };\n InstitutionClassroom: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Indicates if the classroom is active\n * @example true\n */\n isActive?: boolean;\n /** Format: uuid */\n institutionId?: string;\n /** Format: uuid */\n classroomId?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /** @description Complete classroom information including shift and serie */\n classroom?: components[\"schemas\"][\"Classroom\"];\n /**\n * @description Number of users registered in this classroom (only returned when includeUserCount=true)\n * @example 25\n */\n userCount?: number | null;\n };\n Role: {\n /**\n * Format: uuid\n * @description Keycloak Role ID\n */\n id?: string;\n /** @example admin */\n name?: string;\n /**\n * @description Role description\n * @example Administrator role with full permissions\n */\n description?: string | null;\n /**\n * Format: uuid\n * @description Application ID if this is a client role\n */\n applicationId?: string | null;\n /** @description Application details if this is a client role */\n application?: components[\"schemas\"][\"Application\"];\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n CreateRoleDto: {\n /** @example admin */\n name: string;\n /**\n * @description Role description\n * @example Administrator role with full permissions\n */\n description?: string;\n /**\n * Format: uuid\n * @description Application ID to create this role as a client role (optional - if not provided, creates a realm role)\n * @example 123e4567-e89b-12d3-a456-426614174000\n */\n applicationId?: string;\n };\n UpdateRoleDto: {\n /** @example admin */\n name?: string;\n /**\n * @description Role description\n * @example Administrator role with full permissions\n */\n description?: string;\n };\n Institution: {\n /** Format: uuid */\n id?: string;\n /** @example Academe Institution */\n name?: string;\n /** @example SCH001 */\n code?: string;\n /** @example 12.345.678/0001-90 */\n document?: string;\n /** Format: email */\n email?: string;\n phone?: string | null;\n /** @example 500 */\n maxStudents?: number;\n /** @example true */\n isActive?: boolean;\n /** Format: uri */\n logoUrl?: string | null;\n /** Format: uri */\n capaUrl?: string | null;\n /** Format: uuid */\n addressId?: string | null;\n /** Format: uuid */\n institutionRewardId?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Organization: {\n /** Format: uuid */\n id?: string;\n /** @example Municipal Education Department */\n name?: string;\n /** Format: uuid */\n parentId?: string | null;\n /**\n * @description Organization type (municipal, estadual, federal, privada)\n * @example municipal\n */\n type?: string;\n /** @example true */\n isActive?: boolean;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n parent?: components[\"schemas\"][\"Organization\"];\n children?: components[\"schemas\"][\"Organization\"][];\n };\n CreateOrganizationDto: {\n /** @example Municipal Education Department */\n name: string;\n /**\n * Format: uuid\n * @description Parent organization ID (optional)\n */\n parentId?: string;\n /**\n * @description Organization type (municipal, estadual, federal, privada)\n * @example municipal\n */\n type: string;\n /**\n * @default true\n * @example true\n */\n isActive: boolean;\n };\n UpdateOrganizationDto: {\n /** @example Municipal Education Department */\n name?: string;\n /**\n * Format: uuid\n * @description Parent organization ID\n */\n parentId?: string;\n /**\n * @description Organization type (municipal, estadual, federal, privada)\n * @example municipal\n */\n type?: string;\n /** @example true */\n isActive?: boolean;\n };\n Course: {\n /** Format: uuid */\n id?: string;\n /** @example Introduction to Programming */\n description?: string;\n /** Format: uuid */\n categoryId?: string;\n /** @example 40 */\n duration?: number;\n /**\n * @example hours\n * @enum {string}\n */\n durationType?: \"hours\" | \"days\" | \"weeks\" | \"months\";\n externalId?: string | null;\n quizId?: string | null;\n /** @example true */\n isActive?: boolean;\n /** @enum {string|null} */\n level?: \"beginner\" | \"intermediate\" | \"advanced\" | \"expert\" | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Certificate: {\n /** Format: uuid */\n id?: string;\n /** Format: uuid */\n userId?: string;\n /** Format: uuid */\n courseId?: string | null;\n /** Format: uuid */\n courseModuleId?: string | null;\n quizId?: string | null;\n quizTitle?: string | null;\n quizCategory?: string | null;\n attemptId?: string | null;\n attemptScore?: number | null;\n attemptPassed?: boolean | null;\n attemptTimeTakenInMinutes?: number | null;\n /** Format: date-time */\n attemptCompletedAt?: string | null;\n certificateId?: string | null;\n certificateNumber?: string | null;\n /** Format: date-time */\n certificateIssuedAt?: string | null;\n /** Format: uri */\n certificateDownloadUrl?: string | null;\n /** Format: date-time */\n dispatchedAt?: string | null;\n /** Format: date-time */\n insertedAt?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Guardian: {\n /** Format: uuid */\n id?: string;\n /** Format: email */\n email?: string;\n phone?: string | null;\n name?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Address: {\n /** Format: uuid */\n id?: string;\n address?: string;\n number?: number | null;\n zip?: number | null;\n neighborhood?: string | null;\n city?: string;\n state?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Category: {\n /** Format: uuid */\n id?: string;\n /** @example Essential Skills */\n name?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Classroom: {\n /** Format: uuid */\n id?: string;\n /** @example 9º Ano A */\n name?: string;\n /** Format: uuid */\n shiftId?: string;\n /** Format: uuid */\n serieId?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /** @description Shift information (manhã, tarde, noite) */\n shift?: components[\"schemas\"][\"Shift\"];\n /** @description Serie/grade level information */\n serie?: components[\"schemas\"][\"Serie\"];\n };\n Serie: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Grade level value (1-12)\n * @example 9\n */\n value?: number;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Shift: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Shift name in Portuguese\n * @example manhã\n * @enum {string}\n */\n name?: \"manhã\" | \"tarde\" | \"noite\";\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Application: {\n /**\n * Format: uuid\n * @description Keycloak Client ID\n */\n id: string;\n /** @description Keycloak Client Code */\n code: string;\n /** @description Keycloak Client Name */\n name: string;\n /** @description Application description */\n description?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n CreateApplicationDto: {\n /** @description Unique application code */\n code: string;\n /** @description Application name */\n name: string;\n /** @description Application description */\n description?: string;\n };\n UpdateApplicationDto: {\n /** @description Application name */\n name?: string;\n /** @description Application description */\n description?: string;\n };\n AuthenticatedUser: {\n /** @description Keycloak user ID */\n id?: string;\n /** @description User email address */\n email?: string;\n /** @description User first name */\n firstName?: string;\n /** @description User last name */\n lastName?: string;\n /** @description Username */\n username?: string;\n /** @description Email verification status */\n emailVerified?: boolean;\n /** @description User roles */\n roles?: string[];\n /** @description User groups */\n groups?: string[];\n };\n AuthTokenResponse: {\n /** @example success */\n status?: string;\n data?: {\n /** @description JWT token for TheMembers authentication */\n token?: string;\n user?: {\n email?: string;\n name?: string;\n sub?: string;\n };\n };\n };\n CreateInstitutionClassroomDto: {\n /**\n * Format: uuid\n * @description Classroom ID to associate with the institution\n */\n classroomId: string;\n /**\n * @description Whether the classroom is active in the institution\n * @default true\n */\n isActive: boolean;\n };\n UpdateInstitutionClassroomDto: {\n /** @description Whether the classroom is active in the institution */\n isActive?: boolean;\n };\n InstitutionGroup: {\n /**\n * Format: uuid\n * @description Unique identifier\n */\n id?: string;\n /**\n * Format: uuid\n * @description Institution ID\n */\n institutionId?: string;\n /**\n * Format: uuid\n * @description Group ID\n */\n groupId?: string;\n /** @description Available quantity for this group in the institution */\n availableQuantity?: number;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n group?: components[\"schemas\"][\"Group\"];\n };\n CreateInstitutionGroupDto: {\n /**\n * Format: uuid\n * @description Group ID to associate with the institution\n */\n groupId: string;\n /**\n * @description Available quantity for this group\n * @default 0\n */\n availableQuantity: number;\n };\n UpdateInstitutionGroupDto: {\n /** @description New available quantity for this group */\n availableQuantity: number;\n };\n CreateInstitutionRegistrationDto: {\n /**\n * Format: uuid\n * @description User ID to register in the institution\n */\n userId: string;\n /**\n * Format: uuid\n * @description Optional classroom ID to assign the user to\n */\n institutionClassroomId?: string | null;\n /**\n * @description Whether the registration is active\n * @default true\n */\n isActive: boolean;\n };\n UpdateInstitutionRegistrationDto: {\n /**\n * Format: uuid\n * @description Classroom ID to assign the user to (null to remove)\n */\n institutionClassroomId?: string | null;\n /** @description Whether the registration is active */\n isActive?: boolean;\n };\n AssignClassroomDto: {\n /**\n * Format: uuid\n * @description Classroom ID to assign the user to (null to remove assignment)\n */\n institutionClassroomId?: string | null;\n };\n StudentWithClass: {\n /** Format: uuid */\n _id?: string;\n name?: string;\n /** Format: email */\n email?: string;\n document?: string;\n /** Format: uuid */\n classId?: string;\n className?: string;\n };\n DashboardResponse: {\n totalAlunos?: number;\n listaAlunos?: components[\"schemas\"][\"StudentWithClass\"][];\n /** Format: float */\n taxaConclusao?: number;\n /** Format: float */\n taxaConclusaoMesAnterior?: number;\n /** Format: float */\n taxaConclusaoTrend?: number;\n /** Format: float */\n mediaEngajamento?: number;\n /** Format: float */\n mediaEngajamentoMesAnterior?: number;\n /** Format: float */\n mediaEngajamentoTrend?: number;\n aulasAssistidas?: number;\n aulasAssitidasMesAnterior?: number;\n /** Format: float */\n aulasAssitidasTrend?: number;\n };\n AreaData: {\n area?: string;\n /** Format: float */\n percentage?: number;\n count?: number;\n total?: number;\n };\n MonthlyLogin: {\n month?: string;\n count?: number;\n };\n AdhesionRateResponse: {\n monthlyLogins?: components[\"schemas\"][\"MonthlyLogin\"][];\n totalLogins?: number;\n period?: string;\n };\n RecentActivity: {\n studentName?: string;\n courseName?: string;\n /** @enum {string} */\n action?: \"iniciou_curso\" | \"emitiu_certificado\";\n activityText?: string;\n timestamp?: string;\n /** @enum {string} */\n activityType?: \"course_start\" | \"certificate\";\n };\n RecentActivitiesResponse: {\n activities?: components[\"schemas\"][\"RecentActivity\"][];\n totalActivities?: number;\n };\n TopStudent: {\n /** Format: uuid */\n studentId?: string;\n studentName?: string;\n /** Format: email */\n studentEmail?: string;\n rank?: number;\n /** Format: float */\n averageGrade?: number;\n /** Format: float */\n engagementRate?: number;\n /** Format: float */\n completionRate?: number;\n profileUrl?: string;\n };\n TopStudentsResponse: {\n students?: components[\"schemas\"][\"TopStudent\"][];\n /** @enum {string} */\n filterType?: \"nota\" | \"engajamento\" | \"conclusao\";\n totalStudents?: number;\n year?: number;\n };\n CreateUserDto: {\n /**\n * Format: uuid\n * @description Keycloak User ID\n */\n id: string;\n /** @example John */\n firstName: string;\n /** @example Doe */\n lastName: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 12345678901 */\n document?: number;\n /**\n * @example male\n * @enum {string}\n */\n gender?: \"male\" | \"female\" | \"other\";\n /**\n * Format: date-time\n * @example 1990-01-01T00:00:00Z\n */\n birthdate?: string;\n };\n UserResponse: components[\"schemas\"][\"User\"];\n CreateInstitutionDto: {\n /** @example Academe Institution */\n name: string;\n /** @example SCH001 */\n code: string;\n /** @example 12.345.678/0001-90 */\n document: string;\n /**\n * Format: email\n * @example institution@academe.com.br\n */\n email: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 500 */\n maxStudents: number;\n /**\n * @default true\n * @example true\n */\n isActive: boolean;\n /**\n * Format: uri\n * @example https://example.com/logo.png\n */\n logoUrl?: string;\n /**\n * Format: uri\n * @example https://example.com/capa.png\n */\n capaUrl?: string;\n /** Format: uuid */\n addressId?: string;\n /** Format: uuid */\n institutionRewardId?: string;\n };\n UpdateInstitutionDto: {\n /** @example Academe Institution */\n name?: string;\n /** @example SCH001 */\n code?: string;\n /** @example 12.345.678/0001-90 */\n document?: string;\n /**\n * Format: email\n * @example institution@academe.com.br\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 500 */\n maxStudents?: number;\n /** @example true */\n isActive?: boolean;\n /**\n * Format: uri\n * @example https://example.com/logo.png\n */\n logoUrl?: string;\n /**\n * Format: uri\n * @example https://example.com/capa.png\n */\n capaUrl?: string;\n /** Format: uuid */\n addressId?: string;\n /** Format: uuid */\n institutionRewardId?: string;\n };\n CreateCourseDto: {\n /** @example Introduction to Programming */\n description: string;\n /** Format: uuid */\n categoryId: string;\n /** @example 40 */\n duration: number;\n /**\n * @example hours\n * @enum {string}\n */\n durationType: \"hours\" | \"days\" | \"weeks\" | \"months\";\n externalId?: string;\n quizId?: string;\n /**\n * @default true\n * @example true\n */\n isActive: boolean;\n /**\n * @example intermediate\n * @enum {string}\n */\n level?: \"beginner\" | \"intermediate\" | \"advanced\" | \"expert\";\n };\n UpdateCourseDto: {\n /** @example Introduction to Programming */\n description?: string;\n /** Format: uuid */\n categoryId?: string;\n /** @example 40 */\n duration?: number;\n /**\n * @example hours\n * @enum {string}\n */\n durationType?: \"hours\" | \"days\" | \"weeks\" | \"months\";\n externalId?: string;\n quizId?: string;\n /** @example true */\n isActive?: boolean;\n /**\n * @example intermediate\n * @enum {string}\n */\n level?: \"beginner\" | \"intermediate\" | \"advanced\" | \"expert\";\n };\n CreateCertificateDto: {\n /** Format: uuid */\n userId: string;\n /** Format: uuid */\n courseId?: string;\n /** Format: uuid */\n courseModuleId?: string;\n quizId?: string;\n quizTitle?: string;\n quizCategory?: string;\n attemptId?: string;\n attemptScore?: number;\n attemptPassed?: boolean;\n attemptTimeTakenInMinutes?: number;\n /** Format: date-time */\n attemptCompletedAt?: string;\n certificateId?: string;\n certificateNumber?: string;\n /** Format: date-time */\n certificateIssuedAt?: string;\n /** Format: uri */\n certificateDownloadUrl?: string;\n };\n UpdateCertificateDto: {\n quizTitle?: string;\n quizCategory?: string;\n attemptScore?: number;\n attemptPassed?: boolean;\n attemptTimeTakenInMinutes?: number;\n /** Format: date-time */\n attemptCompletedAt?: string;\n certificateNumber?: string;\n /** Format: date-time */\n certificateIssuedAt?: string;\n /** Format: uri */\n certificateDownloadUrl?: string;\n /** Format: date-time */\n dispatchedAt?: string;\n };\n CreateGuardianDto: {\n /**\n * Format: email\n * @example guardian@example.com\n */\n email: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example Jane Doe */\n name: string;\n };\n UpdateGuardianDto: {\n /**\n * Format: email\n * @example guardian@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example Jane Doe */\n name?: string;\n };\n CreateCategoryDto: {\n /** @example Essential Skills */\n name: string;\n };\n UpdateCategoryDto: {\n /** @example Essential Skills */\n name?: string;\n };\n CreateClassroomDto: {\n /** @example Room 101 */\n name: string;\n /** Format: uuid */\n shiftId: string;\n /** Format: uuid */\n serieId: string;\n };\n UpdateClassroomDto: {\n /** @example Room 101 */\n name?: string;\n /** Format: uuid */\n shiftId?: string;\n /** Format: uuid */\n serieId?: string;\n };\n CreateSerieDto: {\n /**\n * @description Grade/year level (e.g., 1 for 1st grade, 2 for 2nd grade)\n * @example 1\n */\n value: number;\n };\n UpdateSerieDto: {\n /**\n * @description Grade/year level (e.g., 1 for 1st grade, 2 for 2nd grade)\n * @example 1\n */\n value?: number;\n };\n CreateShiftDto: {\n /**\n * @example manhã\n * @enum {string}\n */\n name: \"manhã\" | \"tarde\" | \"noite\";\n };\n UpdateShiftDto: {\n /**\n * @example manhã\n * @enum {string}\n */\n name?: \"manhã\" | \"tarde\" | \"noite\";\n };\n AssignGuardianToUserDto: {\n /** Format: uuid */\n userId: string;\n /** Format: uuid */\n guardianId: string;\n };\n RegisterUserToInstitutionDto: {\n /** Format: uuid */\n userId: string;\n /** Format: uuid */\n institutionId: string;\n };\n };\n responses: {\n /** @description Resource not found */\n NotFound: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Authentication required */\n Unauthorized: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Insufficient permissions */\n Forbidden: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Invalid request */\n BadRequest: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Internal server error */\n ServerError: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Resource already exists or conflict */\n Conflict: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n };\n parameters: {\n /** @description Resource ID */\n id: string;\n /** @description Page number */\n page: number;\n /** @description Items per page */\n limit: number;\n /** @description Search term */\n search: string;\n };\n requestBodies: never;\n headers: never;\n pathItems: never;\n}\nexport type $defs = Record<string, never>;\nexport type operations = Record<string, never>;\n"],"names":["_jsx","__assign","this","createContext","React","useContext","GLOBAL_ROLES","useState","useMemo","useEffect","useCallback","forwardRef","createElement","Loader2Icon","_jsxs","BACKOFFICE_ROLES","DASHBOARD_ROLES"],"mappings":"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","x_google_ignoreList":[0,2,3,4,5,6,7,8,9,10,22,23,24,25,26,27,33]}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/clsx/dist/clsx.mjs","../src/components/Button/Button.tsx","../node_modules/@react-keycloak/core/lib/context.js","../node_modules/react-fast-compare/index.js","../node_modules/@react-keycloak/core/lib/provider.js","../node_modules/@react-keycloak/web/lib/context.js","../node_modules/@react-keycloak/web/lib/provider.js","../node_modules/@react-keycloak/web/lib/useKeycloak.js","../node_modules/@react-keycloak/web/lib/withKeycloak.js","../node_modules/keycloak-js/lib/keycloak.js","../node_modules/openapi-fetch/dist/index.mjs","../src/services/UserService.ts","../src/services/InstitutionService.ts","../src/services/ReportService.ts","../src/services/ClassroomService.ts","../src/services/OrganizationService.ts","../src/services/SerieService.ts","../src/services/ShiftService.ts","../src/services/GuardianService.ts","../src/services/index.ts","../src/roles/global.ts","../src/context/SecurityProvider/index.tsx","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/loader-circle.js","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../src/components/ui/spinner.tsx","../src/components/ProtectedApp/index.tsx","../src/components/ProtectedComponent/index.tsx","../src/components/ProtectedRouter/index.tsx","../node_modules/style-inject/dist/style-inject.es.js","../src/roles/backoffice.ts","../src/roles/dashboard.ts","../src/roles/applications.ts","../src/types/academe-api.ts"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import React from 'react';\nimport clsx from 'clsx';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'secondary' | 'outline';\n size?: 'sm' | 'md' | 'lg';\n children: React.ReactNode;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ variant = 'primary', size = 'md', className, children, ...props }, ref) => {\n const baseClasses = 'font-semibold rounded-lg transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2';\n\n const variantClasses = {\n primary: 'bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500',\n secondary: 'bg-gray-600 text-white hover:bg-gray-700 focus:ring-gray-500',\n outline: 'bg-transparent border-2 border-blue-600 text-blue-600 hover:bg-blue-50 focus:ring-blue-500',\n };\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-6 py-3 text-lg',\n };\n\n return (\n <button\n ref={ref}\n className={clsx(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { createContext } from 'react';\n/**\n * Create a React context containing an AuthClient instance.\n *\n * @param {IAuthContextProps} initialContext initial context value.\n *\n * @returns {React.Context} the ReactKeycloak context.\n */\nexport function createAuthContext(initialContext) {\n return createContext(__assign({ initialized: false }, initialContext));\n}\nexport default createAuthContext;\n//# sourceMappingURL=context.js.map","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport isEqual from 'react-fast-compare';\n/**\n * Create an AuthProvider component to wrap a React app with, it will take care of common AuthClient\n * lifecycle handling (such as initialization and token refresh).\n *\n * @param AuthContext the Auth context to be used by the created AuthProvider\n *\n * @returns the AuthProvider component\n */\nexport function createAuthProvider(AuthContext) {\n var defaultInitOptions = {\n onLoad: 'check-sso',\n };\n var initialState = {\n initialized: false,\n isAuthenticated: false,\n isLoading: true,\n };\n return /** @class */ (function (_super) {\n __extends(KeycloakProvider, _super);\n function KeycloakProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = __assign({}, initialState);\n _this.onError = function (event) { return function (error) {\n var onEvent = _this.props.onEvent;\n // Notify Events listener\n onEvent && onEvent(event, error);\n }; };\n _this.updateState = function (event) { return function () {\n var _a = _this.props, authClient = _a.authClient, onEvent = _a.onEvent, onTokens = _a.onTokens, isLoadingCheck = _a.isLoadingCheck;\n var _b = _this.state, prevInitialized = _b.initialized, prevAuthenticated = _b.isAuthenticated, prevLoading = _b.isLoading;\n // Notify Events listener\n onEvent && onEvent(event);\n // Check Loading state\n var isLoading = isLoadingCheck ? isLoadingCheck(authClient) : false;\n // Check if user is authenticated\n var isAuthenticated = isUserAuthenticated(authClient);\n // Avoid double-refresh if state hasn't changed\n if (!prevInitialized ||\n isAuthenticated !== prevAuthenticated ||\n isLoading !== prevLoading) {\n _this.setState({\n initialized: true,\n isAuthenticated: isAuthenticated,\n isLoading: isLoading,\n });\n }\n // Notify token listener, if any\n var idToken = authClient.idToken, refreshToken = authClient.refreshToken, token = authClient.token;\n onTokens &&\n onTokens({\n idToken: idToken,\n refreshToken: refreshToken,\n token: token,\n });\n }; };\n _this.refreshToken = function (event) { return function () {\n var _a = _this.props, autoRefreshToken = _a.autoRefreshToken, authClient = _a.authClient, onEvent = _a.onEvent;\n // Notify Events listener\n onEvent && onEvent(event);\n if (autoRefreshToken !== false) {\n // Refresh Keycloak token\n authClient.updateToken(5);\n }\n }; };\n return _this;\n }\n KeycloakProvider.prototype.componentDidMount = function () {\n this.init();\n };\n KeycloakProvider.prototype.componentDidUpdate = function (_a) {\n var prevAuthClient = _a.authClient, prevInitOptions = _a.initOptions;\n var _b = this.props, initOptions = _b.initOptions, authClient = _b.authClient;\n if (authClient !== prevAuthClient ||\n !isEqual(initOptions, prevInitOptions)) {\n // De-init previous AuthClient instance\n prevAuthClient.onReady = undefined;\n prevAuthClient.onAuthSuccess = undefined;\n prevAuthClient.onAuthError = undefined;\n prevAuthClient.onAuthRefreshSuccess = undefined;\n prevAuthClient.onAuthRefreshError = undefined;\n prevAuthClient.onAuthLogout = undefined;\n prevAuthClient.onTokenExpired = undefined;\n // Reset state\n this.setState(__assign({}, initialState));\n // Init new AuthClient instance\n this.init();\n }\n };\n KeycloakProvider.prototype.init = function () {\n var _a = this.props, initOptions = _a.initOptions, authClient = _a.authClient;\n // Attach Keycloak listeners\n authClient.onReady = this.updateState('onReady');\n authClient.onAuthSuccess = this.updateState('onAuthSuccess');\n authClient.onAuthError = this.onError('onAuthError');\n authClient.onAuthRefreshSuccess = this.updateState('onAuthRefreshSuccess');\n authClient.onAuthRefreshError = this.onError('onAuthRefreshError');\n authClient.onAuthLogout = this.updateState('onAuthLogout');\n authClient.onTokenExpired = this.refreshToken('onTokenExpired');\n authClient\n .init(__assign(__assign({}, defaultInitOptions), initOptions))\n .catch(this.onError('onInitError'));\n };\n KeycloakProvider.prototype.render = function () {\n var _a = this.props, children = _a.children, authClient = _a.authClient, LoadingComponent = _a.LoadingComponent;\n var _b = this.state, initialized = _b.initialized, isLoading = _b.isLoading;\n if (!!LoadingComponent && (!initialized || isLoading)) {\n return LoadingComponent;\n }\n return (React.createElement(AuthContext.Provider, { value: { initialized: initialized, authClient: authClient } }, children));\n };\n return KeycloakProvider;\n }(React.PureComponent));\n}\nfunction isUserAuthenticated(authClient) {\n return !!authClient.idToken && !!authClient.token;\n}\nexport default createAuthProvider;\n//# sourceMappingURL=provider.js.map","import { createAuthContext } from '@react-keycloak/core';\nexport var reactKeycloakWebContext = createAuthContext();\nexport var ReactKeycloakWebContextConsumer = reactKeycloakWebContext.Consumer;\n//# sourceMappingURL=context.js.map","import { createAuthProvider } from '@react-keycloak/core';\nimport { reactKeycloakWebContext } from './context';\nexport var ReactKeycloakProvider = createAuthProvider(reactKeycloakWebContext);\n//# sourceMappingURL=provider.js.map","import { useContext } from 'react';\nimport { reactKeycloakWebContext } from './context';\nexport function useKeycloak() {\n var ctx = useContext(reactKeycloakWebContext);\n if (!ctx) {\n throw new Error('useKeycloak hook must be used inside ReactKeycloakProvider context');\n }\n if (!ctx.authClient) {\n throw new Error('authClient has not been assigned to ReactKeycloakProvider');\n }\n var authClient = ctx.authClient, initialized = ctx.initialized;\n return {\n initialized: initialized,\n keycloak: authClient,\n };\n}\n//# sourceMappingURL=useKeycloak.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useKeycloak } from './useKeycloak';\n/**\n * An HOC which injects the `keycloak` instance and the `keycloakInitialized` flag as props.\n *\n * @deprecated Please migrate to useKeycloak hook where/when possible.\n */\nexport function withKeycloak(Component) {\n return function WrappedComponent(props) {\n var _a = useKeycloak(), keycloak = _a.keycloak, initialized = _a.initialized;\n return (React.createElement(Component, __assign({}, props, { keycloakInitialized: initialized, keycloak: keycloak })));\n };\n}\n//# sourceMappingURL=withKeycloak.js.map","/*\n * Copyright 2016 Red Hat, Inc. and/or its affiliates\n * and other contributors as indicated by the @author tags.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction Keycloak (config) {\n if (!(this instanceof Keycloak)) {\n throw new Error(\"The 'Keycloak' constructor must be invoked with 'new'.\")\n }\n\n if (typeof config !== 'string' && !isObject(config)) {\n throw new Error(\"The 'Keycloak' constructor must be provided with a configuration object, or a URL to a JSON configuration file.\");\n }\n\n if (isObject(config)) {\n const requiredProperties = 'oidcProvider' in config\n ? ['clientId']\n : ['url', 'realm', 'clientId'];\n\n for (const property of requiredProperties) {\n if (!config[property]) {\n throw new Error(`The configuration object is missing the required '${property}' property.`);\n }\n }\n }\n\n var kc = this;\n var adapter;\n var refreshQueue = [];\n var callbackStorage;\n\n var loginIframe = {\n enable: true,\n callbackList: [],\n interval: 5\n };\n\n kc.didInitialize = false;\n\n var useNonce = true;\n var logInfo = createLogger(console.info);\n var logWarn = createLogger(console.warn);\n\n if (!globalThis.isSecureContext) {\n logWarn(\n \"[KEYCLOAK] Keycloak JS must be used in a 'secure context' to function properly as it relies on browser APIs that are otherwise not available.\\n\" +\n \"Continuing to run your application insecurely will lead to unexpected behavior and breakage.\\n\\n\" +\n \"For more information see: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts\"\n );\n }\n\n kc.init = function (initOptions = {}) {\n if (kc.didInitialize) {\n throw new Error(\"A 'Keycloak' instance can only be initialized once.\");\n }\n\n kc.didInitialize = true;\n\n kc.authenticated = false;\n\n callbackStorage = createCallbackStorage();\n var adapters = ['default', 'cordova', 'cordova-native'];\n\n if (adapters.indexOf(initOptions.adapter) > -1) {\n adapter = loadAdapter(initOptions.adapter);\n } else if (typeof initOptions.adapter === \"object\") {\n adapter = initOptions.adapter;\n } else {\n if (window.Cordova || window.cordova) {\n adapter = loadAdapter('cordova');\n } else {\n adapter = loadAdapter();\n }\n }\n\n if (typeof initOptions.useNonce !== 'undefined') {\n useNonce = initOptions.useNonce;\n }\n\n if (typeof initOptions.checkLoginIframe !== 'undefined') {\n loginIframe.enable = initOptions.checkLoginIframe;\n }\n\n if (initOptions.checkLoginIframeInterval) {\n loginIframe.interval = initOptions.checkLoginIframeInterval;\n }\n\n if (initOptions.onLoad === 'login-required') {\n kc.loginRequired = true;\n }\n\n if (initOptions.responseMode) {\n if (initOptions.responseMode === 'query' || initOptions.responseMode === 'fragment') {\n kc.responseMode = initOptions.responseMode;\n } else {\n throw 'Invalid value for responseMode';\n }\n }\n\n if (initOptions.flow) {\n switch (initOptions.flow) {\n case 'standard':\n kc.responseType = 'code';\n break;\n case 'implicit':\n kc.responseType = 'id_token token';\n break;\n case 'hybrid':\n kc.responseType = 'code id_token token';\n break;\n default:\n throw 'Invalid value for flow';\n }\n kc.flow = initOptions.flow;\n }\n\n if (initOptions.timeSkew != null) {\n kc.timeSkew = initOptions.timeSkew;\n }\n\n if(initOptions.redirectUri) {\n kc.redirectUri = initOptions.redirectUri;\n }\n\n if (initOptions.silentCheckSsoRedirectUri) {\n kc.silentCheckSsoRedirectUri = initOptions.silentCheckSsoRedirectUri;\n }\n\n if (typeof initOptions.silentCheckSsoFallback === 'boolean') {\n kc.silentCheckSsoFallback = initOptions.silentCheckSsoFallback;\n } else {\n kc.silentCheckSsoFallback = true;\n }\n\n if (typeof initOptions.pkceMethod !== \"undefined\") {\n if (initOptions.pkceMethod !== \"S256\" && initOptions.pkceMethod !== false) {\n throw new TypeError(`Invalid value for pkceMethod', expected 'S256' or false but got ${initOptions.pkceMethod}.`);\n }\n\n kc.pkceMethod = initOptions.pkceMethod;\n } else {\n kc.pkceMethod = \"S256\";\n }\n\n if (typeof initOptions.enableLogging === 'boolean') {\n kc.enableLogging = initOptions.enableLogging;\n } else {\n kc.enableLogging = false;\n }\n\n if (initOptions.logoutMethod === 'POST') {\n kc.logoutMethod = 'POST';\n } else {\n kc.logoutMethod = 'GET';\n }\n\n if (typeof initOptions.scope === 'string') {\n kc.scope = initOptions.scope;\n }\n\n if (typeof initOptions.acrValues === 'string') {\n kc.acrValues = initOptions.acrValues;\n }\n\n if (typeof initOptions.messageReceiveTimeout === 'number' && initOptions.messageReceiveTimeout > 0) {\n kc.messageReceiveTimeout = initOptions.messageReceiveTimeout;\n } else {\n kc.messageReceiveTimeout = 10000;\n }\n\n if (!kc.responseMode) {\n kc.responseMode = 'fragment';\n }\n if (!kc.responseType) {\n kc.responseType = 'code';\n kc.flow = 'standard';\n }\n\n var promise = createPromise();\n\n var initPromise = createPromise();\n initPromise.promise.then(function() {\n kc.onReady && kc.onReady(kc.authenticated);\n promise.setSuccess(kc.authenticated);\n }).catch(function(error) {\n promise.setError(error);\n });\n\n var configPromise = loadConfig();\n\n function onLoad() {\n var doLogin = function(prompt) {\n if (!prompt) {\n options.prompt = 'none';\n }\n\n if (initOptions.locale) {\n options.locale = initOptions.locale;\n }\n kc.login(options).then(function () {\n initPromise.setSuccess();\n }).catch(function (error) {\n initPromise.setError(error);\n });\n }\n\n var checkSsoSilently = async function() {\n var ifrm = document.createElement(\"iframe\");\n var src = await kc.createLoginUrl({prompt: 'none', redirectUri: kc.silentCheckSsoRedirectUri});\n ifrm.setAttribute(\"src\", src);\n ifrm.setAttribute(\"sandbox\", \"allow-storage-access-by-user-activation allow-scripts allow-same-origin\");\n ifrm.setAttribute(\"title\", \"keycloak-silent-check-sso\");\n ifrm.style.display = \"none\";\n document.body.appendChild(ifrm);\n\n var messageCallback = function(event) {\n if (event.origin !== window.location.origin || ifrm.contentWindow !== event.source) {\n return;\n }\n\n var oauth = parseCallback(event.data);\n processCallback(oauth, initPromise);\n\n document.body.removeChild(ifrm);\n window.removeEventListener(\"message\", messageCallback);\n };\n\n window.addEventListener(\"message\", messageCallback);\n };\n\n var options = {};\n switch (initOptions.onLoad) {\n case 'check-sso':\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (!unchanged) {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n } else {\n initPromise.setSuccess();\n }\n }).catch(function (error) {\n initPromise.setError(error);\n });\n });\n } else {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n }\n break;\n case 'login-required':\n doLogin(true);\n break;\n default:\n throw 'Invalid value for onLoad';\n }\n }\n\n function processInit() {\n var callback = parseCallback(window.location.href);\n\n if (callback) {\n window.history.replaceState(window.history.state, null, callback.newUrl);\n }\n\n if (callback && callback.valid) {\n return setupCheckLoginIframe().then(function() {\n processCallback(callback, initPromise);\n }).catch(function (error) {\n initPromise.setError(error);\n });\n }\n\n if (initOptions.token && initOptions.refreshToken) {\n setToken(initOptions.token, initOptions.refreshToken, initOptions.idToken);\n\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (unchanged) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n scheduleCheckIframe();\n } else {\n initPromise.setSuccess();\n }\n }).catch(function (error) {\n initPromise.setError(error);\n });\n });\n } else {\n kc.updateToken(-1).then(function() {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n }).catch(function(error) {\n kc.onAuthError && kc.onAuthError();\n if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setError(error);\n }\n });\n }\n } else if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setSuccess();\n }\n }\n\n configPromise.then(function () {\n check3pCookiesSupported()\n .then(processInit)\n .catch(function (error) {\n promise.setError(error);\n });\n });\n configPromise.catch(function (error) {\n promise.setError(error);\n });\n\n return promise.promise;\n }\n\n kc.login = function (options) {\n return adapter.login(options);\n }\n\n function generateRandomData(len) {\n if (typeof crypto === \"undefined\" || typeof crypto.getRandomValues === \"undefined\") {\n throw new Error(\"Web Crypto API is not available.\");\n }\n\n return crypto.getRandomValues(new Uint8Array(len));\n }\n\n function generateCodeVerifier(len) {\n return generateRandomString(len, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');\n }\n\n function generateRandomString(len, alphabet){\n var randomData = generateRandomData(len);\n var chars = new Array(len);\n for (var i = 0; i < len; i++) {\n chars[i] = alphabet.charCodeAt(randomData[i] % alphabet.length);\n }\n return String.fromCharCode.apply(null, chars);\n }\n\n async function generatePkceChallenge(pkceMethod, codeVerifier) {\n if (pkceMethod !== \"S256\") {\n throw new TypeError(`Invalid value for 'pkceMethod', expected 'S256' but got '${pkceMethod}'.`);\n }\n\n // hash codeVerifier, then encode as url-safe base64 without padding\n const hashBytes = new Uint8Array(await sha256Digest(codeVerifier));\n const encodedHash = bytesToBase64(hashBytes)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/\\=/g, '');\n\n return encodedHash;\n }\n\n function buildClaimsParameter(requestedAcr){\n var claims = {\n id_token: {\n acr: requestedAcr\n }\n }\n return JSON.stringify(claims);\n }\n\n kc.createLoginUrl = async function(options) {\n var state = createUUID();\n var nonce = createUUID();\n\n var redirectUri = adapter.redirectUri(options);\n\n var callbackState = {\n state: state,\n nonce: nonce,\n redirectUri: encodeURIComponent(redirectUri),\n loginOptions: options\n };\n\n if (options && options.prompt) {\n callbackState.prompt = options.prompt;\n }\n\n var baseUrl;\n if (options && options.action == 'register') {\n baseUrl = kc.endpoints.register();\n } else {\n baseUrl = kc.endpoints.authorize();\n }\n\n var scope = options && options.scope || kc.scope;\n if (!scope) {\n // if scope is not set, default to \"openid\"\n scope = \"openid\";\n } else if (scope.indexOf(\"openid\") === -1) {\n // if openid scope is missing, prefix the given scopes with it\n scope = \"openid \" + scope;\n }\n\n var url = baseUrl\n + '?client_id=' + encodeURIComponent(kc.clientId)\n + '&redirect_uri=' + encodeURIComponent(redirectUri)\n + '&state=' + encodeURIComponent(state)\n + '&response_mode=' + encodeURIComponent(kc.responseMode)\n + '&response_type=' + encodeURIComponent(kc.responseType)\n + '&scope=' + encodeURIComponent(scope);\n if (useNonce) {\n url = url + '&nonce=' + encodeURIComponent(nonce);\n }\n\n if (options && options.prompt) {\n url += '&prompt=' + encodeURIComponent(options.prompt);\n }\n\n if (options && typeof options.maxAge === 'number') {\n url += '&max_age=' + encodeURIComponent(options.maxAge);\n }\n\n if (options && options.loginHint) {\n url += '&login_hint=' + encodeURIComponent(options.loginHint);\n }\n\n if (options && options.idpHint) {\n url += '&kc_idp_hint=' + encodeURIComponent(options.idpHint);\n }\n\n if (options && options.action && options.action != 'register') {\n url += '&kc_action=' + encodeURIComponent(options.action);\n }\n\n if (options && options.locale) {\n url += '&ui_locales=' + encodeURIComponent(options.locale);\n }\n\n if (options && options.acr) {\n var claimsParameter = buildClaimsParameter(options.acr);\n url += '&claims=' + encodeURIComponent(claimsParameter);\n }\n\n if ((options && options.acrValues) || kc.acrValues) {\n url += '&acr_values=' + encodeURIComponent(options.acrValues || kc.acrValues);\n }\n\n if (kc.pkceMethod) {\n try {\n const codeVerifier = generateCodeVerifier(96);\n const pkceChallenge = await generatePkceChallenge(kc.pkceMethod, codeVerifier);\n\n callbackState.pkceCodeVerifier = codeVerifier;\n\n url += '&code_challenge=' + pkceChallenge;\n url += '&code_challenge_method=' + kc.pkceMethod;\n } catch (error) {\n throw new Error(\"Failed to generate PKCE challenge.\", { cause: error });\n }\n }\n\n callbackStorage.add(callbackState);\n\n return url;\n }\n\n kc.logout = function(options) {\n return adapter.logout(options);\n }\n\n kc.createLogoutUrl = function(options) {\n\n const logoutMethod = options?.logoutMethod ?? kc.logoutMethod;\n if (logoutMethod === 'POST') {\n return kc.endpoints.logout();\n }\n\n var url = kc.endpoints.logout()\n + '?client_id=' + encodeURIComponent(kc.clientId)\n + '&post_logout_redirect_uri=' + encodeURIComponent(adapter.redirectUri(options, false));\n\n if (kc.idToken) {\n url += '&id_token_hint=' + encodeURIComponent(kc.idToken);\n }\n\n return url;\n }\n\n kc.register = function (options) {\n return adapter.register(options);\n }\n\n kc.createRegisterUrl = async function(options) {\n if (!options) {\n options = {};\n }\n options.action = 'register';\n return await kc.createLoginUrl(options);\n }\n\n kc.createAccountUrl = function(options) {\n var realm = getRealmUrl();\n var url = undefined;\n if (typeof realm !== 'undefined') {\n url = realm\n + '/account'\n + '?referrer=' + encodeURIComponent(kc.clientId)\n + '&referrer_uri=' + encodeURIComponent(adapter.redirectUri(options));\n }\n return url;\n }\n\n kc.accountManagement = function() {\n return adapter.accountManagement();\n }\n\n kc.hasRealmRole = function (role) {\n var access = kc.realmAccess;\n return !!access && access.roles.indexOf(role) >= 0;\n }\n\n kc.hasResourceRole = function(role, resource) {\n if (!kc.resourceAccess) {\n return false;\n }\n\n var access = kc.resourceAccess[resource || kc.clientId];\n return !!access && access.roles.indexOf(role) >= 0;\n }\n\n kc.loadUserProfile = function() {\n var url = getRealmUrl() + '/account';\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.profile = JSON.parse(req.responseText);\n promise.setSuccess(kc.profile);\n } else {\n promise.setError();\n }\n }\n }\n\n req.send();\n\n return promise.promise;\n }\n\n kc.loadUserInfo = function() {\n var url = kc.endpoints.userinfo();\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.userInfo = JSON.parse(req.responseText);\n promise.setSuccess(kc.userInfo);\n } else {\n promise.setError();\n }\n }\n }\n\n req.send();\n\n return promise.promise;\n }\n\n kc.isTokenExpired = function(minValidity) {\n if (!kc.tokenParsed || (!kc.refreshToken && kc.flow != 'implicit' )) {\n throw 'Not authenticated';\n }\n\n if (kc.timeSkew == null) {\n logInfo('[KEYCLOAK] Unable to determine if token is expired as timeskew is not set');\n return true;\n }\n\n var expiresIn = kc.tokenParsed['exp'] - Math.ceil(new Date().getTime() / 1000) + kc.timeSkew;\n if (minValidity) {\n if (isNaN(minValidity)) {\n throw 'Invalid minValidity';\n }\n expiresIn -= minValidity;\n }\n return expiresIn < 0;\n }\n\n kc.updateToken = function(minValidity) {\n var promise = createPromise();\n\n if (!kc.refreshToken) {\n promise.setError();\n return promise.promise;\n }\n\n minValidity = minValidity || 5;\n\n var exec = function() {\n var refreshToken = false;\n if (minValidity == -1) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: forced refresh');\n } else if (!kc.tokenParsed || kc.isTokenExpired(minValidity)) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: token expired');\n }\n\n if (!refreshToken) {\n promise.setSuccess(false);\n } else {\n var params = 'grant_type=refresh_token&' + 'refresh_token=' + kc.refreshToken;\n var url = kc.endpoints.token();\n\n refreshQueue.push(promise);\n\n if (refreshQueue.length == 1) {\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n req.withCredentials = true;\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n\n var timeLocal = new Date().getTime();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n logInfo('[KEYCLOAK] Token refreshed');\n\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n var tokenResponse = JSON.parse(req.responseText);\n\n setToken(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], timeLocal);\n\n kc.onAuthRefreshSuccess && kc.onAuthRefreshSuccess();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setSuccess(true);\n }\n } else {\n logWarn('[KEYCLOAK] Failed to refresh token');\n\n if (req.status == 400) {\n kc.clearToken();\n }\n\n kc.onAuthRefreshError && kc.onAuthRefreshError();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setError(\"Failed to refresh token: An unexpected HTTP error occurred while attempting to refresh the token.\");\n }\n }\n }\n };\n\n req.send(params);\n }\n }\n }\n\n if (loginIframe.enable) {\n var iframePromise = checkLoginIframe();\n iframePromise.then(function() {\n exec();\n }).catch(function(error) {\n promise.setError(error);\n });\n } else {\n exec();\n }\n\n return promise.promise;\n }\n\n kc.clearToken = function() {\n if (kc.token) {\n setToken(null, null, null);\n kc.onAuthLogout && kc.onAuthLogout();\n if (kc.loginRequired) {\n kc.login();\n }\n }\n }\n\n function getRealmUrl() {\n if (typeof kc.authServerUrl !== 'undefined') {\n if (kc.authServerUrl.charAt(kc.authServerUrl.length - 1) == '/') {\n return kc.authServerUrl + 'realms/' + encodeURIComponent(kc.realm);\n } else {\n return kc.authServerUrl + '/realms/' + encodeURIComponent(kc.realm);\n }\n } else {\n return undefined;\n }\n }\n\n function getOrigin() {\n if (!window.location.origin) {\n return window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');\n } else {\n return window.location.origin;\n }\n }\n\n function processCallback(oauth, promise) {\n var code = oauth.code;\n var error = oauth.error;\n var prompt = oauth.prompt;\n\n var timeLocal = new Date().getTime();\n\n if (oauth['kc_action_status']) {\n kc.onActionUpdate && kc.onActionUpdate(oauth['kc_action_status'], oauth['kc_action']);\n }\n\n if (error) {\n if (prompt != 'none') {\n if (oauth.error_description && oauth.error_description === \"authentication_expired\") {\n kc.login(oauth.loginOptions);\n } else {\n var errorData = { error: error, error_description: oauth.error_description };\n kc.onAuthError && kc.onAuthError(errorData);\n promise && promise.setError(errorData);\n }\n } else {\n promise && promise.setSuccess();\n }\n return;\n } else if ((kc.flow != 'standard') && (oauth.access_token || oauth.id_token)) {\n authSuccess(oauth.access_token, null, oauth.id_token, true);\n }\n\n if ((kc.flow != 'implicit') && code) {\n var params = 'code=' + code + '&grant_type=authorization_code';\n var url = kc.endpoints.token();\n\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n params += '&redirect_uri=' + oauth.redirectUri;\n\n if (oauth.pkceCodeVerifier) {\n params += '&code_verifier=' + oauth.pkceCodeVerifier;\n }\n\n req.withCredentials = true;\n\n req.onreadystatechange = function() {\n if (req.readyState == 4) {\n if (req.status == 200) {\n\n var tokenResponse = JSON.parse(req.responseText);\n authSuccess(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], kc.flow === 'standard');\n scheduleCheckIframe();\n } else {\n kc.onAuthError && kc.onAuthError();\n promise && promise.setError();\n }\n }\n };\n\n req.send(params);\n }\n\n function authSuccess(accessToken, refreshToken, idToken, fulfillPromise) {\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n setToken(accessToken, refreshToken, idToken, timeLocal);\n\n if (useNonce && (kc.idTokenParsed && kc.idTokenParsed.nonce != oauth.storedNonce)) {\n logInfo('[KEYCLOAK] Invalid nonce, clearing token');\n kc.clearToken();\n promise && promise.setError();\n } else {\n if (fulfillPromise) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n promise && promise.setSuccess();\n }\n }\n }\n\n }\n\n function loadConfig() {\n var promise = createPromise();\n var configUrl;\n\n if (typeof config === 'string') {\n configUrl = config;\n }\n\n function setupOidcEndoints(oidcConfiguration) {\n if (! oidcConfiguration) {\n kc.endpoints = {\n authorize: function() {\n return getRealmUrl() + '/protocol/openid-connect/auth';\n },\n token: function() {\n return getRealmUrl() + '/protocol/openid-connect/token';\n },\n logout: function() {\n return getRealmUrl() + '/protocol/openid-connect/logout';\n },\n checkSessionIframe: function() {\n return getRealmUrl() + '/protocol/openid-connect/login-status-iframe.html';\n },\n thirdPartyCookiesIframe: function() {\n return getRealmUrl() + '/protocol/openid-connect/3p-cookies/step1.html';\n },\n register: function() {\n return getRealmUrl() + '/protocol/openid-connect/registrations';\n },\n userinfo: function() {\n return getRealmUrl() + '/protocol/openid-connect/userinfo';\n }\n };\n } else {\n kc.endpoints = {\n authorize: function() {\n return oidcConfiguration.authorization_endpoint;\n },\n token: function() {\n return oidcConfiguration.token_endpoint;\n },\n logout: function() {\n if (!oidcConfiguration.end_session_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.end_session_endpoint;\n },\n checkSessionIframe: function() {\n if (!oidcConfiguration.check_session_iframe) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.check_session_iframe;\n },\n register: function() {\n throw 'Redirection to \"Register user\" page not supported in standard OIDC mode';\n },\n userinfo: function() {\n if (!oidcConfiguration.userinfo_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.userinfo_endpoint;\n }\n }\n }\n }\n\n if (configUrl) {\n var req = new XMLHttpRequest();\n req.open('GET', configUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var config = JSON.parse(req.responseText);\n\n kc.authServerUrl = config['auth-server-url'];\n kc.realm = config['realm'];\n kc.clientId = config['resource'];\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n kc.clientId = config.clientId;\n\n var oidcProvider = config['oidcProvider'];\n if (!oidcProvider) {\n kc.authServerUrl = config.url;\n kc.realm = config.realm;\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n if (typeof oidcProvider === 'string') {\n var oidcProviderConfigUrl;\n if (oidcProvider.charAt(oidcProvider.length - 1) == '/') {\n oidcProviderConfigUrl = oidcProvider + '.well-known/openid-configuration';\n } else {\n oidcProviderConfigUrl = oidcProvider + '/.well-known/openid-configuration';\n }\n var req = new XMLHttpRequest();\n req.open('GET', oidcProviderConfigUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var oidcProviderConfig = JSON.parse(req.responseText);\n setupOidcEndoints(oidcProviderConfig);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n setupOidcEndoints(oidcProvider);\n promise.setSuccess();\n }\n }\n }\n\n return promise.promise;\n }\n\n function fileLoaded(xhr) {\n return xhr.status == 0 && xhr.responseText && xhr.responseURL.startsWith('file:');\n }\n\n function setToken(token, refreshToken, idToken, timeLocal) {\n if (kc.tokenTimeoutHandle) {\n clearTimeout(kc.tokenTimeoutHandle);\n kc.tokenTimeoutHandle = null;\n }\n\n if (refreshToken) {\n kc.refreshToken = refreshToken;\n kc.refreshTokenParsed = decodeToken(refreshToken);\n } else {\n delete kc.refreshToken;\n delete kc.refreshTokenParsed;\n }\n\n if (idToken) {\n kc.idToken = idToken;\n kc.idTokenParsed = decodeToken(idToken);\n } else {\n delete kc.idToken;\n delete kc.idTokenParsed;\n }\n\n if (token) {\n kc.token = token;\n kc.tokenParsed = decodeToken(token);\n kc.sessionId = kc.tokenParsed.sid;\n kc.authenticated = true;\n kc.subject = kc.tokenParsed.sub;\n kc.realmAccess = kc.tokenParsed.realm_access;\n kc.resourceAccess = kc.tokenParsed.resource_access;\n\n if (timeLocal) {\n kc.timeSkew = Math.floor(timeLocal / 1000) - kc.tokenParsed.iat;\n }\n\n if (kc.timeSkew != null) {\n logInfo('[KEYCLOAK] Estimated time difference between browser and server is ' + kc.timeSkew + ' seconds');\n\n if (kc.onTokenExpired) {\n var expiresIn = (kc.tokenParsed['exp'] - (new Date().getTime() / 1000) + kc.timeSkew) * 1000;\n logInfo('[KEYCLOAK] Token expires in ' + Math.round(expiresIn / 1000) + ' s');\n if (expiresIn <= 0) {\n kc.onTokenExpired();\n } else {\n kc.tokenTimeoutHandle = setTimeout(kc.onTokenExpired, expiresIn);\n }\n }\n }\n } else {\n delete kc.token;\n delete kc.tokenParsed;\n delete kc.subject;\n delete kc.realmAccess;\n delete kc.resourceAccess;\n\n kc.authenticated = false;\n }\n }\n\n function createUUID() {\n if (typeof crypto === \"undefined\" || typeof crypto.randomUUID === \"undefined\") {\n throw new Error(\"Web Crypto API is not available.\");\n }\n\n return crypto.randomUUID();\n }\n\n function parseCallback(url) {\n var oauth = parseCallbackUrl(url);\n if (!oauth) {\n return;\n }\n\n var oauthState = callbackStorage.get(oauth.state);\n\n if (oauthState) {\n oauth.valid = true;\n oauth.redirectUri = oauthState.redirectUri;\n oauth.storedNonce = oauthState.nonce;\n oauth.prompt = oauthState.prompt;\n oauth.pkceCodeVerifier = oauthState.pkceCodeVerifier;\n oauth.loginOptions = oauthState.loginOptions;\n }\n\n return oauth;\n }\n\n function parseCallbackUrl(url) {\n var supportedParams;\n switch (kc.flow) {\n case 'standard':\n supportedParams = ['code', 'state', 'session_state', 'kc_action_status', 'kc_action', 'iss'];\n break;\n case 'implicit':\n supportedParams = ['access_token', 'token_type', 'id_token', 'state', 'session_state', 'expires_in', 'kc_action_status', 'kc_action', 'iss'];\n break;\n case 'hybrid':\n supportedParams = ['access_token', 'token_type', 'id_token', 'code', 'state', 'session_state', 'expires_in', 'kc_action_status', 'kc_action', 'iss'];\n break;\n }\n\n supportedParams.push('error');\n supportedParams.push('error_description');\n supportedParams.push('error_uri');\n\n var queryIndex = url.indexOf('?');\n var fragmentIndex = url.indexOf('#');\n\n var newUrl;\n var parsed;\n\n if (kc.responseMode === 'query' && queryIndex !== -1) {\n newUrl = url.substring(0, queryIndex);\n parsed = parseCallbackParams(url.substring(queryIndex + 1, fragmentIndex !== -1 ? fragmentIndex : url.length), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '?' + parsed.paramsString;\n }\n if (fragmentIndex !== -1) {\n newUrl += url.substring(fragmentIndex);\n }\n } else if (kc.responseMode === 'fragment' && fragmentIndex !== -1) {\n newUrl = url.substring(0, fragmentIndex);\n parsed = parseCallbackParams(url.substring(fragmentIndex + 1), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '#' + parsed.paramsString;\n }\n }\n\n if (parsed && parsed.oauthParams) {\n if (kc.flow === 'standard' || kc.flow === 'hybrid') {\n if ((parsed.oauthParams.code || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n } else if (kc.flow === 'implicit') {\n if ((parsed.oauthParams.access_token || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n }\n }\n }\n\n function parseCallbackParams(paramsString, supportedParams) {\n var p = paramsString.split('&');\n var result = {\n paramsString: '',\n oauthParams: {}\n }\n for (var i = 0; i < p.length; i++) {\n var split = p[i].indexOf(\"=\");\n var key = p[i].slice(0, split);\n if (supportedParams.indexOf(key) !== -1) {\n result.oauthParams[key] = p[i].slice(split + 1);\n } else {\n if (result.paramsString !== '') {\n result.paramsString += '&';\n }\n result.paramsString += p[i];\n }\n }\n return result;\n }\n\n function createPromise() {\n // Need to create a native Promise which also preserves the\n // interface of the custom promise type previously used by the API\n var p = {\n setSuccess: function(result) {\n p.resolve(result);\n },\n\n setError: function(result) {\n p.reject(result);\n }\n };\n p.promise = new Promise(function(resolve, reject) {\n p.resolve = resolve;\n p.reject = reject;\n });\n\n return p;\n }\n\n // Function to extend existing native Promise with timeout\n function applyTimeoutToPromise(promise, timeout, errorMessage) {\n var timeoutHandle = null;\n var timeoutPromise = new Promise(function (resolve, reject) {\n timeoutHandle = setTimeout(function () {\n reject({ \"error\": errorMessage || \"Promise is not settled within timeout of \" + timeout + \"ms\" });\n }, timeout);\n });\n\n return Promise.race([promise, timeoutPromise]).finally(function () {\n clearTimeout(timeoutHandle);\n });\n }\n\n function setupCheckLoginIframe() {\n var promise = createPromise();\n\n if (!loginIframe.enable) {\n promise.setSuccess();\n return promise.promise;\n }\n\n if (loginIframe.iframe) {\n promise.setSuccess();\n return promise.promise;\n }\n\n var iframe = document.createElement('iframe');\n loginIframe.iframe = iframe;\n\n iframe.onload = function() {\n var authUrl = kc.endpoints.authorize();\n if (authUrl.charAt(0) === '/') {\n loginIframe.iframeOrigin = getOrigin();\n } else {\n loginIframe.iframeOrigin = authUrl.substring(0, authUrl.indexOf('/', 8));\n }\n promise.setSuccess();\n }\n\n var src = kc.endpoints.checkSessionIframe();\n iframe.setAttribute('src', src );\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin');\n iframe.setAttribute('title', 'keycloak-session-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if ((event.origin !== loginIframe.iframeOrigin) || (loginIframe.iframe.contentWindow !== event.source)) {\n return;\n }\n\n if (!(event.data == 'unchanged' || event.data == 'changed' || event.data == 'error')) {\n return;\n }\n\n\n if (event.data != 'unchanged') {\n kc.clearToken();\n }\n\n var callbacks = loginIframe.callbackList.splice(0, loginIframe.callbackList.length);\n\n for (var i = callbacks.length - 1; i >= 0; --i) {\n var promise = callbacks[i];\n if (event.data == 'error') {\n promise.setError();\n } else {\n promise.setSuccess(event.data == 'unchanged');\n }\n }\n };\n\n window.addEventListener('message', messageCallback, false);\n\n return promise.promise;\n }\n\n function scheduleCheckIframe() {\n if (loginIframe.enable) {\n if (kc.token) {\n setTimeout(function() {\n checkLoginIframe().then(function(unchanged) {\n if (unchanged) {\n scheduleCheckIframe();\n }\n });\n }, loginIframe.interval * 1000);\n }\n }\n }\n\n function checkLoginIframe() {\n var promise = createPromise();\n\n if (loginIframe.iframe && loginIframe.iframeOrigin ) {\n var msg = kc.clientId + ' ' + (kc.sessionId ? kc.sessionId : '');\n loginIframe.callbackList.push(promise);\n var origin = loginIframe.iframeOrigin;\n if (loginIframe.callbackList.length == 1) {\n loginIframe.iframe.contentWindow.postMessage(msg, origin);\n }\n } else {\n promise.setSuccess();\n }\n\n return promise.promise;\n }\n\n function check3pCookiesSupported() {\n var promise = createPromise();\n\n if ((loginIframe.enable || kc.silentCheckSsoRedirectUri) && typeof kc.endpoints.thirdPartyCookiesIframe === 'function') {\n var iframe = document.createElement('iframe');\n iframe.setAttribute('src', kc.endpoints.thirdPartyCookiesIframe());\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin');\n iframe.setAttribute('title', 'keycloak-3p-check-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if (iframe.contentWindow !== event.source) {\n return;\n }\n\n if (event.data !== \"supported\" && event.data !== \"unsupported\") {\n return;\n } else if (event.data === \"unsupported\") {\n logWarn(\n \"[KEYCLOAK] Your browser is blocking access to 3rd-party cookies, this means:\\n\\n\" +\n \" - It is not possible to retrieve tokens without redirecting to the Keycloak server (a.k.a. no support for silent authentication).\\n\" +\n \" - It is not possible to automatically detect changes to the session status (such as the user logging out in another tab).\\n\\n\" +\n \"For more information see: https://www.keycloak.org/securing-apps/javascript-adapter#_modern_browsers\"\n );\n\n loginIframe.enable = false;\n if (kc.silentCheckSsoFallback) {\n kc.silentCheckSsoRedirectUri = false;\n }\n }\n\n document.body.removeChild(iframe);\n window.removeEventListener(\"message\", messageCallback);\n promise.setSuccess();\n };\n\n window.addEventListener('message', messageCallback, false);\n } else {\n promise.setSuccess();\n }\n\n return applyTimeoutToPromise(promise.promise, kc.messageReceiveTimeout, \"Timeout when waiting for 3rd party check iframe message.\");\n }\n\n function loadAdapter(type) {\n if (!type || type == 'default') {\n return {\n login: async function(options) {\n window.location.assign(await kc.createLoginUrl(options));\n return createPromise().promise;\n },\n\n logout: async function(options) {\n\n const logoutMethod = options?.logoutMethod ?? kc.logoutMethod;\n if (logoutMethod === \"GET\") {\n window.location.replace(kc.createLogoutUrl(options));\n return;\n }\n\n // Create form to send POST request.\n const form = document.createElement(\"form\");\n\n form.setAttribute(\"method\", \"POST\");\n form.setAttribute(\"action\", kc.createLogoutUrl(options));\n form.style.display = \"none\";\n\n // Add data to form as hidden input fields.\n const data = {\n id_token_hint: kc.idToken,\n client_id: kc.clientId,\n post_logout_redirect_uri: adapter.redirectUri(options, false)\n };\n\n for (const [name, value] of Object.entries(data)) {\n const input = document.createElement(\"input\");\n\n input.setAttribute(\"type\", \"hidden\");\n input.setAttribute(\"name\", name);\n input.setAttribute(\"value\", value);\n\n form.appendChild(input);\n }\n\n // Append form to page and submit it to perform logout and redirect.\n document.body.appendChild(form);\n form.submit();\n },\n\n register: async function(options) {\n window.location.assign(await kc.createRegisterUrl(options));\n return createPromise().promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.location.href = accountUrl;\n } else {\n throw \"Not supported by the OIDC server\";\n }\n return createPromise().promise;\n },\n\n redirectUri: function(options, encodeHash) {\n if (arguments.length == 1) {\n encodeHash = true;\n }\n\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return location.href;\n }\n }\n };\n }\n\n if (type == 'cordova') {\n loginIframe.enable = false;\n var cordovaOpenWindowWrapper = function(loginUrl, target, options) {\n if (window.cordova && window.cordova.InAppBrowser) {\n // Use inappbrowser for IOS and Android if available\n return window.cordova.InAppBrowser.open(loginUrl, target, options);\n } else {\n return window.open(loginUrl, target, options);\n }\n };\n\n var shallowCloneCordovaOptions = function (userOptions) {\n if (userOptions && userOptions.cordovaOptions) {\n return Object.keys(userOptions.cordovaOptions).reduce(function (options, optionName) {\n options[optionName] = userOptions.cordovaOptions[optionName];\n return options;\n }, {});\n } else {\n return {};\n }\n };\n\n var formatCordovaOptions = function (cordovaOptions) {\n return Object.keys(cordovaOptions).reduce(function (options, optionName) {\n options.push(optionName+\"=\"+cordovaOptions[optionName]);\n return options;\n }, []).join(\",\");\n };\n\n var createCordovaOptions = function (userOptions) {\n var cordovaOptions = shallowCloneCordovaOptions(userOptions);\n cordovaOptions.location = 'no';\n if (userOptions && userOptions.prompt == 'none') {\n cordovaOptions.hidden = 'yes';\n }\n return formatCordovaOptions(cordovaOptions);\n };\n\n var getCordovaRedirectUri = function() {\n return kc.redirectUri || 'http://localhost';\n }\n\n return {\n login: async function(options) {\n var promise = createPromise();\n\n var cordovaOptions = createCordovaOptions(options);\n var loginUrl = await kc.createLoginUrl(options);\n var ref = cordovaOpenWindowWrapper(loginUrl, '_blank', cordovaOptions);\n var completed = false;\n\n var closed = false;\n var closeBrowser = function() {\n closed = true;\n ref.close();\n };\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (!completed) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n } else {\n promise.setError();\n closeBrowser();\n }\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (!closed) {\n promise.setError({\n reason: \"closed_by_user\"\n });\n }\n });\n\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n\n var logoutUrl = kc.createLogoutUrl(options);\n var ref = cordovaOpenWindowWrapper(logoutUrl, '_blank', 'location=no,hidden=yes,clearcache=yes');\n\n var error;\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n } else {\n error = true;\n ref.close();\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (error) {\n promise.setError();\n } else {\n kc.clearToken();\n promise.setSuccess();\n }\n });\n\n return promise.promise;\n },\n\n register : async function(options) {\n var promise = createPromise();\n var registerUrl = await kc.createRegisterUrl();\n var cordovaOptions = createCordovaOptions(options);\n var ref = cordovaOpenWindowWrapper(registerUrl, '_blank', cordovaOptions);\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n }\n });\n return promise.promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n var ref = cordovaOpenWindowWrapper(accountUrl, '_blank', 'location=no');\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n }\n });\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n return getCordovaRedirectUri();\n }\n }\n }\n\n if (type == 'cordova-native') {\n loginIframe.enable = false;\n\n return {\n login: async function(options) {\n var promise = createPromise();\n var loginUrl = await kc.createLoginUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n\n window.cordova.plugins.browsertab.openUrl(loginUrl);\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n var logoutUrl = kc.createLogoutUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n kc.clearToken();\n promise.setSuccess();\n });\n\n window.cordova.plugins.browsertab.openUrl(logoutUrl);\n return promise.promise;\n },\n\n register : async function(options) {\n var promise = createPromise();\n var registerUrl = await kc.createRegisterUrl(options);\n universalLinks.subscribe('keycloak' , function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n window.cordova.plugins.browsertab.openUrl(registerUrl);\n return promise.promise;\n\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.cordova.plugins.browsertab.openUrl(accountUrl);\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return \"http://localhost\";\n }\n }\n }\n }\n\n throw 'invalid adapter type: ' + type;\n }\n\n const STORAGE_KEY_PREFIX = 'kc-callback-';\n\n var LocalStorage = function() {\n if (!(this instanceof LocalStorage)) {\n return new LocalStorage();\n }\n\n localStorage.setItem('kc-test', 'test');\n localStorage.removeItem('kc-test');\n\n var cs = this;\n\n /**\n * Clears all values from local storage that are no longer valid.\n */\n function clearInvalidValues() {\n const currentTime = Date.now();\n\n for (const [key, value] of getStoredEntries()) {\n // Attempt to parse the expiry time from the value.\n const expiry = parseExpiry(value);\n\n // Discard the value if it is malformed or expired.\n if (expiry === null || expiry < currentTime) {\n localStorage.removeItem(key);\n }\n }\n }\n\n /**\n * Clears all known values from local storage.\n */\n function clearAllValues() {\n for (const [key] of getStoredEntries()) {\n localStorage.removeItem(key);\n }\n }\n\n /**\n * Gets all entries stored in local storage that are known to be managed by this class.\n * @returns {Array<[string, unknown]>} An array of key-value pairs.\n */\n function getStoredEntries() {\n return Object.entries(localStorage).filter(([key]) => key.startsWith(STORAGE_KEY_PREFIX));\n }\n\n /**\n * Parses the expiry time from a value stored in local storage.\n * @param {unknown} value\n * @returns {number | null} The expiry time in milliseconds, or `null` if the value is malformed.\n */\n function parseExpiry(value) {\n let parsedValue;\n\n // Attempt to parse the value as JSON.\n try {\n parsedValue = JSON.parse(value);\n } catch (error) {\n return null;\n }\n\n // Attempt to extract the 'expires' property.\n if (isObject(parsedValue) && 'expires' in parsedValue && typeof parsedValue.expires === 'number') {\n return parsedValue.expires;\n }\n\n return null;\n }\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var key = STORAGE_KEY_PREFIX + state;\n var value = localStorage.getItem(key);\n if (value) {\n localStorage.removeItem(key);\n value = JSON.parse(value);\n }\n\n clearInvalidValues();\n return value;\n };\n\n cs.add = function(state) {\n clearInvalidValues();\n\n const key = STORAGE_KEY_PREFIX + state.state;\n const value = JSON.stringify({\n ...state,\n // Set the expiry time to 1 hour from now.\n expires: Date.now() + (60 * 60 * 1000)\n });\n\n try {\n localStorage.setItem(key, value);\n } catch (error) {\n // If the storage is full, clear all known values and try again.\n clearAllValues();\n localStorage.setItem(key, value);\n }\n };\n };\n\n var CookieStorage = function() {\n if (!(this instanceof CookieStorage)) {\n return new CookieStorage();\n }\n\n var cs = this;\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var value = getCookie(STORAGE_KEY_PREFIX + state);\n setCookie(STORAGE_KEY_PREFIX + state, '', cookieExpiration(-100));\n if (value) {\n return JSON.parse(value);\n }\n };\n\n cs.add = function(state) {\n setCookie(STORAGE_KEY_PREFIX + state.state, JSON.stringify(state), cookieExpiration(60));\n };\n\n cs.removeItem = function(key) {\n setCookie(key, '', cookieExpiration(-100));\n };\n\n var cookieExpiration = function (minutes) {\n var exp = new Date();\n exp.setTime(exp.getTime() + (minutes*60*1000));\n return exp;\n };\n\n var getCookie = function (key) {\n var name = key + '=';\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n };\n\n var setCookie = function (key, value, expirationDate) {\n var cookie = key + '=' + value + '; '\n + 'expires=' + expirationDate.toUTCString() + '; ';\n document.cookie = cookie;\n }\n };\n\n function createCallbackStorage() {\n try {\n return new LocalStorage();\n } catch (err) {\n }\n\n return new CookieStorage();\n }\n\n function createLogger(fn) {\n return function() {\n if (kc.enableLogging) {\n fn.apply(console, Array.prototype.slice.call(arguments));\n }\n };\n }\n}\n\nexport default Keycloak;\n\n/**\n * @param {ArrayBuffer} bytes\n * @see https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem\n */\nfunction bytesToBase64(bytes) {\n const binString = String.fromCodePoint(...bytes);\n return btoa(binString);\n}\n\n/**\n * @param {string} message\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#basic_example\n */\nasync function sha256Digest(message) {\n const encoder = new TextEncoder();\n const data = encoder.encode(message);\n\n if (typeof crypto === \"undefined\" || typeof crypto.subtle === \"undefined\") {\n throw new Error(\"Web Crypto API is not available.\");\n }\n\n return await crypto.subtle.digest(\"SHA-256\", data);\n}\n\n/**\n * @param {string} token\n */\nfunction decodeToken(token) {\n const [header, payload] = token.split(\".\");\n\n if (typeof payload !== \"string\") {\n throw new Error(\"Unable to decode token, payload not found.\");\n }\n\n let decoded;\n\n try {\n decoded = base64UrlDecode(payload);\n } catch (error) {\n throw new Error(\"Unable to decode token, payload is not a valid Base64URL value.\", { cause: error });\n }\n\n try {\n return JSON.parse(decoded);\n } catch (error) {\n throw new Error(\"Unable to decode token, payload is not a valid JSON value.\", { cause: error });\n }\n}\n\n/**\n * @param {string} input\n */\nfunction base64UrlDecode(input) {\n let output = input\n .replaceAll(\"-\", \"+\")\n .replaceAll(\"_\", \"/\");\n\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"Input is not of the correct length.\");\n }\n\n try {\n return b64DecodeUnicode(output);\n } catch (error) {\n return atob(output);\n }\n}\n\n/**\n * @param {string} input\n */\nfunction b64DecodeUnicode(input) {\n return decodeURIComponent(atob(input).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n\n if (code.length < 2) {\n code = \"0\" + code;\n }\n\n return \"%\" + code;\n }));\n}\n\n/**\n * Check if the input is an object that can be operated on.\n * @param {unknown} input\n */\nfunction isObject(input) {\n return typeof input === 'object' && input !== null;\n}\n","const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\nconst supportsRequestInitExt = () => {\n return typeof process === \"object\" && Number.parseInt(process?.versions?.node?.substring(0, 2)) >= 18 && process.versions.undici;\n};\nfunction randomID() {\n return Math.random().toString(36).slice(2, 11);\n}\nfunction createClient(clientOptions) {\n let {\n baseUrl = \"\",\n Request: CustomRequest = globalThis.Request,\n fetch: baseFetch = globalThis.fetch,\n querySerializer: globalQuerySerializer,\n bodySerializer: globalBodySerializer,\n headers: baseHeaders,\n requestInitExt = void 0,\n ...baseOptions\n } = { ...clientOptions };\n requestInitExt = supportsRequestInitExt() ? requestInitExt : void 0;\n baseUrl = removeTrailingSlash(baseUrl);\n const globalMiddlewares = [];\n async function coreFetch(schemaPath, fetchOptions) {\n const {\n baseUrl: localBaseUrl,\n fetch = baseFetch,\n Request = CustomRequest,\n headers,\n params = {},\n parseAs = \"json\",\n querySerializer: requestQuerySerializer,\n bodySerializer = globalBodySerializer ?? defaultBodySerializer,\n body,\n middleware: requestMiddlewares = [],\n ...init\n } = fetchOptions || {};\n let finalBaseUrl = baseUrl;\n if (localBaseUrl) {\n finalBaseUrl = removeTrailingSlash(localBaseUrl) ?? baseUrl;\n }\n let querySerializer = typeof globalQuerySerializer === \"function\" ? globalQuerySerializer : createQuerySerializer(globalQuerySerializer);\n if (requestQuerySerializer) {\n querySerializer = typeof requestQuerySerializer === \"function\" ? requestQuerySerializer : createQuerySerializer({\n ...typeof globalQuerySerializer === \"object\" ? globalQuerySerializer : {},\n ...requestQuerySerializer\n });\n }\n const serializedBody = body === void 0 ? void 0 : bodySerializer(\n body,\n // Note: we declare mergeHeaders() both here and below because it’s a bit of a chicken-or-egg situation:\n // bodySerializer() needs all headers so we aren’t dropping ones set by the user, however,\n // the result of this ALSO sets the lowest-priority content-type header. So we re-merge below,\n // setting the content-type at the very beginning to be overwritten.\n // Lastly, based on the way headers work, it’s not a simple “present-or-not” check becauase null intentionally un-sets headers.\n mergeHeaders(baseHeaders, headers, params.header)\n );\n const finalHeaders = mergeHeaders(\n // with no body, we should not to set Content-Type\n serializedBody === void 0 || // if serialized body is FormData; browser will correctly set Content-Type & boundary expression\n serializedBody instanceof FormData ? {} : {\n \"Content-Type\": \"application/json\"\n },\n baseHeaders,\n headers,\n params.header\n );\n const finalMiddlewares = [...globalMiddlewares, ...requestMiddlewares];\n const requestInit = {\n redirect: \"follow\",\n ...baseOptions,\n ...init,\n body: serializedBody,\n headers: finalHeaders\n };\n let id;\n let options;\n let request = new Request(\n createFinalURL(schemaPath, { baseUrl: finalBaseUrl, params, querySerializer }),\n requestInit\n );\n let response;\n for (const key in init) {\n if (!(key in request)) {\n request[key] = init[key];\n }\n }\n if (finalMiddlewares.length) {\n id = randomID();\n options = Object.freeze({\n baseUrl: finalBaseUrl,\n fetch,\n parseAs,\n querySerializer,\n bodySerializer\n });\n for (const m of finalMiddlewares) {\n if (m && typeof m === \"object\" && typeof m.onRequest === \"function\") {\n const result = await m.onRequest({\n request,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (result instanceof Request) {\n request = result;\n } else if (result instanceof Response) {\n response = result;\n break;\n } else {\n throw new Error(\"onRequest: must return new Request() or Response() when modifying the request\");\n }\n }\n }\n }\n }\n if (!response) {\n try {\n response = await fetch(request, requestInitExt);\n } catch (error2) {\n let errorAfterMiddleware = error2;\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onError === \"function\") {\n const result = await m.onError({\n request,\n error: errorAfterMiddleware,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (result instanceof Response) {\n errorAfterMiddleware = void 0;\n response = result;\n break;\n }\n if (result instanceof Error) {\n errorAfterMiddleware = result;\n continue;\n }\n throw new Error(\"onError: must return new Response() or instance of Error\");\n }\n }\n }\n }\n if (errorAfterMiddleware) {\n throw errorAfterMiddleware;\n }\n }\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onResponse === \"function\") {\n const result = await m.onResponse({\n request,\n response,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (!(result instanceof Response)) {\n throw new Error(\"onResponse: must return new Response() when modifying the response\");\n }\n response = result;\n }\n }\n }\n }\n }\n if (response.status === 204 || request.method === \"HEAD\" || response.headers.get(\"Content-Length\") === \"0\") {\n return response.ok ? { data: void 0, response } : { error: void 0, response };\n }\n if (response.ok) {\n if (parseAs === \"stream\") {\n return { data: response.body, response };\n }\n return { data: await response[parseAs](), response };\n }\n let error = await response.text();\n try {\n error = JSON.parse(error);\n } catch {\n }\n return { error, response };\n }\n return {\n request(method, url, init) {\n return coreFetch(url, { ...init, method: method.toUpperCase() });\n },\n /** Call a GET endpoint */\n GET(url, init) {\n return coreFetch(url, { ...init, method: \"GET\" });\n },\n /** Call a PUT endpoint */\n PUT(url, init) {\n return coreFetch(url, { ...init, method: \"PUT\" });\n },\n /** Call a POST endpoint */\n POST(url, init) {\n return coreFetch(url, { ...init, method: \"POST\" });\n },\n /** Call a DELETE endpoint */\n DELETE(url, init) {\n return coreFetch(url, { ...init, method: \"DELETE\" });\n },\n /** Call a OPTIONS endpoint */\n OPTIONS(url, init) {\n return coreFetch(url, { ...init, method: \"OPTIONS\" });\n },\n /** Call a HEAD endpoint */\n HEAD(url, init) {\n return coreFetch(url, { ...init, method: \"HEAD\" });\n },\n /** Call a PATCH endpoint */\n PATCH(url, init) {\n return coreFetch(url, { ...init, method: \"PATCH\" });\n },\n /** Call a TRACE endpoint */\n TRACE(url, init) {\n return coreFetch(url, { ...init, method: \"TRACE\" });\n },\n /** Register middleware */\n use(...middleware) {\n for (const m of middleware) {\n if (!m) {\n continue;\n }\n if (typeof m !== \"object\" || !(\"onRequest\" in m || \"onResponse\" in m || \"onError\" in m)) {\n throw new Error(\"Middleware must be an object with one of `onRequest()`, `onResponse() or `onError()`\");\n }\n globalMiddlewares.push(m);\n }\n },\n /** Unregister middleware */\n eject(...middleware) {\n for (const m of middleware) {\n const i = globalMiddlewares.indexOf(m);\n if (i !== -1) {\n globalMiddlewares.splice(i, 1);\n }\n }\n }\n };\n}\nclass PathCallForwarder {\n constructor(client, url) {\n this.client = client;\n this.url = url;\n }\n GET = (init) => {\n return this.client.GET(this.url, init);\n };\n PUT = (init) => {\n return this.client.PUT(this.url, init);\n };\n POST = (init) => {\n return this.client.POST(this.url, init);\n };\n DELETE = (init) => {\n return this.client.DELETE(this.url, init);\n };\n OPTIONS = (init) => {\n return this.client.OPTIONS(this.url, init);\n };\n HEAD = (init) => {\n return this.client.HEAD(this.url, init);\n };\n PATCH = (init) => {\n return this.client.PATCH(this.url, init);\n };\n TRACE = (init) => {\n return this.client.TRACE(this.url, init);\n };\n}\nclass PathClientProxyHandler {\n constructor() {\n this.client = null;\n }\n // Assume the property is an URL.\n get(coreClient, url) {\n const forwarder = new PathCallForwarder(coreClient, url);\n this.client[url] = forwarder;\n return forwarder;\n }\n}\nfunction wrapAsPathBasedClient(coreClient) {\n const handler = new PathClientProxyHandler();\n const proxy = new Proxy(coreClient, handler);\n function Client() {\n }\n Client.prototype = proxy;\n const client = new Client();\n handler.client = client;\n return client;\n}\nfunction createPathBasedClient(clientOptions) {\n return wrapAsPathBasedClient(createClient(clientOptions));\n}\nfunction serializePrimitiveParam(name, value, options) {\n if (value === void 0 || value === null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n throw new Error(\n \"Deeply-nested arrays/objects aren\\u2019t supported. Provide your own `querySerializer()` to handle these.\"\n );\n }\n return `${name}=${options?.allowReserved === true ? value : encodeURIComponent(value)}`;\n}\nfunction serializeObjectParam(name, value, options) {\n if (!value || typeof value !== \"object\") {\n return \"\";\n }\n const values = [];\n const joiner = {\n simple: \",\",\n label: \".\",\n matrix: \";\"\n }[options.style] || \"&\";\n if (options.style !== \"deepObject\" && options.explode === false) {\n for (const k in value) {\n values.push(k, options.allowReserved === true ? value[k] : encodeURIComponent(value[k]));\n }\n const final2 = values.join(\",\");\n switch (options.style) {\n case \"form\": {\n return `${name}=${final2}`;\n }\n case \"label\": {\n return `.${final2}`;\n }\n case \"matrix\": {\n return `;${name}=${final2}`;\n }\n default: {\n return final2;\n }\n }\n }\n for (const k in value) {\n const finalName = options.style === \"deepObject\" ? `${name}[${k}]` : k;\n values.push(serializePrimitiveParam(finalName, value[k], options));\n }\n const final = values.join(joiner);\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${final}` : final;\n}\nfunction serializeArrayParam(name, value, options) {\n if (!Array.isArray(value)) {\n return \"\";\n }\n if (options.explode === false) {\n const joiner2 = { form: \",\", spaceDelimited: \"%20\", pipeDelimited: \"|\" }[options.style] || \",\";\n const final = (options.allowReserved === true ? value : value.map((v) => encodeURIComponent(v))).join(joiner2);\n switch (options.style) {\n case \"simple\": {\n return final;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n // case \"spaceDelimited\":\n // case \"pipeDelimited\":\n default: {\n return `${name}=${final}`;\n }\n }\n }\n const joiner = { simple: \",\", label: \".\", matrix: \";\" }[options.style] || \"&\";\n const values = [];\n for (const v of value) {\n if (options.style === \"simple\" || options.style === \"label\") {\n values.push(options.allowReserved === true ? v : encodeURIComponent(v));\n } else {\n values.push(serializePrimitiveParam(name, v, options));\n }\n }\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${values.join(joiner)}` : values.join(joiner);\n}\nfunction createQuerySerializer(options) {\n return function querySerializer(queryParams) {\n const search = [];\n if (queryParams && typeof queryParams === \"object\") {\n for (const name in queryParams) {\n const value = queryParams[name];\n if (value === void 0 || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n continue;\n }\n search.push(\n serializeArrayParam(name, value, {\n style: \"form\",\n explode: true,\n ...options?.array,\n allowReserved: options?.allowReserved || false\n })\n );\n continue;\n }\n if (typeof value === \"object\") {\n search.push(\n serializeObjectParam(name, value, {\n style: \"deepObject\",\n explode: true,\n ...options?.object,\n allowReserved: options?.allowReserved || false\n })\n );\n continue;\n }\n search.push(serializePrimitiveParam(name, value, options));\n }\n }\n return search.join(\"&\");\n };\n}\nfunction defaultPathSerializer(pathname, pathParams) {\n let nextURL = pathname;\n for (const match of pathname.match(PATH_PARAM_RE) ?? []) {\n let name = match.substring(1, match.length - 1);\n let explode = false;\n let style = \"simple\";\n if (name.endsWith(\"*\")) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n if (name.startsWith(\".\")) {\n style = \"label\";\n name = name.substring(1);\n } else if (name.startsWith(\";\")) {\n style = \"matrix\";\n name = name.substring(1);\n }\n if (!pathParams || pathParams[name] === void 0 || pathParams[name] === null) {\n continue;\n }\n const value = pathParams[name];\n if (Array.isArray(value)) {\n nextURL = nextURL.replace(match, serializeArrayParam(name, value, { style, explode }));\n continue;\n }\n if (typeof value === \"object\") {\n nextURL = nextURL.replace(match, serializeObjectParam(name, value, { style, explode }));\n continue;\n }\n if (style === \"matrix\") {\n nextURL = nextURL.replace(match, `;${serializePrimitiveParam(name, value)}`);\n continue;\n }\n nextURL = nextURL.replace(match, style === \"label\" ? `.${encodeURIComponent(value)}` : encodeURIComponent(value));\n }\n return nextURL;\n}\nfunction defaultBodySerializer(body, headers) {\n if (body instanceof FormData) {\n return body;\n }\n if (headers) {\n const contentType = headers.get instanceof Function ? headers.get(\"Content-Type\") ?? headers.get(\"content-type\") : headers[\"Content-Type\"] ?? headers[\"content-type\"];\n if (contentType === \"application/x-www-form-urlencoded\") {\n return new URLSearchParams(body).toString();\n }\n }\n return JSON.stringify(body);\n}\nfunction createFinalURL(pathname, options) {\n let finalURL = `${options.baseUrl}${pathname}`;\n if (options.params?.path) {\n finalURL = defaultPathSerializer(finalURL, options.params.path);\n }\n let search = options.querySerializer(options.params.query ?? {});\n if (search.startsWith(\"?\")) {\n search = search.substring(1);\n }\n if (search) {\n finalURL += `?${search}`;\n }\n return finalURL;\n}\nfunction mergeHeaders(...allHeaders) {\n const finalHeaders = new Headers();\n for (const h of allHeaders) {\n if (!h || typeof h !== \"object\") {\n continue;\n }\n const iterator = h instanceof Headers ? h.entries() : Object.entries(h);\n for (const [k, v] of iterator) {\n if (v === null) {\n finalHeaders.delete(k);\n } else if (Array.isArray(v)) {\n for (const v2 of v) {\n finalHeaders.append(k, v2);\n }\n } else if (v !== void 0) {\n finalHeaders.set(k, v);\n }\n }\n }\n return finalHeaders;\n}\nfunction removeTrailingSlash(url) {\n if (url.endsWith(\"/\")) {\n return url.substring(0, url.length - 1);\n }\n return url;\n}\n\nexport { createFinalURL, createPathBasedClient, createQuerySerializer, createClient as default, defaultBodySerializer, defaultPathSerializer, mergeHeaders, randomID, removeTrailingSlash, serializeArrayParam, serializeObjectParam, serializePrimitiveParam, wrapAsPathBasedClient };\n//# sourceMappingURL=index.mjs.map\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateUserBody = {\n firstName: string;\n lastName: string;\n email: string;\n password: string;\n phone?: string;\n document?: number;\n gender?: 'male' | 'female' | 'other';\n birthdate?: string;\n};\n\ntype UpdateUserDto = components['schemas']['UpdateUserDto'];\n\ntype GetUsersParams = {\n email?: string;\n document?: number;\n only_students?: boolean;\n institution_id?: string;\n search?: string;\n page?: number;\n limit?: number;\n};\n\nexport function createUserService(apiClient: AcademeApiClient) {\n return {\n /**\n * Get current authenticated user\n */\n getMe() {\n return apiClient.GET('/users/me');\n },\n\n /**\n * List all users with optional filters\n */\n getUsers(params?: GetUsersParams) {\n return apiClient.GET('/users', {\n params: { query: params },\n });\n },\n\n /**\n * Get user by ID\n */\n getUserById(id: string) {\n return apiClient.GET('/users/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Create a new user\n */\n createUser(body: CreateUserBody) {\n return apiClient.POST('/users', {\n body,\n });\n },\n\n /**\n * Update user information\n */\n updateUser(id: string, body: UpdateUserDto) {\n return apiClient.PATCH('/users/{id}', {\n params: { path: { id } },\n body,\n });\n },\n\n /**\n * Delete user\n */\n deleteUser(id: string) {\n return apiClient.DELETE('/users/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get user's groups\n */\n getUserGroups(id: string) {\n return apiClient.GET('/users/{id}/groups', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get user's certificates\n */\n getUserCertificates(id: string) {\n return apiClient.GET('/users/{id}/certificates', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get user's institutions\n */\n getUserInstitutions(id: string) {\n return apiClient.GET('/users/{id}/institutions', {\n params: { path: { id } },\n });\n },\n\n /**\n * Sync user with Keycloak\n */\n syncUser(id: string) {\n return apiClient.POST('/users/{id}/sync', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type UserService = ReturnType<typeof createUserService>;\n","import type { AcademeApiClient } from './index';\nimport type { components, paths } from '../types/academe-api';\n\ntype CreateInstitutionGroupDto = components['schemas']['CreateInstitutionGroupDto'];\ntype UpdateInstitutionGroupDto = components['schemas']['UpdateInstitutionGroupDto'];\ntype CreateInstitutionClassroomDto = components['schemas']['CreateInstitutionClassroomDto'];\ntype UpdateInstitutionClassroomDto = components['schemas']['UpdateInstitutionClassroomDto'];\ntype CreateInstitutionRegistrationDto = components['schemas']['CreateInstitutionRegistrationDto'];\ntype UpdateInstitutionRegistrationDto = components['schemas']['UpdateInstitutionRegistrationDto'];\ntype AssignClassroomDto = components['schemas']['AssignClassroomDto'];\n\n// Extract query parameters type directly from API path definition\ntype GetInstitutionUsersQuery = paths['/institutions/{institutionId}/users']['get']['parameters']['query'];\n\nexport function createInstitutionService(apiClient: AcademeApiClient) {\n return {\n getAll() {\n return apiClient.GET('/institutions');\n },\n getById(id: string) {\n return apiClient.GET('/institutions/{id}', { params: { path: { id } } });\n },\n\n // Institution Groups\n getGroups(institutionId: string) {\n return apiClient.GET('/institutions/{institutionId}/groups', {\n params: { path: { institutionId } },\n });\n },\n addGroup(institutionId: string, data: CreateInstitutionGroupDto) {\n return apiClient.POST('/institutions/{institutionId}/groups', {\n params: { path: { institutionId } },\n body: data,\n });\n },\n removeGroup(institutionId: string, groupId: string) {\n return apiClient.DELETE('/institutions/{institutionId}/groups/{groupId}', {\n params: { path: { institutionId, groupId } },\n });\n },\n updateGroup(institutionId: string, groupId: string, data: UpdateInstitutionGroupDto) {\n return apiClient.PATCH('/institutions/{institutionId}/groups/{groupId}', {\n params: { path: { institutionId, groupId } },\n body: data,\n });\n },\n // Institution Classrooms\n getClassrooms(institutionId: string, options?: { includeUserCount?: boolean }) {\n return apiClient.GET('/institutions/{institutionId}/classrooms', {\n params: {\n path: { institutionId },\n query: options,\n },\n });\n },\n getClassroomById(institutionId: string, classroomId: string) {\n return apiClient.GET('/institutions/{institutionId}/classrooms/{classroomId}', {\n params: { path: { institutionId, classroomId } },\n });\n },\n addClassroom(institutionId: string, data: CreateInstitutionClassroomDto) {\n return apiClient.POST('/institutions/{institutionId}/classrooms', {\n params: { path: { institutionId } },\n body: data,\n });\n },\n updateClassroom(institutionId: string, classroomId: string, data: UpdateInstitutionClassroomDto) {\n return apiClient.PATCH('/institutions/{institutionId}/classrooms/{classroomId}', {\n params: { path: { institutionId, classroomId } },\n body: data,\n });\n },\n removeClassroom(institutionId: string, classroomId: string) {\n return apiClient.DELETE('/institutions/{institutionId}/classrooms/{classroomId}', {\n params: { path: { institutionId, classroomId } },\n });\n },\n\n // Institution Users (list all users with filters)\n getUsers(\n institutionId: string,\n options?: GetInstitutionUsersQuery\n ) {\n return apiClient.GET('/institutions/{institutionId}/users', {\n params: {\n path: { institutionId },\n query: options,\n },\n });\n },\n\n // Institution Registrations (Users in Institution)\n getRegistrations(institutionId: string) {\n return apiClient.GET('/institutions/{institutionId}/registrations', {\n params: { path: { institutionId } },\n });\n },\n getRegistrationById(institutionId: string, registrationId: string) {\n return apiClient.GET('/institutions/{institutionId}/registrations/{registrationId}', {\n params: { path: { institutionId, registrationId } },\n });\n },\n getRegistrationByUserId(institutionId: string, userId: string) {\n return apiClient.GET('/institutions/{institutionId}/registrations/user/{userId}', {\n params: { path: { institutionId, userId } },\n });\n },\n registerUser(institutionId: string, data: CreateInstitutionRegistrationDto) {\n return apiClient.POST('/institutions/{institutionId}/registrations', {\n params: { path: { institutionId } },\n body: data,\n });\n },\n updateRegistration(institutionId: string, registrationId: string, data: UpdateInstitutionRegistrationDto) {\n return apiClient.PATCH('/institutions/{institutionId}/registrations/{registrationId}', {\n params: { path: { institutionId, registrationId } },\n body: data,\n });\n },\n assignUserToClassroom(institutionId: string, registrationId: string, data: AssignClassroomDto) {\n return apiClient.PATCH('/institutions/{institutionId}/registrations/{registrationId}/classroom', {\n params: { path: { institutionId, registrationId } },\n body: data,\n });\n },\n removeRegistration(institutionId: string, registrationId: string) {\n return apiClient.DELETE('/institutions/{institutionId}/registrations/{registrationId}', {\n params: { path: { institutionId, registrationId } },\n });\n },\n getGroupUsers(institutionId: string) {\n return apiClient.GET('/institutions/{institutionId}/groups/users', {\n params: { path: { institutionId } },\n });\n },\n };\n}\n\nexport type InstitutionService = ReturnType<typeof createInstitutionService>;\n","import type { AcademeApiClient } from './index';\n\ntype GetDashboardParams = {\n institutionId?: string;\n};\n\ntype GetRecentActivitiesParams = {\n period?: '7days' | '30days' | 'all';\n};\n\ntype GetTopStudentsParams = {\n filterType: 'nota' | 'engajamento' | 'conclusao';\n year?: number;\n};\n\nexport function createReportService(apiClient: AcademeApiClient) {\n return {\n /**\n * Get dashboard data (global)\n * Returns aggregated dashboard data for all institutions (requires admin permission)\n */\n getDashboard(params?: GetDashboardParams) {\n return apiClient.GET('/reports/dashboard', {\n params: { query: params },\n });\n },\n\n /**\n * Get dashboard data for specific institution\n * Returns aggregated dashboard data for a specific institution\n */\n getDashboardByInstitution(id: string) {\n return apiClient.GET('/reports/dashboard/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get courses distribution by area (global)\n * Returns distribution of course completions by area/category\n */\n getCoursesByArea() {\n return apiClient.GET('/reports/courses-by-area');\n },\n\n /**\n * Get courses distribution by area for specific institution\n * Returns distribution of course completions by area/category for an institution\n */\n getCoursesByAreaByInstitution(id: string) {\n return apiClient.GET('/reports/courses-by-area/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get adhesion rate (global)\n * Returns adhesion rate (unique students who accessed) per month for the last 6 months\n */\n getAdhesionRate() {\n return apiClient.GET('/reports/adhesion-rate');\n },\n\n /**\n * Get adhesion rate for specific institution\n * Returns adhesion rate for an institution for the last 6 months\n */\n getAdhesionRateByInstitution(id: string) {\n return apiClient.GET('/reports/adhesion-rate/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get recent activities (global)\n * Returns recent student activities (certificates issued and courses started)\n */\n getRecentActivities(params?: GetRecentActivitiesParams) {\n return apiClient.GET('/reports/recent-activities', {\n params: { query: params },\n });\n },\n\n /**\n * Get recent activities for specific institution\n * Returns recent student activities for an institution\n */\n getRecentActivitiesByInstitution(id: string, params?: GetRecentActivitiesParams) {\n return apiClient.GET('/reports/recent-activities/{id}', {\n params: {\n path: { id },\n query: params,\n },\n });\n },\n\n /**\n * Get top students (global)\n * Returns top 10 students based on selected filter\n */\n getTopStudents(params: GetTopStudentsParams) {\n return apiClient.GET('/reports/top-students', {\n params: { query: params },\n });\n },\n\n /**\n * Get top students for specific institution\n * Returns top 10 students for an institution based on selected filter\n */\n getTopStudentsByInstitution(id: string, params: GetTopStudentsParams) {\n return apiClient.GET('/reports/top-students/{id}', {\n params: {\n path: { id },\n query: params,\n },\n });\n },\n };\n}\n\nexport type ReportService = ReturnType<typeof createReportService>;\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateClassroomDto = components['schemas']['CreateClassroomDto'];\ntype UpdateClassroomDto = components['schemas']['UpdateClassroomDto'];\n\ntype GetClassroomsByInstitutionParams = {\n page?: number;\n limit?: number;\n search?: string;\n};\n\nexport function createClassroomService(apiClient: AcademeApiClient) {\n return {\n /**\n * List all classrooms\n */\n getAll() {\n return apiClient.GET('/classrooms');\n },\n\n /**\n * Get classroom by ID\n */\n getById(id: string) {\n return apiClient.GET('/classrooms/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get classrooms by institution ID\n */\n getByInstitution(institutionId: string, params?: GetClassroomsByInstitutionParams) {\n return apiClient.GET('/classrooms/institution/{id}', {\n params: {\n path: { id: institutionId },\n query: params,\n },\n });\n },\n\n /**\n * Create a new classroom\n */\n create(data: CreateClassroomDto) {\n return apiClient.POST('/classrooms', {\n body: data,\n });\n },\n\n /**\n * Update classroom\n */\n update(id: string, data: UpdateClassroomDto) {\n return apiClient.PATCH('/classrooms/{id}', {\n params: { path: { id } },\n body: data,\n });\n },\n\n /**\n * Delete classroom\n */\n delete(id: string) {\n return apiClient.DELETE('/classrooms/{id}', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type ClassroomService = ReturnType<typeof createClassroomService>;\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateOrganizationDto = components['schemas']['CreateOrganizationDto'];\ntype UpdateOrganizationDto = components['schemas']['UpdateOrganizationDto'];\n\ntype GetOrganizationsParams = {\n name?: string;\n type?: string;\n isActive?: boolean;\n search?: string;\n page?: number;\n limit?: number;\n};\n\nexport function createOrganizationService(apiClient: AcademeApiClient) {\n return {\n /**\n * List all organizations with optional filters\n */\n getAll(params?: GetOrganizationsParams) {\n return apiClient.GET('/organizations', {\n params: { query: params },\n });\n },\n\n /**\n * Get organization by ID\n */\n getById(id: string) {\n return apiClient.GET('/organizations/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Create a new organization\n */\n create(body: CreateOrganizationDto) {\n return apiClient.POST('/organizations', {\n body,\n });\n },\n\n /**\n * Update organization information\n */\n update(id: string, body: UpdateOrganizationDto) {\n return apiClient.PATCH('/organizations/{id}', {\n params: { path: { id } },\n body,\n });\n },\n\n /**\n * Delete organization\n * Note: Cannot delete organizations with children\n */\n delete(id: string) {\n return apiClient.DELETE('/organizations/{id}', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type OrganizationService = ReturnType<typeof createOrganizationService>;\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateSerieDto = components['schemas']['CreateSerieDto'];\ntype UpdateSerieDto = components['schemas']['UpdateSerieDto'];\n\nexport function createSerieService(apiClient: AcademeApiClient) {\n return {\n /**\n * List all series\n */\n getAll() {\n return apiClient.GET('/series');\n },\n\n /**\n * Get serie by ID\n */\n getById(id: string) {\n return apiClient.GET('/series/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Create a new serie\n */\n create(data: CreateSerieDto) {\n return apiClient.POST('/series', {\n body: data,\n });\n },\n\n /**\n * Update serie\n */\n update(id: string, data: UpdateSerieDto) {\n return apiClient.PATCH('/series/{id}', {\n params: { path: { id } },\n body: data,\n });\n },\n\n /**\n * Delete serie\n */\n delete(id: string) {\n return apiClient.DELETE('/series/{id}', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type SerieService = ReturnType<typeof createSerieService>;\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateShiftDto = components['schemas']['CreateShiftDto'];\ntype UpdateShiftDto = components['schemas']['UpdateShiftDto'];\n\nexport function createShiftService(apiClient: AcademeApiClient) {\n return {\n /**\n * List all shifts\n */\n getAll() {\n return apiClient.GET('/shifts');\n },\n\n /**\n * Get shift by ID\n */\n getById(id: string) {\n return apiClient.GET('/shifts/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Create a new shift\n */\n create(data: CreateShiftDto) {\n return apiClient.POST('/shifts', {\n body: data,\n });\n },\n\n /**\n * Update shift\n */\n update(id: string, data: UpdateShiftDto) {\n return apiClient.PATCH('/shifts/{id}', {\n params: { path: { id } },\n body: data,\n });\n },\n\n /**\n * Delete shift\n */\n delete(id: string) {\n return apiClient.DELETE('/shifts/{id}', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type ShiftService = ReturnType<typeof createShiftService>;\n\n\n\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateGuardianDto = components['schemas']['CreateGuardianDto'];\ntype UpdateGuardianDto = components['schemas']['UpdateGuardianDto'];\ntype AssignGuardianToUserDto = components['schemas']['AssignGuardianToUserDto'];\n\nexport function createGuardianService(apiClient: AcademeApiClient) {\n return {\n // List all guardians\n getAll() {\n return apiClient.GET('/guardians');\n },\n\n // Get guardian by ID\n getById(id: string) {\n return apiClient.GET('/guardians/{id}', {\n params: { path: { id } },\n });\n },\n\n // Create a new guardian\n create(data: CreateGuardianDto) {\n return apiClient.POST('/guardians', {\n body: data,\n });\n },\n\n // Update guardian\n update(id: string, data: UpdateGuardianDto) {\n return apiClient.PATCH('/guardians/{id}', {\n params: { path: { id } },\n body: data,\n });\n },\n\n // Delete guardian\n delete(id: string) {\n return apiClient.DELETE('/guardians/{id}', {\n params: { path: { id } },\n });\n },\n\n // Get guardian's users (students)\n getUsers(id: string) {\n return apiClient.GET('/guardians/{id}/users', {\n params: { path: { id } },\n });\n },\n\n // Assign guardian to user\n assignToUser(data: AssignGuardianToUserDto) {\n return apiClient.POST('/guardians/assign', {\n body: data,\n });\n },\n\n // Remove guardian from user\n removeFromUser(guardianId: string, userId: string) {\n return apiClient.DELETE('/guardians/{guardianId}/users/{userId}', {\n params: { path: { guardianId, userId } },\n });\n },\n };\n}\n\nexport type GuardianService = ReturnType<typeof createGuardianService>;\n\n","import type { paths } from '../types/academe-api';\nimport createClient from 'openapi-fetch';\nimport { createUserService, type UserService } from './UserService';\nimport { createInstitutionService, type InstitutionService } from './InstitutionService';\nimport { createReportService, type ReportService } from './ReportService';\nimport { createClassroomService, type ClassroomService } from './ClassroomService';\nimport { createOrganizationService, type OrganizationService } from './OrganizationService';\nimport { createSerieService, type SerieService } from './SerieService';\nimport { createShiftService, type ShiftService } from './ShiftService';\nimport { createGuardianService, type GuardianService } from './GuardianService';\n\nexport type AcademeApiClient = ReturnType<typeof createClient<paths>>;\n\nexport function createAcademeApiClient(baseUrl: string): AcademeApiClient {\n return createClient<paths>({ baseUrl });\n}\n\nexport interface AcademeServices {\n user: UserService;\n institution: InstitutionService;\n report: ReportService;\n classroom: ClassroomService;\n organization: OrganizationService;\n serie: SerieService;\n shift: ShiftService;\n guardian: GuardianService;\n}\n\nexport function createAcademeServices(apiClient: AcademeApiClient): AcademeServices {\n return {\n user: createUserService(apiClient),\n institution: createInstitutionService(apiClient),\n report: createReportService(apiClient),\n classroom: createClassroomService(apiClient),\n organization: createOrganizationService(apiClient),\n serie: createSerieService(apiClient),\n shift: createShiftService(apiClient),\n guardian: createGuardianService(apiClient),\n };\n}\n\nexport { createUserService, type UserService } from './UserService';\nexport { createReportService, type ReportService } from './ReportService';\nexport { createClassroomService, type ClassroomService } from './ClassroomService';\nexport { createOrganizationService, type OrganizationService } from './OrganizationService';\nexport { createSerieService, type SerieService } from './SerieService';\nexport { createShiftService, type ShiftService } from './ShiftService';\nexport { createGuardianService, type GuardianService } from './GuardianService';","export enum GLOBAL_ROLES {\n ADMIN_ACADEME = \"admin_academe\",\n SCHOOL_ADMIN = \"school_admin\",\n TEACHER = \"teacher\",\n STUDENT = \"student\",\n GUARDIAN = \"guardian\",\n}","import {\n createContext,\n useContext,\n useEffect,\n useState,\n useCallback,\n useMemo,\n} from \"react\";\nimport { ReactKeycloakProvider, useKeycloak } from \"@react-keycloak/web\";\nimport Keycloak from \"keycloak-js\";\nimport {\n createAcademeApiClient,\n createAcademeServices,\n type AcademeApiClient,\n type AcademeServices,\n} from \"../../services\";\nimport {\n SecurityContextType,\n SecurityProviderProps,\n AcademeKeycloakContextProps,\n AcademeUser,\n KeycloakUser,\n} from \"./types\";\nimport { GLOBAL_ROLES } from \"../../roles/global\";\n\n// --------------------------------------------------------\n// 1. SINGLETON: Variável declarada FORA do componente\n// Isso garante que ela sobreviva a re-renders do React\n// --------------------------------------------------------\nlet globalKeycloak: Keycloak | undefined;\n\nexport const AcademeAuthProvider: React.FC<AcademeKeycloakContextProps> = ({\n realm,\n hubUrl,\n children,\n clientId,\n keycloakUrl,\n apiBaseUrl,\n initOptions,\n skipApiUserFetch,\n}) => {\n // 2. Inicialização: Só cria se ainda não existir (Singleton)\n if (!globalKeycloak) {\n console.log(\"🦁 [AcademeAuthProvider] Criando Instância Única do Keycloak\");\n globalKeycloak = new Keycloak({ clientId, realm, url: keycloakUrl });\n }\n\n // Mantemos o initOptions memorizado, mas forçamos o logging para debug\n const keycloakInitOptions = useMemo(\n () => ({\n ...initOptions,\n enableLogging: true, // <-- Importante para vermos o fluxo no console\n }),\n [initOptions]\n );\n\n return (\n <ReactKeycloakProvider\n authClient={globalKeycloak} // Usamos a instância global\n initOptions={keycloakInitOptions}\n >\n <SecurityProvider\n hubUrl={hubUrl}\n apiBaseUrl={apiBaseUrl}\n skipApiUserFetch={skipApiUserFetch}\n >\n {children}\n </SecurityProvider>\n </ReactKeycloakProvider>\n );\n};\n\nconst SecurityContext = createContext<SecurityContextType>({\n isInitialized: false,\n user: null,\n refreshUserData: async () => {},\n signOut: () => null,\n goToLogin: () => null,\n hasSchool: () => false,\n hasRealmRole: () => false,\n hasClientRole: () => false,\n isAuthenticated: () => false,\n apiClient: null,\n services: null,\n accessToken: undefined,\n});\n\nconst SecurityProvider: React.FC<SecurityProviderProps> = ({\n apiBaseUrl = \"https://stg-api.academe.com.br\",\n skipApiUserFetch = false,\n children,\n}) => {\n const [isInitialized, setIsInitialized] = useState(false);\n const [currentUser, setCurrentUser] = useState<AcademeUser | null>(null);\n const { initialized, keycloak } = useKeycloak();\n\n const apiClient = useMemo<AcademeApiClient>(() => {\n return createAcademeApiClient(apiBaseUrl);\n }, [apiBaseUrl]);\n\n const services = useMemo<AcademeServices>(() => {\n return createAcademeServices(apiClient);\n }, [apiClient]);\n\n useEffect(() => {\n if (keycloak?.token) {\n apiClient.use({\n onRequest({ request }) {\n request.headers.set(\"Authorization\", `Bearer ${keycloak.token}`);\n return request;\n },\n });\n }\n }, [keycloak?.token, apiClient]);\n\n useEffect(() => {\n setIsInitialized(initialized);\n }, [initialized]);\n\n useEffect(() => {\n // @ts-ignore\n window.accessToken = keycloak.token;\n }, [keycloak.token]);\n\n const getKeycloakUser = useCallback((): KeycloakUser => {\n const idTokenParsed = keycloak?.idTokenParsed || {};\n\n return {\n email: idTokenParsed?.email || \"\",\n name: idTokenParsed?.given_name || \"\",\n lastName: idTokenParsed?.family_name || \"\",\n };\n }, [keycloak?.idTokenParsed]);\n\n useEffect(() => {\n const fetchUserData = async () => {\n if (initialized && keycloak?.authenticated && keycloak?.token) {\n if (skipApiUserFetch) {\n const academeUser: AcademeUser = {\n keycloakUser: getKeycloakUser(),\n } as AcademeUser;\n setCurrentUser({ ...academeUser, id: keycloak?.idTokenParsed?.sub });\n return;\n }\n\n try {\n const response = await services.user.getMe();\n if (response?.data?.data) {\n const academeUser: AcademeUser = {\n ...response.data.data,\n keycloakUser: getKeycloakUser(),\n };\n setCurrentUser(academeUser);\n }\n } catch (error) {\n console.error(\"Error fetching user data:\", error);\n }\n } else if (!keycloak?.authenticated) {\n setCurrentUser(null);\n }\n };\n\n fetchUserData();\n }, [\n initialized,\n keycloak?.authenticated,\n keycloak?.token,\n getKeycloakUser,\n services,\n skipApiUserFetch,\n ]);\n\n const refreshUserData = useCallback(async () => {\n if (keycloak?.authenticated) {\n if (skipApiUserFetch) {\n const academeUser: AcademeUser = {\n keycloakUser: getKeycloakUser(),\n } as AcademeUser;\n setCurrentUser(academeUser);\n return;\n }\n\n try {\n const response = await services.user.getMe();\n if (response?.data?.data) {\n const academeUser: AcademeUser = {\n ...response.data.data,\n keycloakUser: getKeycloakUser(),\n };\n setCurrentUser(academeUser);\n }\n } catch (error) {\n console.error(\"Error refreshing user data:\", error);\n }\n }\n }, [keycloak?.authenticated, getKeycloakUser, services, skipApiUserFetch]);\n\n const signOut = () => {\n setCurrentUser(null);\n keycloak?.logout();\n };\n\n const isAuthenticated = () => {\n return (\n !!keycloak?.idTokenParsed?.email?.length && !!keycloak?.authenticated\n );\n };\n\n const hasSchool = (schoolId: string) => {\n if (keycloak?.hasRealmRole(GLOBAL_ROLES.ADMIN_ACADEME)) {\n return true;\n }\n\n if (\n currentUser?.institutionRegistrations?.some(\n (registration) => registration.institutionId === schoolId\n )\n ) {\n return true;\n }\n\n return false;\n };\n\n return (\n <SecurityContext.Provider\n value={{\n isInitialized,\n user: currentUser,\n refreshUserData,\n signOut,\n isAuthenticated,\n hasSchool,\n goToLogin: keycloak.login,\n hasRealmRole: keycloak?.hasRealmRole,\n hasClientRole: keycloak.hasResourceRole,\n accessToken: keycloak?.token,\n apiClient,\n services,\n }}\n >\n {children}\n </SecurityContext.Provider>\n );\n};\n\ndeclare global {\n interface Window {\n accessToken?: string;\n }\n}\n\nexport const useAcademeAuth = () => useContext(SecurityContext);\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]];\nconst LoaderCircle = createLucideIcon(\"loader-circle\", __iconNode);\n\nexport { __iconNode, LoaderCircle as default };\n//# sourceMappingURL=loader-circle.js.map\n","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n } else if (currentCharacter === '(') {\n parenDepth++;\n } else if (currentCharacter === ')') {\n parenDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined\n };\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1);\n }\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1);\n }\n return baseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n const sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n };\n return sortModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { Loader2Icon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <Loader2Icon\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"size-10 animate-spin text-violet-500\", className)}\n {...props}\n />\n );\n}\n\nexport { Spinner };\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\nimport { Spinner } from \"../ui/spinner\";\n\ntype ProtectedAppProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n requiredRealmRoles?: string[];\n};\n\nexport const ProtectedApp: React.FC<ProtectedAppProps> = ({\n children,\n requiredClientRoles,\n requiredRealmRoles,\n}) => {\n const {\n isInitialized,\n goToLogin,\n hasClientRole,\n hasRealmRole,\n isAuthenticated,\n } = useAcademeAuth();\n\n if (!isInitialized) {\n return (\n <div className=\"flex w-screen h-screen items-center justify-center\">\n <Spinner className=\"size-10 text-violet-500\" />\n </div>\n );\n }\n\n if (!isAuthenticated()) {\n goToLogin();\n return <></>;\n }\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n return <></>;\n }\n\n if (\n requiredRealmRoles &&\n !requiredRealmRoles?.some((role) => hasRealmRole(role))\n ) {\n return (\n <div className=\"flex w-screen h-screen items-center justify-center\">\n <h1 className=\"text-2xl font-bold\">\n Você não tem permissão para acessar esta página\n </h1>\n <span>\n Se você acredita que isso é um erro, entre em contato com o suporte.\n </span>\n </div>\n );\n }\n\n return children;\n};\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\n\ntype ProtectedRouterProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n requiredRealmRoles?: string[];\n};\n\nexport const ProtectedComponent: React.FC<ProtectedRouterProps> = ({\n children,\n requiredRealmRoles,\n requiredClientRoles,\n}) => {\n const { hasClientRole, hasRealmRole } = useAcademeAuth();\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n return <></>;\n }\n\n if (\n requiredRealmRoles &&\n !requiredRealmRoles?.some((role) => hasRealmRole(role))\n ) {\n return <></>;\n }\n\n return children;\n};\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\n\ntype ProtectedRouterProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n unauthorizedMessage?: string;\n};\n\nexport const ProtectedRouter: React.FC<ProtectedRouterProps> = ({\n children,\n requiredClientRoles,\n unauthorizedMessage,\n}) => {\n const { hasClientRole } = useAcademeAuth();\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n return <h1>{unauthorizedMessage || \"unauthorized\"}</h1>;\n }\n\n return children;\n};\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","export enum BACKOFFICE_ROLES {\n}","export enum DASHBOARD_ROLES {\n}","export enum APPLICATIONS_ROLES {\n ACCESS_NINA = \"Acesso nina\",\n ACCESS_MIKE = \"Acesso mike\",\n VIEW_WIDGET = \"Visualizar Widget\",\n}","/**\n * This file was auto-generated by openapi-typescript.\n * Do not make direct changes to the file.\n */\n\nexport interface paths {\n \"/applications\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** Get all applications */\n get: {\n parameters: {\n query?: {\n /** @description Search applications by name */\n search?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of applications */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Application\"][];\n };\n };\n };\n };\n put?: never;\n /** Create a new application */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateApplicationDto\"];\n };\n };\n responses: {\n /** @description Application created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Application\"];\n };\n };\n /** @description Application already exists */\n 409: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/applications/sync\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Sync applications with Keycloak */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Sync completed successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n message?: string;\n synced?: number;\n errors?: number;\n };\n };\n };\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/applications/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** Get an application by ID */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Application ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Application found */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Application\"];\n };\n };\n /** @description Application not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n /** Delete an application */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Application ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Application deleted successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Application not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n options?: never;\n head?: never;\n /** Update an application */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Application ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateApplicationDto\"];\n };\n };\n responses: {\n /** @description Application updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Application\"];\n };\n };\n /** @description Application not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n trace?: never;\n };\n \"/auth/token\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Generate TheMembers JWT token for authenticated user\n * @description Generates a signed JWT token for TheMembers platform authentication.\n * This endpoint requires the user to be already authenticated with Keycloak.\n *\n * **Authentication Flow:**\n * 1. User must first authenticate with Keycloak\n * 2. Client sends request with Keycloak Bearer token in Authorization header\n * 3. Endpoint validates the token and extracts user information\n * 4. Endpoint returns TheMembers JWT token signed with RSA private key\n *\n * **Token Details:**\n * - Algorithm: RS256 (RSA with SHA-256)\n * - Payload includes user email and organization ID\n * - Token can be used for TheMembers platform authentication\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Token generated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: {\n /**\n * @description JWT token signed with RS256 algorithm for TheMembers\n * @example eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\n */\n token?: string;\n /** @description User information from Keycloak */\n user?: {\n /** @example user@example.com */\n email?: string;\n /** @example John Doe */\n name?: string;\n /**\n * @description Keycloak user subject identifier\n * @example f6c4a7e9-8b3d-4f2e-9c1a-5d8e7f2a1b3c\n */\n sub?: string;\n };\n };\n };\n };\n };\n /** @description Bad Request - Token generation failed */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example error */\n status?: string;\n /** @example Token generation failed */\n message?: string;\n };\n };\n };\n /** @description Unauthorized - User not authenticated or invalid Keycloak token */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example error */\n status?: string;\n /** @example User not authenticated */\n message?: string;\n };\n };\n };\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example error */\n status?: string;\n /** @example Failed to generate authentication token */\n message?: string;\n };\n };\n };\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/categories\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all categories\n * @description Retrieve a list of all course categories\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of categories */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Category\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new category\n * @description Create a new course category\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateCategoryDto\"];\n };\n };\n responses: {\n /** @description Category created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Category\"];\n /** @example Category created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/categories/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get category by ID\n * @description Retrieve detailed information about a specific category\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Category information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Category\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete category\n * @description Remove a category from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Category deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Category deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update category\n * @description Update category information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateCategoryDto\"];\n };\n };\n responses: {\n /** @description Category updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Category\"];\n /** @example Category updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/certificates\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all certificates\n * @description Retrieve a list of all certificates in the system\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of certificates */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new certificate\n * @description Issue a new certificate for a user\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateCertificateDto\"];\n };\n };\n responses: {\n /** @description Certificate created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"];\n /** @example Certificate created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/certificates/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get certificate by ID\n * @description Retrieve detailed information about a specific certificate\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Certificate information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete certificate\n * @description Remove a certificate from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Certificate deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Certificate deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update certificate\n * @description Update certificate information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateCertificateDto\"];\n };\n };\n responses: {\n /** @description Certificate updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"];\n /** @example Certificate updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/classrooms\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all classrooms\n * @description Retrieve a list of all classrooms\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of classrooms */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new classroom\n * @description Create a new classroom\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateClassroomDto\"];\n };\n };\n responses: {\n /** @description Classroom created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"];\n /** @example Classroom created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/classrooms/institution/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get classrooms by institution ID\n * @description Retrieve all active classrooms associated with a specific institution\n */\n get: {\n parameters: {\n query?: {\n /** @description Page number */\n page?: number;\n /** @description Number of items per page */\n limit?: number;\n /** @description Search by classroom name */\n search?: string;\n };\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of classrooms for the institution */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"][];\n meta?: {\n total?: number;\n page?: number;\n limit?: number;\n totalPages?: number;\n };\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/classrooms/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get classroom by ID\n * @description Retrieve detailed information about a specific classroom\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Classroom information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete classroom\n * @description Remove a classroom from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Classroom deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Classroom deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update classroom\n * @description Update classroom information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateClassroomDto\"];\n };\n };\n responses: {\n /** @description Classroom updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"];\n /** @example Classroom updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/courses\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all courses\n * @description Retrieve a list of all courses\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of courses */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Course\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new course\n * @description Create a new course in the system\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateCourseDto\"];\n };\n };\n responses: {\n /** @description Course created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Course\"];\n /** @example Course created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/courses/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get course by ID\n * @description Retrieve detailed information about a specific course\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Course\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete course\n * @description Remove a course from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update course\n * @description Update course information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateCourseDto\"];\n };\n };\n responses: {\n /** @description Course updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Course\"];\n /** @example Course updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/courses/modules\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Create course module\n * @description Create a new module for a course\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** Format: uuid */\n courseId: string;\n /** @example Introduction to Programming */\n title: string;\n description?: string;\n /** @example 1 */\n order?: number;\n };\n };\n };\n responses: {\n /** @description Course module created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/courses/modules/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get course module by ID\n * @description Retrieve detailed information about a specific course module\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course module information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: Record<string, never>;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete course module\n * @description Remove a module from a course\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course module deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update course module\n * @description Update course module information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n title?: string;\n description?: string;\n order?: number;\n };\n };\n };\n responses: {\n /** @description Course module updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/courses/modules/lessons\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Create course module lesson\n * @description Create a new lesson for a course module\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** Format: uuid */\n courseModuleId: string;\n /** @example Variables and Data Types */\n title: string;\n content?: string;\n /** @example 1 */\n order?: number;\n /** @example 30 */\n duration?: number;\n };\n };\n };\n responses: {\n /** @description Course module lesson created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module lesson created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/courses/modules/lessons/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get course module lesson by ID\n * @description Retrieve detailed information about a specific lesson\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course module lesson information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: Record<string, never>;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete course module lesson\n * @description Remove a lesson from a course module\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course module lesson deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module lesson deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update course module lesson\n * @description Update lesson information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n title?: string;\n content?: string;\n order?: number;\n duration?: number;\n };\n };\n };\n responses: {\n /** @description Course module lesson updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module lesson updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/groups\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all groups\n * @description Retrieve a list of all groups in the system\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of groups */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new group\n * @description Create a new group in the system and sync with Keycloak\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** @description Name of the group (e.g., student, teacher, admin) */\n name: string;\n /**\n * @description If true, group is automatically associated when creating institutions\n * @default false\n */\n isDefault?: boolean;\n /**\n * @description Type of the group\n * @default other\n * @enum {string}\n */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n };\n };\n };\n responses: {\n /** @description Group created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"];\n /** @example Group created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n /** @description Group already exists */\n 409: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get group by ID\n * @description Retrieve detailed information about a specific group\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Group information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete group\n * @description Remove a group from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Group deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Group deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update group\n * @description Update group information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** @description Name of the group */\n name?: string;\n /** @description If true, group is automatically associated when creating institutions */\n isDefault?: boolean;\n /**\n * @description Type of the group\n * @enum {string}\n */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n };\n };\n };\n responses: {\n /** @description Group updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"];\n /** @example Group updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/groups/{id}/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get group users\n * @description Retrieve all users that belong to a specific group\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of group users */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/{id}/roles\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get group roles\n * @description Retrieve all roles associated with a specific group\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of group roles */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/assign\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Assign user to group\n * @description Add a user to a specific group\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"AssignUserToGroupDto\"];\n };\n };\n responses: {\n /** @description User assigned to group successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example User assigned to group successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/{groupId}/users/{userId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Remove user from group\n * @description Remove a user from a specific group\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Group ID */\n groupId: string;\n /** @description User ID */\n userId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User removed from group successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example User removed from group successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/roles\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Assign role to group\n * @description Assign an existing role to a group\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /**\n * Format: uuid\n * @description ID of the group to assign the role to\n */\n groupId: string;\n /**\n * Format: uuid\n * @description ID of the role to assign to the group\n */\n roleId: string;\n };\n };\n };\n responses: {\n /** @description Group role created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Group role created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/roles/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Delete group role\n * @description Remove a role from a group\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Group role deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Group role deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update group role\n * @description Update an existing group role\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** Format: uuid */\n groupId?: string;\n /** Format: uuid */\n roleId?: string;\n };\n };\n };\n responses: {\n /** @description Group role updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Group role updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/guardians\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all guardians\n * @description Retrieve a list of all guardians in the system\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of guardians */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Guardian\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new guardian\n * @description Create a new guardian in the system\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateGuardianDto\"];\n };\n };\n responses: {\n /** @description Guardian created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Guardian\"];\n /** @example Guardian created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/guardians/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get guardian by ID\n * @description Retrieve detailed information about a specific guardian\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Guardian information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Guardian\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete guardian\n * @description Remove a guardian from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Guardian deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Guardian deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update guardian\n * @description Update guardian information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateGuardianDto\"];\n };\n };\n responses: {\n /** @description Guardian updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Guardian\"];\n /** @example Guardian updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/guardians/{id}/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get guardian's users\n * @description Retrieve all users (students) associated with a guardian\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of guardian's users */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/guardians/assign\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Assign guardian to user\n * @description Link a guardian to a user (student)\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"AssignGuardianToUserDto\"];\n };\n };\n responses: {\n /** @description Guardian assigned to user successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Guardian assigned to user successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/guardians/{guardianId}/users/{userId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Remove guardian from user\n * @description Remove the link between a guardian and a user (student)\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Guardian ID */\n guardianId: string;\n /** @description User ID */\n userId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Guardian removed from user successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Guardian removed from user successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/classrooms\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all classrooms of an institution\n * @description Retrieve a list of all classrooms associated with a specific institution, including shift and serie information. Optionally includes user count for each classroom.\n */\n get: {\n parameters: {\n query?: {\n /** @description When true, includes a userCount field with the number of users registered in each classroom */\n includeUserCount?: boolean;\n };\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of institution classrooms */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: (components[\"schemas\"][\"InstitutionClassroom\"] & {\n /**\n * @description Number of users registered in this classroom (only present when includeUserCount=true)\n * @example 25\n */\n userCount?: number;\n })[];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Associate a classroom with an institution\n * @description Create a new association between a classroom and an institution\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateInstitutionClassroomDto\"];\n };\n };\n responses: {\n /** @description Classroom associated successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionClassroom\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/classrooms/{classroomId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get a specific classroom of an institution\n * @description Retrieve details of a specific classroom associated with an institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Classroom ID */\n classroomId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Institution classroom details */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionClassroom\"];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Remove a classroom from an institution\n * @description Remove the association between a classroom and an institution\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Classroom ID */\n classroomId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Classroom removed from institution successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update institution classroom\n * @description Update the status of a classroom in an institution\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Classroom ID */\n classroomId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateInstitutionClassroomDto\"];\n };\n };\n responses: {\n /** @description Institution classroom updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionClassroom\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions/{institutionId}/groups\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all groups of an institution\n * @description Retrieve a list of all groups associated with a specific institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of institution groups */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionGroup\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Associate a group with an institution\n * @description Create a new association between a group and an institution\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateInstitutionGroupDto\"];\n };\n };\n responses: {\n /** @description Group associated successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionGroup\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/groups/{groupId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Remove a group from an institution\n * @description Remove the association between a group and an institution\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Group ID */\n groupId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Group removed from institution successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update institution group quantity\n * @description Update the available quantity for a group in an institution\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Group ID */\n groupId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateInstitutionGroupDto\"];\n };\n };\n responses: {\n /** @description Institution group updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionGroup\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions/{institutionId}/groups/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get all users of all groups in an institution\n * @description Retrieve all users from all groups associated with a specific institution.\n * Returns a map where keys are group IDs and values are arrays of users in each group.\n * This is more efficient than calling /groups/{id}/users multiple times.\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Users grouped by group ID */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n /**\n * @example {\n * \"status\": \"success\",\n * \"data\": {\n * \"group-uuid-1\": [\n * {\n * \"id\": \"user-uuid-1\",\n * \"firstName\": \"John\",\n * \"lastName\": \"Doe\",\n * \"email\": \"john@example.com\",\n * \"assignedAt\": \"2024-01-15T10:30:00Z\"\n * },\n * {\n * \"id\": \"user-uuid-2\",\n * \"firstName\": \"Jane\",\n * \"lastName\": \"Smith\",\n * \"email\": \"jane@example.com\",\n * \"assignedAt\": \"2024-01-16T14:20:00Z\"\n * }\n * ],\n * \"group-uuid-2\": [\n * {\n * \"id\": \"user-uuid-3\",\n * \"firstName\": \"Bob\",\n * \"lastName\": \"Wilson\",\n * \"email\": \"bob@example.com\",\n * \"assignedAt\": \"2024-01-17T09:15:00Z\"\n * }\n * ]\n * }\n * }\n */\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @description Map of group IDs to arrays of users */\n data?: {\n [key: string]: {\n /** Format: uuid */\n id?: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n document?: string;\n phone?: string;\n isActive?: boolean;\n /** Format: date-time */\n assignedAt?: string;\n /** Format: uuid */\n assignedBy?: string;\n }[];\n };\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/registrations\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all registrations of an institution\n * @description Retrieve a list of all users registered in a specific institution, including classroom assignments\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of institution registrations */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Register a user in an institution\n * @description Create a new registration for a user in an institution, optionally assigning them to a classroom\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateInstitutionRegistrationDto\"];\n };\n };\n responses: {\n /** @description User registered successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/registrations/{registrationId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get a specific registration\n * @description Retrieve details of a specific user registration in an institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Registration ID */\n registrationId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Registration details */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Remove a registration\n * @description Remove a user's registration from an institution\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Registration ID */\n registrationId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Registration removed successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update a registration\n * @description Update a user's registration details in an institution\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Registration ID */\n registrationId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateInstitutionRegistrationDto\"];\n };\n };\n responses: {\n /** @description Registration updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions/{institutionId}/registrations/user/{userId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get registration by user ID\n * @description Retrieve a user's registration in a specific institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description User ID */\n userId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User registration details */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/registrations/{registrationId}/classroom\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n /**\n * Assign user to a classroom\n * @description Assign or change a user's classroom in an institution. Send null to remove assignment.\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Registration ID */\n registrationId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"AssignClassroomDto\"];\n };\n };\n responses: {\n /** @description Classroom assigned successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all institutions\n * @description Retrieve a list of all educational institutions\n */\n get: {\n parameters: {\n query?: {\n /** @description Filter by institution name */\n name?: string;\n /** @description Filter by institution code */\n code?: string;\n /** @description Filter by organization ID */\n organizationId?: string;\n /** @description Filter by active status */\n isActive?: boolean;\n /** @description Search in institution name */\n search?: string;\n /** @description Page number */\n page?: number;\n /** @description Items per page */\n limit?: number;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of institutions */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"][];\n meta?: {\n total?: number;\n page?: number;\n limit?: number;\n totalPages?: number;\n };\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new institution\n * @description Create a new educational institution\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateInstitutionDto\"];\n };\n };\n responses: {\n /** @description Institution created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get institution by ID\n * @description Retrieve detailed information about a specific institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Institution information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete institution\n * @description Remove an institution from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Institution deleted successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update institution\n * @description Update institution information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateInstitutionDto\"];\n };\n };\n responses: {\n /** @description Institution updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions/{institutionId}/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all users from an institution\n * @description Retrieve a paginated list of all users registered in an institution with advanced filtering options\n */\n get: {\n parameters: {\n query?: {\n /** @description Filter by classroom (institution_classroom_id) */\n classroomId?: string;\n /** @description Filter by user active status */\n isActive?: boolean;\n /** @description Filter users by group type (e.g., student, teacher, school-director, other) */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n /** @description Filter users with certificates (true) or without (false) */\n hasCertificates?: boolean;\n /** @description Filter users with guardian (true) or without (false) */\n hasGuardian?: boolean;\n /** @description Search by email, first name, last name, or full name (case-insensitive) */\n search?: string;\n /** @description Page number */\n page?: number;\n /** @description Items per page */\n limit?: number;\n };\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of users from the institution */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"InstitutionUserListResponse\"];\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/organizations\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all organizations\n * @description Retrieve a list of all organizations with optional filters\n */\n get: {\n parameters: {\n query?: {\n /** @description Filter by organization name */\n name?: string;\n /** @description Filter by organization type (municipal, estadual, federal, privada) */\n type?: string;\n /** @description Filter by active status */\n isActive?: boolean;\n /** @description Search in organization name */\n search?: string;\n /** @description Page number */\n page?: number;\n /** @description Items per page */\n limit?: number;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of organizations */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Organization\"][];\n meta?: {\n total?: number;\n page?: number;\n limit?: number;\n totalPages?: number;\n };\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new organization\n * @description Create a new organization in the hierarchy\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateOrganizationDto\"];\n };\n };\n responses: {\n /** @description Organization created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Organization\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/organizations/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get organization by ID\n * @description Retrieve detailed information about a specific organization\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Organization information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Organization\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete organization\n * @description Remove an organization from the system. Cannot delete organizations with children.\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Organization deleted successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update organization\n * @description Update organization information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateOrganizationDto\"];\n };\n };\n responses: {\n /** @description Organization updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Organization\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/reports/dashboard\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get dashboard data (global)\n * @description Retorna dados agregados do dashboard para todas as instituições (requer permissão de admin)\n */\n get: {\n parameters: {\n query?: {\n /** @description ID da instituição (opcional) */\n institutionId?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Dashboard data retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"DashboardResponse\"];\n };\n };\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/dashboard/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get dashboard data for specific institution\n * @description Retorna dados agregados do dashboard para uma instituição específica\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Dashboard data retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"DashboardResponse\"];\n };\n };\n };\n /** @description Invalid institution ID */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Institution not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/courses-by-area\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get courses distribution by area (global)\n * @description Retorna distribuição de realizações de cursos por área/categoria\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Courses by area retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: {\n areas?: components[\"schemas\"][\"AreaData\"][];\n };\n };\n };\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/courses-by-area/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get courses distribution by area for specific institution\n * @description Retorna distribuição de realizações de cursos por área/categoria para uma instituição\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Courses by area retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: {\n areas?: components[\"schemas\"][\"AreaData\"][];\n };\n };\n };\n };\n /** @description Invalid institution ID */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/adhesion-rate\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get adhesion rate (global)\n * @description Retorna taxa de adesão (alunos únicos que acessaram) por mês nos últimos 6 meses\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Adhesion rate retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"AdhesionRateResponse\"];\n };\n };\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/adhesion-rate/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get adhesion rate for specific institution\n * @description Retorna taxa de adesão para uma instituição nos últimos 6 meses\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Adhesion rate retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"AdhesionRateResponse\"];\n };\n };\n };\n /** @description Invalid institution ID */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/recent-activities\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get recent activities (global)\n * @description Retorna atividades recentes dos alunos (certificados emitidos e cursos iniciados)\n */\n get: {\n parameters: {\n query?: {\n /** @description Período de consulta */\n period?: \"7days\" | \"30days\" | \"all\";\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Recent activities retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"RecentActivitiesResponse\"];\n };\n };\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/recent-activities/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get recent activities for specific institution\n * @description Retorna atividades recentes dos alunos de uma instituição\n */\n get: {\n parameters: {\n query?: {\n /** @description Período de consulta */\n period?: \"7days\" | \"30days\" | \"all\";\n };\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Recent activities retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"RecentActivitiesResponse\"];\n };\n };\n };\n /** @description Invalid institution ID or period */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/top-students\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get top students (global)\n * @description Retorna top 10 alunos baseado em filtro escolhido\n */\n get: {\n parameters: {\n query: {\n /** @description Tipo de filtro para ordenação */\n filterType: \"nota\" | \"engajamento\" | \"conclusao\";\n /** @description Ano para filtrar dados (padrão ano atual) */\n year?: number;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Top students retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"TopStudentsResponse\"];\n };\n };\n };\n /** @description Invalid filterType or year */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/top-students/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get top students for specific institution\n * @description Retorna top 10 alunos de uma instituição baseado em filtro\n */\n get: {\n parameters: {\n query: {\n /** @description Tipo de filtro para ordenação */\n filterType: \"nota\" | \"engajamento\" | \"conclusao\";\n /** @description Ano para filtrar dados (padrão ano atual) */\n year?: number;\n };\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Top students retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"TopStudentsResponse\"];\n };\n };\n };\n /** @description Invalid institution ID, filterType or year */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/roles\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all roles\n * @description Retrieve a paginated list of roles with optional search filters\n */\n get: {\n parameters: {\n query?: {\n /** @description Search roles by name */\n search?: string;\n /** @description Page number */\n page?: components[\"parameters\"][\"page\"];\n /** @description Items per page */\n limit?: components[\"parameters\"][\"limit\"];\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of roles */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"][];\n meta?: components[\"schemas\"][\"PaginationMeta\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new role\n * @description Create a new role in the system and sync with Keycloak\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateRoleDto\"];\n };\n };\n responses: {\n /** @description Role created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"];\n /** @example Role created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n /** @description Role already exists */\n 409: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/roles/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get role by ID\n * @description Retrieve detailed information about a specific role\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Role information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete role\n * @description Remove a role from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Role deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Role deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update role\n * @description Update role information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateRoleDto\"];\n };\n };\n responses: {\n /** @description Role updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"];\n /** @example Role updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/roles/{id}/groups\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get role's groups\n * @description Retrieve all groups that have this role assigned\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of groups with this role */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/roles/sync\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Sync roles with Keycloak\n * @description Synchronize all roles with Keycloak identity provider\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Roles synchronized successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Roles synchronized with Keycloak successfully */\n message?: string;\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/series\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all series\n * @description Retrieve a list of all educational series/grades\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of series */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Serie\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new serie\n * @description Create a new educational serie/grade\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateSerieDto\"];\n };\n };\n responses: {\n /** @description Serie created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Serie\"];\n /** @example Serie created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/series/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get serie by ID\n * @description Retrieve detailed information about a specific serie/grade\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Serie information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Serie\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete serie\n * @description Remove a serie from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Serie deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Serie deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update serie\n * @description Update serie information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateSerieDto\"];\n };\n };\n responses: {\n /** @description Serie updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Serie\"];\n /** @example Serie updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/shifts\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all shifts\n * @description Retrieve a list of all institution shifts (manhã, tarde, noite)\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of shifts */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Shift\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new shift\n * @description Create a new institution shift\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateShiftDto\"];\n };\n };\n responses: {\n /** @description Shift created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Shift\"];\n /** @example Shift created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/shifts/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get shift by ID\n * @description Retrieve detailed information about a specific shift\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Shift information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Shift\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete shift\n * @description Remove a shift from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Shift deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Shift deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update shift\n * @description Update shift information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateShiftDto\"];\n };\n };\n responses: {\n /** @description Shift updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Shift\"];\n /** @example Shift updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/superset/dashboard/{dash_id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Get Superset dashboard guest token\n * @description Generate a guest token to embed a Superset dashboard with optional filters\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description The Superset dashboard ID */\n dash_id: string;\n };\n cookie?: never;\n };\n requestBody?: {\n content: {\n \"application/json\": {\n /**\n * @description Optional filters to apply to the dashboard (key-value pairs)\n * @example {\n * \"institution_id\": \"123\",\n * \"course_id\": \"456\"\n * }\n */\n filters?: {\n [key: string]: string;\n };\n };\n };\n };\n responses: {\n /** @description Dashboard token generated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: {\n /** @description Guest token for embedding the dashboard */\n token?: string;\n /** @description The dashboard ID */\n dashboardId?: string;\n };\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n /** @description Forbidden - Insufficient permissions */\n 403: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Dashboard not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/me\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get current authenticated user\n * @description Returns the profile information of the currently authenticated user including:\n * - User groups (userGroups)\n * - User guardians (userGuardians)\n * - Certificates (certificates)\n * - Institution registrations with detailed classroom information (institutionRegistrations)\n * - Institution data\n * - Classroom assignment (institutionClassroom)\n * - Classroom details (name, shift, serie)\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Current user information with all related entities */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all users\n * @description Retrieve a paginated list of users with optional search filters.\n * Each user includes detailed information about:\n * - User groups (userGroups)\n * - User guardians (userGuardians)\n * - Institution registrations (institutionRegistrations) with:\n * - Institution details\n * - Classroom assignment via institutionClassroom\n * - Complete classroom information (name, shift, serie)\n * - Certificate count (certificatesCount)\n */\n get: {\n parameters: {\n query?: {\n /** @description Filter users by email */\n email?: string;\n /** @description Filter users by document number */\n document?: number;\n /** @description Filter only users that are students */\n only_students?: boolean;\n /** @description Filter users by institution ID (only returns users registered in that institution) */\n institution_id?: string;\n /** @description Search users by name or email */\n search?: string;\n /** @description Page number */\n page?: components[\"parameters\"][\"page\"];\n /** @description Items per page */\n limit?: components[\"parameters\"][\"limit\"];\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of users with detailed institution and classroom information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"UserListResponse\"];\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new user\n * @description Creates a new user following this flow:\n * 1. Creates the user in Keycloak with username, email, password, and profile information\n * 2. Retrieves the generated Keycloak user ID\n * 3. Creates the user in MongoDB using the Keycloak ID as the primary key\n *\n * Note: The user ID is automatically generated by Keycloak and should NOT be provided in the request.\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** @example John */\n firstName: string;\n /** @example Doe */\n lastName: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email: string;\n /**\n * @description Password for the user's Keycloak account\n * @example SecurePassword123!\n */\n password: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 12345678901 */\n document?: number;\n /**\n * @example male\n * @enum {string}\n */\n gender?: \"male\" | \"female\" | \"other\";\n /**\n * Format: date-time\n * @example 1990-01-15T00:00:00.000Z\n */\n birthdate?: string;\n };\n };\n };\n responses: {\n /** @description User created successfully in both Keycloak and MongoDB */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n /** @description User already exists (either in Keycloak or MongoDB) */\n 409: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get user by ID\n * @description Retrieve detailed information about a specific user including related data:\n * - User groups (userGroups) with group details\n * - User guardians (userGuardians)\n * - Certificates (certificates)\n * - Institution registrations (institutionRegistrations) with:\n * - Institution information (id, name, code, etc.)\n * - Classroom assignment (institutionClassroom)\n * - Complete classroom details including:\n * - Classroom name\n * - Shift (manhã, tarde, noite)\n * - Serie (grade level)\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User information with all related entities including classroom details */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete user\n * @description Remove a user from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example User deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update user\n * @description Update user information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateUserDto\"];\n };\n };\n responses: {\n /** @description User updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n /** @example User updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/users/{id}/groups\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get user's groups\n * @description Retrieve all groups that a user belongs to\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of user's groups */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/{id}/certificates\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get user's certificates\n * @description Retrieve all certificates earned by a user\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of user's certificates */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/{id}/institutions\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get user's institutions\n * @description Retrieve all institutions where the user is registered\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of user's institutions */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/{id}/sync\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Sync user with Keycloak\n * @description Synchronize user data with Keycloak identity provider\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User synchronized successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n /** @example User synchronized with Keycloak successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n}\nexport type webhooks = Record<string, never>;\nexport interface components {\n schemas: {\n Error: {\n /** @example error */\n status?: string;\n /** @example Error message */\n message?: string;\n /** @example Detailed error information */\n errors?: string;\n };\n Success: {\n /** @example success */\n status?: string;\n data?: Record<string, never>;\n message?: string;\n };\n PaginationMeta: {\n /** @example 100 */\n total?: number;\n /** @example 1 */\n page?: number;\n /** @example 10 */\n limit?: number;\n /** @example 10 */\n totalPages?: number;\n };\n User: {\n /**\n * Format: uuid\n * @description Keycloak User ID\n */\n id?: string;\n /** @example John */\n firstName?: string;\n /** @example Doe */\n lastName?: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string | null;\n /** @example 12345678901 */\n document?: number | null;\n /** @enum {string|null} */\n gender?: \"male\" | \"female\" | \"other\" | null;\n /** Format: date-time */\n birthdate?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /** @description User's group associations */\n userGroups?: components[\"schemas\"][\"UserGroup\"][];\n /** @description User's guardian associations */\n userGuardians?: components[\"schemas\"][\"UserGuardian\"][];\n /** @description User's certificates */\n certificates?: components[\"schemas\"][\"Certificate\"][];\n /** @description User's institution registrations */\n institutionRegistrations?: components[\"schemas\"][\"InstitutionRegistration\"][];\n };\n UpdateUserDto: {\n /** @example John */\n firstName?: string;\n /** @example Doe */\n lastName?: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 12345678901 */\n document?: number;\n /**\n * @example male\n * @enum {string}\n */\n gender?: \"male\" | \"female\" | \"other\";\n /**\n * Format: date-time\n * @example 1990-01-01T00:00:00Z\n */\n birthdate?: string;\n };\n UserListResponse: {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"][];\n meta?: components[\"schemas\"][\"PaginationMeta\"];\n };\n Group: {\n /**\n * Format: uuid\n * @description Keycloak Group ID\n */\n id?: string;\n /** @example students */\n name?: string;\n /**\n * @description If true, group is automatically associated when creating institutions\n * @example false\n */\n isDefault?: boolean;\n /**\n * @description Type of the group\n * @example student\n * @enum {string}\n */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n CreateGroupDto: {\n /** @example students */\n name: string;\n /**\n * @description If true, group is automatically associated when creating institutions\n * @default false\n */\n isDefault: boolean;\n /**\n * @description Type of the group\n * @default other\n * @enum {string}\n */\n type: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n };\n UpdateGroupDto: {\n /** @example students */\n name?: string;\n /** @description If true, group is automatically associated when creating institutions */\n isDefault?: boolean;\n /**\n * @description Type of the group\n * @enum {string}\n */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n };\n AssignUserToGroupDto: {\n /** Format: uuid */\n userId: string;\n /** Format: uuid */\n groupId: string;\n /** Format: uuid */\n assignedBy?: string;\n };\n UserGroup: {\n /** Format: uuid */\n id?: string;\n /** Format: uuid */\n userId?: string;\n /** Format: uuid */\n groupId?: string;\n /** Format: date-time */\n assignedAt?: string;\n /** Format: uuid */\n assignedBy?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n group?: components[\"schemas\"][\"Group\"];\n };\n UserGuardian: {\n /** Format: uuid */\n id?: string;\n /** Format: uuid */\n userId?: string;\n /** Format: uuid */\n guardianId?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n guardian?: components[\"schemas\"][\"Guardian\"];\n };\n /** @description User with institution registration details (returned by GET /institutions/{institutionId}/users) */\n InstitutionUser: {\n /**\n * Format: uuid\n * @description Keycloak User ID\n */\n id?: string;\n /** @example John */\n firstName?: string;\n /** @example Doe */\n lastName?: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string | null;\n /** @example 12345678901 */\n document?: string | null;\n /** @enum {string|null} */\n gender?: \"male\" | \"female\" | \"other\" | null;\n /**\n * @description Indicates if the user is active\n * @example true\n */\n isActive?: boolean;\n /** Format: date-time */\n birthdate?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /**\n * @description Number of certificates the user has\n * @example 5\n */\n certificatesCount?: number;\n /** @description User's guardian associations */\n userGuardians?: {\n /** Format: uuid */\n id?: string;\n guardian?: {\n /** Format: uuid */\n id?: string;\n /** @example Maria Silva */\n name?: string;\n /**\n * Format: email\n * @example maria@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string | null;\n };\n }[];\n /** @description User's registration info in the institution */\n institutionRegistration?: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Indicates if the registration is active\n * @example true\n */\n isActive?: boolean;\n /** @description Classroom assignment details */\n institutionClassroom?: {\n /** Format: uuid */\n id?: string;\n classroom?: {\n /** Format: uuid */\n id?: string;\n /** @example 9º Ano A */\n name?: string;\n /** @description Grade level information */\n serie?: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Grade level value (1-12)\n * @example 9\n */\n value?: number;\n } | null;\n /** @description Shift information (manhã, tarde, noite) */\n shift?: {\n /** Format: uuid */\n id?: string;\n /**\n * @example manhã\n * @enum {string}\n */\n name?: \"manhã\" | \"tarde\" | \"noite\";\n } | null;\n } | null;\n } | null;\n };\n };\n InstitutionUserListResponse: {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionUser\"][];\n meta?: components[\"schemas\"][\"PaginationMeta\"];\n };\n InstitutionRegistration: {\n /** Format: uuid */\n id?: string;\n /** Format: uuid */\n userId?: string;\n /** Format: uuid */\n institutionId?: string;\n /**\n * Format: uuid\n * @description ID of the institution classroom assignment\n */\n institutionClassroomId?: string | null;\n /**\n * @description Indicates if the user is active in the institution\n * @example true\n */\n isActive?: boolean;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /** @description Institution details */\n institution?: components[\"schemas\"][\"Institution\"];\n /** @description Classroom assignment with complete details (classroom, shift, serie) */\n institutionClassroom?: components[\"schemas\"][\"InstitutionClassroom\"];\n };\n InstitutionClassroom: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Indicates if the classroom is active\n * @example true\n */\n isActive?: boolean;\n /** Format: uuid */\n institutionId?: string;\n /** Format: uuid */\n classroomId?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /** @description Complete classroom information including shift and serie */\n classroom?: components[\"schemas\"][\"Classroom\"];\n /**\n * @description Number of users registered in this classroom (only returned when includeUserCount=true)\n * @example 25\n */\n userCount?: number | null;\n };\n Role: {\n /**\n * Format: uuid\n * @description Keycloak Role ID\n */\n id?: string;\n /** @example admin */\n name?: string;\n /**\n * @description Role description\n * @example Administrator role with full permissions\n */\n description?: string | null;\n /**\n * Format: uuid\n * @description Application ID if this is a client role\n */\n applicationId?: string | null;\n /** @description Application details if this is a client role */\n application?: components[\"schemas\"][\"Application\"];\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n CreateRoleDto: {\n /** @example admin */\n name: string;\n /**\n * @description Role description\n * @example Administrator role with full permissions\n */\n description?: string;\n /**\n * Format: uuid\n * @description Application ID to create this role as a client role (optional - if not provided, creates a realm role)\n * @example 123e4567-e89b-12d3-a456-426614174000\n */\n applicationId?: string;\n };\n UpdateRoleDto: {\n /** @example admin */\n name?: string;\n /**\n * @description Role description\n * @example Administrator role with full permissions\n */\n description?: string;\n };\n Institution: {\n /** Format: uuid */\n id?: string;\n /** @example Academe Institution */\n name?: string;\n /** @example SCH001 */\n code?: string;\n /** @example 12.345.678/0001-90 */\n document?: string;\n /** Format: email */\n email?: string;\n phone?: string | null;\n /** @example 500 */\n maxStudents?: number;\n /** @example true */\n isActive?: boolean;\n /** Format: uri */\n logoUrl?: string | null;\n /** Format: uri */\n capaUrl?: string | null;\n /** Format: uuid */\n addressId?: string | null;\n /** Format: uuid */\n institutionRewardId?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Organization: {\n /** Format: uuid */\n id?: string;\n /** @example Municipal Education Department */\n name?: string;\n /** Format: uuid */\n parentId?: string | null;\n /**\n * @description Organization type (municipal, estadual, federal, privada)\n * @example municipal\n */\n type?: string;\n /** @example true */\n isActive?: boolean;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n parent?: components[\"schemas\"][\"Organization\"];\n children?: components[\"schemas\"][\"Organization\"][];\n };\n CreateOrganizationDto: {\n /** @example Municipal Education Department */\n name: string;\n /**\n * Format: uuid\n * @description Parent organization ID (optional)\n */\n parentId?: string;\n /**\n * @description Organization type (municipal, estadual, federal, privada)\n * @example municipal\n */\n type: string;\n /**\n * @default true\n * @example true\n */\n isActive: boolean;\n };\n UpdateOrganizationDto: {\n /** @example Municipal Education Department */\n name?: string;\n /**\n * Format: uuid\n * @description Parent organization ID\n */\n parentId?: string;\n /**\n * @description Organization type (municipal, estadual, federal, privada)\n * @example municipal\n */\n type?: string;\n /** @example true */\n isActive?: boolean;\n };\n Course: {\n /** Format: uuid */\n id?: string;\n /** @example Introduction to Programming */\n description?: string;\n /** Format: uuid */\n categoryId?: string;\n /** @example 40 */\n duration?: number;\n /**\n * @example hours\n * @enum {string}\n */\n durationType?: \"hours\" | \"days\" | \"weeks\" | \"months\";\n externalId?: string | null;\n quizId?: string | null;\n /** @example true */\n isActive?: boolean;\n /** @enum {string|null} */\n level?: \"beginner\" | \"intermediate\" | \"advanced\" | \"expert\" | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Certificate: {\n /** Format: uuid */\n id?: string;\n /** Format: uuid */\n userId?: string;\n /** Format: uuid */\n courseId?: string | null;\n /** Format: uuid */\n courseModuleId?: string | null;\n quizId?: string | null;\n quizTitle?: string | null;\n quizCategory?: string | null;\n attemptId?: string | null;\n attemptScore?: number | null;\n attemptPassed?: boolean | null;\n attemptTimeTakenInMinutes?: number | null;\n /** Format: date-time */\n attemptCompletedAt?: string | null;\n certificateId?: string | null;\n certificateNumber?: string | null;\n /** Format: date-time */\n certificateIssuedAt?: string | null;\n /** Format: uri */\n certificateDownloadUrl?: string | null;\n /** Format: date-time */\n dispatchedAt?: string | null;\n /** Format: date-time */\n insertedAt?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Guardian: {\n /** Format: uuid */\n id?: string;\n /** Format: email */\n email?: string;\n phone?: string | null;\n name?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Address: {\n /** Format: uuid */\n id?: string;\n address?: string;\n number?: number | null;\n zip?: number | null;\n neighborhood?: string | null;\n city?: string;\n state?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Category: {\n /** Format: uuid */\n id?: string;\n /** @example Essential Skills */\n name?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Classroom: {\n /** Format: uuid */\n id?: string;\n /** @example 9º Ano A */\n name?: string;\n /** Format: uuid */\n shiftId?: string;\n /** Format: uuid */\n serieId?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /** @description Shift information (manhã, tarde, noite) */\n shift?: components[\"schemas\"][\"Shift\"];\n /** @description Serie/grade level information */\n serie?: components[\"schemas\"][\"Serie\"];\n };\n Serie: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Grade level value (1-12)\n * @example 9\n */\n value?: number;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Shift: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Shift name in Portuguese\n * @example manhã\n * @enum {string}\n */\n name?: \"manhã\" | \"tarde\" | \"noite\";\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Application: {\n /**\n * Format: uuid\n * @description Keycloak Client ID\n */\n id: string;\n /** @description Keycloak Client Code */\n code: string;\n /** @description Keycloak Client Name */\n name: string;\n /** @description Application description */\n description?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n CreateApplicationDto: {\n /** @description Unique application code */\n code: string;\n /** @description Application name */\n name: string;\n /** @description Application description */\n description?: string;\n };\n UpdateApplicationDto: {\n /** @description Application name */\n name?: string;\n /** @description Application description */\n description?: string;\n };\n AuthenticatedUser: {\n /** @description Keycloak user ID */\n id?: string;\n /** @description User email address */\n email?: string;\n /** @description User first name */\n firstName?: string;\n /** @description User last name */\n lastName?: string;\n /** @description Username */\n username?: string;\n /** @description Email verification status */\n emailVerified?: boolean;\n /** @description User roles */\n roles?: string[];\n /** @description User groups */\n groups?: string[];\n };\n AuthTokenResponse: {\n /** @example success */\n status?: string;\n data?: {\n /** @description JWT token for TheMembers authentication */\n token?: string;\n user?: {\n email?: string;\n name?: string;\n sub?: string;\n };\n };\n };\n CreateInstitutionClassroomDto: {\n /**\n * Format: uuid\n * @description Classroom ID to associate with the institution\n */\n classroomId: string;\n /**\n * @description Whether the classroom is active in the institution\n * @default true\n */\n isActive: boolean;\n };\n UpdateInstitutionClassroomDto: {\n /** @description Whether the classroom is active in the institution */\n isActive?: boolean;\n };\n InstitutionGroup: {\n /**\n * Format: uuid\n * @description Unique identifier\n */\n id?: string;\n /**\n * Format: uuid\n * @description Institution ID\n */\n institutionId?: string;\n /**\n * Format: uuid\n * @description Group ID\n */\n groupId?: string;\n /** @description Available quantity for this group in the institution */\n availableQuantity?: number;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n group?: components[\"schemas\"][\"Group\"];\n };\n CreateInstitutionGroupDto: {\n /**\n * Format: uuid\n * @description Group ID to associate with the institution\n */\n groupId: string;\n /**\n * @description Available quantity for this group\n * @default 0\n */\n availableQuantity: number;\n };\n UpdateInstitutionGroupDto: {\n /** @description New available quantity for this group */\n availableQuantity: number;\n };\n CreateInstitutionRegistrationDto: {\n /**\n * Format: uuid\n * @description User ID to register in the institution\n */\n userId: string;\n /**\n * Format: uuid\n * @description Optional classroom ID to assign the user to\n */\n institutionClassroomId?: string | null;\n /**\n * @description Whether the registration is active\n * @default true\n */\n isActive: boolean;\n };\n UpdateInstitutionRegistrationDto: {\n /**\n * Format: uuid\n * @description Classroom ID to assign the user to (null to remove)\n */\n institutionClassroomId?: string | null;\n /** @description Whether the registration is active */\n isActive?: boolean;\n };\n AssignClassroomDto: {\n /**\n * Format: uuid\n * @description Classroom ID to assign the user to (null to remove assignment)\n */\n institutionClassroomId?: string | null;\n };\n StudentWithClass: {\n /** Format: uuid */\n _id?: string;\n name?: string;\n /** Format: email */\n email?: string;\n document?: string;\n /** Format: uuid */\n classId?: string;\n className?: string;\n };\n DashboardResponse: {\n totalAlunos?: number;\n listaAlunos?: components[\"schemas\"][\"StudentWithClass\"][];\n /** Format: float */\n taxaConclusao?: number;\n /** Format: float */\n taxaConclusaoMesAnterior?: number;\n /** Format: float */\n taxaConclusaoTrend?: number;\n /** Format: float */\n mediaEngajamento?: number;\n /** Format: float */\n mediaEngajamentoMesAnterior?: number;\n /** Format: float */\n mediaEngajamentoTrend?: number;\n aulasAssistidas?: number;\n aulasAssitidasMesAnterior?: number;\n /** Format: float */\n aulasAssitidasTrend?: number;\n };\n AreaData: {\n area?: string;\n /** Format: float */\n percentage?: number;\n count?: number;\n total?: number;\n };\n MonthlyLogin: {\n month?: string;\n count?: number;\n };\n AdhesionRateResponse: {\n monthlyLogins?: components[\"schemas\"][\"MonthlyLogin\"][];\n totalLogins?: number;\n period?: string;\n };\n RecentActivity: {\n studentName?: string;\n courseName?: string;\n /** @enum {string} */\n action?: \"iniciou_curso\" | \"emitiu_certificado\";\n activityText?: string;\n timestamp?: string;\n /** @enum {string} */\n activityType?: \"course_start\" | \"certificate\";\n };\n RecentActivitiesResponse: {\n activities?: components[\"schemas\"][\"RecentActivity\"][];\n totalActivities?: number;\n };\n TopStudent: {\n /** Format: uuid */\n studentId?: string;\n studentName?: string;\n /** Format: email */\n studentEmail?: string;\n rank?: number;\n /** Format: float */\n averageGrade?: number;\n /** Format: float */\n engagementRate?: number;\n /** Format: float */\n completionRate?: number;\n profileUrl?: string;\n };\n TopStudentsResponse: {\n students?: components[\"schemas\"][\"TopStudent\"][];\n /** @enum {string} */\n filterType?: \"nota\" | \"engajamento\" | \"conclusao\";\n totalStudents?: number;\n year?: number;\n };\n CreateUserDto: {\n /**\n * Format: uuid\n * @description Keycloak User ID\n */\n id: string;\n /** @example John */\n firstName: string;\n /** @example Doe */\n lastName: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 12345678901 */\n document?: number;\n /**\n * @example male\n * @enum {string}\n */\n gender?: \"male\" | \"female\" | \"other\";\n /**\n * Format: date-time\n * @example 1990-01-01T00:00:00Z\n */\n birthdate?: string;\n };\n UserResponse: components[\"schemas\"][\"User\"];\n CreateInstitutionDto: {\n /** @example Academe Institution */\n name: string;\n /** @example SCH001 */\n code: string;\n /** @example 12.345.678/0001-90 */\n document: string;\n /**\n * Format: email\n * @example institution@academe.com.br\n */\n email: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 500 */\n maxStudents: number;\n /**\n * @default true\n * @example true\n */\n isActive: boolean;\n /**\n * Format: uri\n * @example https://example.com/logo.png\n */\n logoUrl?: string;\n /**\n * Format: uri\n * @example https://example.com/capa.png\n */\n capaUrl?: string;\n /** Format: uuid */\n addressId?: string;\n /** Format: uuid */\n institutionRewardId?: string;\n };\n UpdateInstitutionDto: {\n /** @example Academe Institution */\n name?: string;\n /** @example SCH001 */\n code?: string;\n /** @example 12.345.678/0001-90 */\n document?: string;\n /**\n * Format: email\n * @example institution@academe.com.br\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 500 */\n maxStudents?: number;\n /** @example true */\n isActive?: boolean;\n /**\n * Format: uri\n * @example https://example.com/logo.png\n */\n logoUrl?: string;\n /**\n * Format: uri\n * @example https://example.com/capa.png\n */\n capaUrl?: string;\n /** Format: uuid */\n addressId?: string;\n /** Format: uuid */\n institutionRewardId?: string;\n };\n CreateCourseDto: {\n /** @example Introduction to Programming */\n description: string;\n /** Format: uuid */\n categoryId: string;\n /** @example 40 */\n duration: number;\n /**\n * @example hours\n * @enum {string}\n */\n durationType: \"hours\" | \"days\" | \"weeks\" | \"months\";\n externalId?: string;\n quizId?: string;\n /**\n * @default true\n * @example true\n */\n isActive: boolean;\n /**\n * @example intermediate\n * @enum {string}\n */\n level?: \"beginner\" | \"intermediate\" | \"advanced\" | \"expert\";\n };\n UpdateCourseDto: {\n /** @example Introduction to Programming */\n description?: string;\n /** Format: uuid */\n categoryId?: string;\n /** @example 40 */\n duration?: number;\n /**\n * @example hours\n * @enum {string}\n */\n durationType?: \"hours\" | \"days\" | \"weeks\" | \"months\";\n externalId?: string;\n quizId?: string;\n /** @example true */\n isActive?: boolean;\n /**\n * @example intermediate\n * @enum {string}\n */\n level?: \"beginner\" | \"intermediate\" | \"advanced\" | \"expert\";\n };\n CreateCertificateDto: {\n /** Format: uuid */\n userId: string;\n /** Format: uuid */\n courseId?: string;\n /** Format: uuid */\n courseModuleId?: string;\n quizId?: string;\n quizTitle?: string;\n quizCategory?: string;\n attemptId?: string;\n attemptScore?: number;\n attemptPassed?: boolean;\n attemptTimeTakenInMinutes?: number;\n /** Format: date-time */\n attemptCompletedAt?: string;\n certificateId?: string;\n certificateNumber?: string;\n /** Format: date-time */\n certificateIssuedAt?: string;\n /** Format: uri */\n certificateDownloadUrl?: string;\n };\n UpdateCertificateDto: {\n quizTitle?: string;\n quizCategory?: string;\n attemptScore?: number;\n attemptPassed?: boolean;\n attemptTimeTakenInMinutes?: number;\n /** Format: date-time */\n attemptCompletedAt?: string;\n certificateNumber?: string;\n /** Format: date-time */\n certificateIssuedAt?: string;\n /** Format: uri */\n certificateDownloadUrl?: string;\n /** Format: date-time */\n dispatchedAt?: string;\n };\n CreateGuardianDto: {\n /**\n * Format: email\n * @example guardian@example.com\n */\n email: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example Jane Doe */\n name: string;\n };\n UpdateGuardianDto: {\n /**\n * Format: email\n * @example guardian@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example Jane Doe */\n name?: string;\n };\n CreateCategoryDto: {\n /** @example Essential Skills */\n name: string;\n };\n UpdateCategoryDto: {\n /** @example Essential Skills */\n name?: string;\n };\n CreateClassroomDto: {\n /** @example Room 101 */\n name: string;\n /** Format: uuid */\n shiftId: string;\n /** Format: uuid */\n serieId: string;\n };\n UpdateClassroomDto: {\n /** @example Room 101 */\n name?: string;\n /** Format: uuid */\n shiftId?: string;\n /** Format: uuid */\n serieId?: string;\n };\n CreateSerieDto: {\n /**\n * @description Grade/year level (e.g., 1 for 1st grade, 2 for 2nd grade)\n * @example 1\n */\n value: number;\n };\n UpdateSerieDto: {\n /**\n * @description Grade/year level (e.g., 1 for 1st grade, 2 for 2nd grade)\n * @example 1\n */\n value?: number;\n };\n CreateShiftDto: {\n /**\n * @example manhã\n * @enum {string}\n */\n name: \"manhã\" | \"tarde\" | \"noite\";\n };\n UpdateShiftDto: {\n /**\n * @example manhã\n * @enum {string}\n */\n name?: \"manhã\" | \"tarde\" | \"noite\";\n };\n AssignGuardianToUserDto: {\n /** Format: uuid */\n userId: string;\n /** Format: uuid */\n guardianId: string;\n };\n RegisterUserToInstitutionDto: {\n /** Format: uuid */\n userId: string;\n /** Format: uuid */\n institutionId: string;\n };\n };\n responses: {\n /** @description Resource not found */\n NotFound: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Authentication required */\n Unauthorized: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Insufficient permissions */\n Forbidden: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Invalid request */\n BadRequest: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Internal server error */\n ServerError: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Resource already exists or conflict */\n Conflict: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n };\n parameters: {\n /** @description Resource ID */\n id: string;\n /** @description Page number */\n page: number;\n /** @description Items per page */\n limit: number;\n /** @description Search term */\n search: string;\n };\n requestBodies: never;\n headers: never;\n pathItems: never;\n}\nexport type $defs = Record<string, never>;\nexport type operations = Record<string, never>;\n"],"names":["_jsx","__assign","this","createContext","React","useContext","GLOBAL_ROLES","useMemo","useState","useEffect","useCallback","forwardRef","createElement","Loader2Icon","_jsxs","BACKOFFICE_ROLES","DASHBOARD_ROLES","APPLICATIONS_ROLES"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAQ,SAAS,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;;ACSxW,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CACpC,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;IAC3E,MAAM,WAAW,GAAG,6GAA6G;AAEjI,IAAA,MAAM,cAAc,GAAG;AACrB,QAAA,OAAO,EAAE,8DAA8D;AACvE,QAAA,SAAS,EAAE,8DAA8D;AACzE,QAAA,OAAO,EAAE,4FAA4F;KACtG;AAED,IAAA,MAAM,WAAW,GAAG;AAClB,QAAA,EAAE,EAAE,qBAAqB;AACzB,QAAA,EAAE,EAAE,qBAAqB;AACzB,QAAA,EAAE,EAAE,mBAAmB;KACxB;AAED,IAAA,QACEA,cAAA,CAAA,QAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,IAAI,CACb,WAAW,EACX,cAAc,CAAC,OAAO,CAAC,EACvB,WAAW,CAAC,IAAI,CAAC,EACjB,SAAS,CACV,EAAA,GACG,KAAK,EAAA,QAAA,EAER,QAAQ,EAAA,CACF;AAEb,CAAC;AAGH,MAAM,CAAC,WAAW,GAAG,QAAQ;;AC1C7B,IAAIC,UAAQ,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,QAAQ,KAAK,YAAY;AACtD,IAAID,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE;AAC5C,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC5B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3E,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAQ;AACR,QAAQ,OAAO,CAAC;AAChB,IAAI,CAAC;AACL,IAAI,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;AAC1C,CAAC;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,cAAc,EAAE;AAClD,IAAI,OAAOE,mBAAa,CAACF,UAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;AAC1E;;;;;;;;ACnBA,IAAI,cAAc,GAAG,OAAO,OAAO,KAAK,WAAW;AACnD,IAAI,MAAM,GAAG,OAAO,GAAG,KAAK,UAAU;AACtC,IAAI,MAAM,GAAG,OAAO,GAAG,KAAK,UAAU;AACtC,IAAI,cAAc,GAAG,OAAO,WAAW,KAAK,UAAU,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM;;AAE9E;;AAEA,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;AACrB;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI;;AAE1B,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,QAAQ,IAAI,OAAO,CAAC,IAAI,QAAQ,EAAE;AAC9D,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,EAAE,OAAO,KAAK;;AAErD,IAAI,IAAI,MAAM,EAAE,CAAC,EAAE,IAAI;AACvB,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAC1B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM;AACvB,MAAM,IAAI,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK;AAC1C,MAAM,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC;AAChC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;AAC5C,MAAM,OAAO,IAAI;AACjB,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,MAAM,KAAK,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE;AAC5D,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK;AACzC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE;AACtB,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI;AAClC,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;AAC5C,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE;AACtB,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI;AAClC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;AAC/D,MAAM,OAAO,IAAI;AACjB,IAAA;;AAEA,IAAI,IAAI,MAAM,KAAK,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE;AAC5D,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK;AACzC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE;AACtB,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI;AAClC,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;AAC5C,MAAM,OAAO,IAAI;AACjB,IAAA;AACA;;AAEA,IAAI,IAAI,cAAc,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AAC1E,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM;AACvB,MAAM,IAAI,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK;AAC1C,MAAM,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC;AAChC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;AACvC,MAAM,OAAO,IAAI;AACjB,IAAA;;AAEA,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;AACrF;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE;AACxJ,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE;AAC9J;;AAEA,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM;AACxB,IAAI,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK;;AAEtD,IAAI,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC;AAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;AACzE;;AAEA;AACA;AACA,IAAI,IAAI,cAAc,IAAI,CAAC,YAAY,OAAO,EAAE,OAAO,KAAK;;AAE5D;AACA,IAAI,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG;AACjC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,QAAQ,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ;AACR,MAAA;;AAEA;AACA,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;AACtD,IAAA;AACA;;AAEA;AACA,IAAI,OAAO,IAAI;AACf,EAAA;;AAEA,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B;AACA;;AAEA,IAAA,gBAAc,GAAG,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE;AACxC,EAAE,IAAI;AACN,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,EAAA,CAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG;AAC3D;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC;AACpE,MAAM,OAAO,KAAK;AAClB,IAAA;AACA;AACA,IAAI,MAAM,KAAK;AACf,EAAA;AACA,CAAC;;;;AC1ID,IAAI,SAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;AACzD,IAAI,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AACxC,QAAQ,aAAa,GAAG,MAAM,CAAC,cAAc;AAC7C,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxF,YAAY,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,QAAQ,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;AAClC,IAAI,CAAC;AACL,IAAI,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;AAC3B,QAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,QAAQ,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;AAC9C,QAAQ,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;AAC5F,IAAI,CAAC;AACL,CAAC,GAAG;AACJ,IAAID,UAAQ,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,QAAQ,KAAK,YAAY;AACtD,IAAID,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE;AAC5C,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC5B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3E,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAQ;AACR,QAAQ,OAAO,CAAC;AAChB,IAAI,CAAC;AACL,IAAI,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;AAC1C,CAAC;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,WAAW,EAAE;AAChD,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,MAAM,EAAE,WAAW;AAC3B,KAAK;AACL,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,WAAW,EAAE,KAAK;AAC1B,QAAQ,eAAe,EAAE,KAAK;AAC9B,QAAQ,SAAS,EAAE,IAAI;AACvB,KAAK;AACL,IAAI,sBAAsB,UAAU,MAAM,EAAE;AAC5C,QAAQ,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;AAC3C,QAAQ,SAAS,gBAAgB,GAAG;AACpC,YAAY,IAAI,KAAK,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI;AAChF,YAAY,KAAK,CAAC,KAAK,GAAGA,UAAQ,CAAC,EAAE,EAAE,YAAY,CAAC;AACpD,YAAY,KAAK,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,UAAU,KAAK,EAAE;AACvE,gBAAgB,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO;AACjD;AACA,gBAAgB,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;AAChD,YAAY,CAAC,CAAC,CAAC,CAAC;AAChB,YAAY,KAAK,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,YAAY;AACtE,gBAAgB,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,EAAE,CAAC,UAAU,EAAE,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,cAAc,GAAG,EAAE,CAAC,cAAc;AAClJ,gBAAgB,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,EAAE,CAAC,WAAW,EAAE,iBAAiB,GAAG,EAAE,CAAC,eAAe,EAAE,WAAW,GAAG,EAAE,CAAC,SAAS;AAC1I;AACA,gBAAgB,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;AACzC;AACA,gBAAgB,IAAI,SAAS,GAAG,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK;AACnF;AACA,gBAAgB,IAAI,eAAe,GAAG,mBAAmB,CAAC,UAAU,CAAC;AACrE;AACA,gBAAgB,IAAI,CAAC,eAAe;AACpC,oBAAoB,eAAe,KAAK,iBAAiB;AACzD,oBAAoB,SAAS,KAAK,WAAW,EAAE;AAC/C,oBAAoB,KAAK,CAAC,QAAQ,CAAC;AACnC,wBAAwB,WAAW,EAAE,IAAI;AACzC,wBAAwB,eAAe,EAAE,eAAe;AACxD,wBAAwB,SAAS,EAAE,SAAS;AAC5C,qBAAqB,CAAC;AACtB,gBAAgB;AAChB;AACA,gBAAgB,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,UAAU,CAAC,YAAY,EAAE,KAAK,GAAG,UAAU,CAAC,KAAK;AAClH,gBAAgB,QAAQ;AACxB,oBAAoB,QAAQ,CAAC;AAC7B,wBAAwB,OAAO,EAAE,OAAO;AACxC,wBAAwB,YAAY,EAAE,YAAY;AAClD,wBAAwB,KAAK,EAAE,KAAK;AACpC,qBAAqB,CAAC;AACtB,YAAY,CAAC,CAAC,CAAC,CAAC;AAChB,YAAY,KAAK,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,YAAY;AACvE,gBAAgB,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,EAAE,CAAC,gBAAgB,EAAE,UAAU,GAAG,EAAE,CAAC,UAAU,EAAE,OAAO,GAAG,EAAE,CAAC,OAAO;AAC9H;AACA,gBAAgB,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;AACzC,gBAAgB,IAAI,gBAAgB,KAAK,KAAK,EAAE;AAChD;AACA,oBAAoB,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7C,gBAAgB;AAChB,YAAY,CAAC,CAAC,CAAC,CAAC;AAChB,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;AACnE,YAAY,IAAI,CAAC,IAAI,EAAE;AACvB,QAAQ,CAAC;AACT,QAAQ,gBAAgB,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,EAAE,EAAE;AACtE,YAAY,IAAI,cAAc,GAAG,EAAE,CAAC,UAAU,EAAE,eAAe,GAAG,EAAE,CAAC,WAAW;AAChF,YAAY,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,EAAE,CAAC,WAAW,EAAE,UAAU,GAAG,EAAE,CAAC,UAAU;AACzF,YAAY,IAAI,UAAU,KAAK,cAAc;AAC7C,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE;AACxD;AACA,gBAAgB,cAAc,CAAC,OAAO,GAAG,SAAS;AAClD,gBAAgB,cAAc,CAAC,aAAa,GAAG,SAAS;AACxD,gBAAgB,cAAc,CAAC,WAAW,GAAG,SAAS;AACtD,gBAAgB,cAAc,CAAC,oBAAoB,GAAG,SAAS;AAC/D,gBAAgB,cAAc,CAAC,kBAAkB,GAAG,SAAS;AAC7D,gBAAgB,cAAc,CAAC,YAAY,GAAG,SAAS;AACvD,gBAAgB,cAAc,CAAC,cAAc,GAAG,SAAS;AACzD;AACA,gBAAgB,IAAI,CAAC,QAAQ,CAACA,UAAQ,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;AACzD;AACA,gBAAgB,IAAI,CAAC,IAAI,EAAE;AAC3B,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,gBAAgB,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACtD,YAAY,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,EAAE,CAAC,WAAW,EAAE,UAAU,GAAG,EAAE,CAAC,UAAU;AACzF;AACA,YAAY,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AAC5D,YAAY,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;AACxE,YAAY,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AAChE,YAAY,UAAU,CAAC,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;AACtF,YAAY,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;AAC9E,YAAY,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;AACtE,YAAY,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC;AAC3E,YAAY;AACZ,iBAAiB,IAAI,CAACA,UAAQ,CAACA,UAAQ,CAAC,EAAE,EAAE,kBAAkB,CAAC,EAAE,WAAW,CAAC;AAC7E,iBAAiB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACnD,QAAQ,CAAC;AACT,QAAQ,gBAAgB,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AACxD,YAAY,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,UAAU,GAAG,EAAE,CAAC,UAAU,EAAE,gBAAgB,GAAG,EAAE,CAAC,gBAAgB;AAC3H,YAAY,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,EAAE,CAAC,WAAW,EAAE,SAAS,GAAG,EAAE,CAAC,SAAS;AACvF,YAAY,IAAI,CAAC,CAAC,gBAAgB,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC,EAAE;AACnE,gBAAgB,OAAO,gBAAgB;AACvC,YAAY;AACZ,YAAY,QAAQG,gBAAK,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,CAAC;AACxI,QAAQ,CAAC;AACT,QAAQ,OAAO,gBAAgB;AAC/B,IAAI,CAAC,CAACA,gBAAK,CAAC,aAAa,CAAC;AAC1B;AACA,SAAS,mBAAmB,CAAC,UAAU,EAAE;AACzC,IAAI,OAAO,CAAC,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK;AACrD;;AC5IO,IAAI,uBAAuB,GAAG,iBAAiB,EAAE;AACX,uBAAuB,CAAC;;ACA9D,IAAI,qBAAqB,GAAG,kBAAkB,CAAC,uBAAuB,CAAC;;ACAvE,SAAS,WAAW,GAAG;AAC9B,IAAI,IAAI,GAAG,GAAGC,gBAAU,CAAC,uBAAuB,CAAC;AACjD,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,QAAQ,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC;AAC7F,IAAI;AACJ,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;AACzB,QAAQ,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC;AACpF,IAAI;AACJ,IAAI,IAAI,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,WAAW,GAAG,GAAG,CAAC,WAAW;AAClE,IAAI,OAAO;AACX,QAAQ,WAAW,EAAE,WAAW;AAChC,QAAQ,QAAQ,EAAE,UAAU;AAC5B,KAAK;AACL;;ACfA,IAAI,QAAQ,GAAG,CAACH,SAAI,IAAIA,SAAI,CAAC,QAAQ,KAAK,YAAY;AACtD,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE;AAC5C,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC5B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3E,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAQ;AACR,QAAQ,OAAO,CAAC;AAChB,IAAI,CAAC;AACL,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;AAC1C,CAAC;;ACVD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,EAAE,MAAM,EAAE;AAC3B,IAAI,IAAI,EAAE,IAAI,YAAY,QAAQ,CAAC,EAAE;AACrC,QAAQ,MAAM,IAAI,KAAK,CAAC,wDAAwD;AAChF,IAAI;;AAEJ,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACzD,QAAQ,MAAM,IAAI,KAAK,CAAC,iHAAiH,CAAC;AAC1I,IAAI;;AAEJ,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC1B,QAAQ,MAAM,kBAAkB,GAAG,cAAc,IAAI;AACrD,cAAc,CAAC,UAAU;AACzB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC;;AAE1C,QAAQ,KAAK,MAAM,QAAQ,IAAI,kBAAkB,EAAE;AACnD,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACnC,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,kDAAkD,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC3G,YAAY;AACZ,QAAQ;AACR,IAAI;;AAEJ,IAAI,IAAI,EAAE,GAAG,IAAI;AACjB,IAAI,IAAI,OAAO;AACf,IAAI,IAAI,YAAY,GAAG,EAAE;AACzB,IAAI,IAAI,eAAe;;AAEvB,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,YAAY,EAAE,EAAE;AACxB,QAAQ,QAAQ,EAAE;AAClB,KAAK;;AAEL,IAAI,EAAE,CAAC,aAAa,GAAG,KAAK;;AAE5B,IAAI,IAAI,QAAQ,GAAG,IAAI;AACvB,IAAI,IAAI,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;AAC5C,IAAI,IAAI,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;;AAE5C,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;AACrC,QAAQ,OAAO;AACf,YAAY,iJAAiJ;AAC7J,YAAY,kGAAkG;AAC9G,YAAY;AACZ,SAAS;AACT,IAAI;;AAEJ,IAAI,EAAE,CAAC,IAAI,GAAG,UAAU,WAAW,GAAG,EAAE,EAAE;AAC1C,QAAQ,IAAI,EAAE,CAAC,aAAa,EAAE;AAC9B,YAAY,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;AAClF,QAAQ;;AAER,QAAQ,EAAE,CAAC,aAAa,GAAG,IAAI;;AAE/B,QAAQ,EAAE,CAAC,aAAa,GAAG,KAAK;;AAEhC,QAAQ,eAAe,GAAG,qBAAqB,EAAE;AACjD,QAAQ,IAAI,QAAQ,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC;;AAE/D,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;AACxD,YAAY,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC;AACtD,QAAQ,CAAC,MAAM,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE;AAC5D,YAAY,OAAO,GAAG,WAAW,CAAC,OAAO;AACzC,QAAQ,CAAC,MAAM;AACf,YAAY,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE;AAClD,gBAAgB,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC;AAChD,YAAY,CAAC,MAAM;AACnB,gBAAgB,OAAO,GAAG,WAAW,EAAE;AACvC,YAAY;AACZ,QAAQ;;AAER,QAAQ,IAAI,OAAO,WAAW,CAAC,QAAQ,KAAK,WAAW,EAAE;AACzD,YAAY,QAAQ,GAAG,WAAW,CAAC,QAAQ;AAC3C,QAAQ;;AAER,QAAQ,IAAI,OAAO,WAAW,CAAC,gBAAgB,KAAK,WAAW,EAAE;AACjE,YAAY,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,gBAAgB;AAC7D,QAAQ;;AAER,QAAQ,IAAI,WAAW,CAAC,wBAAwB,EAAE;AAClD,YAAY,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,wBAAwB;AACvE,QAAQ;;AAER,QAAQ,IAAI,WAAW,CAAC,MAAM,KAAK,gBAAgB,EAAE;AACrD,YAAY,EAAE,CAAC,aAAa,GAAG,IAAI;AACnC,QAAQ;;AAER,QAAQ,IAAI,WAAW,CAAC,YAAY,EAAE;AACtC,YAAY,IAAI,WAAW,CAAC,YAAY,KAAK,OAAO,IAAI,WAAW,CAAC,YAAY,KAAK,UAAU,EAAE;AACjG,gBAAgB,EAAE,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY;AAC1D,YAAY,CAAC,MAAM;AACnB,gBAAgB,MAAM,gCAAgC;AACtD,YAAY;AACZ,QAAQ;;AAER,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE;AAC9B,YAAY,QAAQ,WAAW,CAAC,IAAI;AACpC,gBAAgB,KAAK,UAAU;AAC/B,oBAAoB,EAAE,CAAC,YAAY,GAAG,MAAM;AAC5C,oBAAoB;AACpB,gBAAgB,KAAK,UAAU;AAC/B,oBAAoB,EAAE,CAAC,YAAY,GAAG,gBAAgB;AACtD,oBAAoB;AACpB,gBAAgB,KAAK,QAAQ;AAC7B,oBAAoB,EAAE,CAAC,YAAY,GAAG,qBAAqB;AAC3D,oBAAoB;AACpB,gBAAgB;AAChB,oBAAoB,MAAM,wBAAwB;AAClD;AACA,YAAY,EAAE,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;AACtC,QAAQ;;AAER,QAAQ,IAAI,WAAW,CAAC,QAAQ,IAAI,IAAI,EAAE;AAC1C,YAAY,EAAE,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ;AAC9C,QAAQ;;AAER,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE;AACpC,YAAY,EAAE,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW;AACpD,QAAQ;;AAER,QAAQ,IAAI,WAAW,CAAC,yBAAyB,EAAE;AACnD,YAAY,EAAE,CAAC,yBAAyB,GAAG,WAAW,CAAC,yBAAyB;AAChF,QAAQ;;AAER,QAAQ,IAAI,OAAO,WAAW,CAAC,sBAAsB,KAAK,SAAS,EAAE;AACrE,YAAY,EAAE,CAAC,sBAAsB,GAAG,WAAW,CAAC,sBAAsB;AAC1E,QAAQ,CAAC,MAAM;AACf,YAAY,EAAE,CAAC,sBAAsB,GAAG,IAAI;AAC5C,QAAQ;;AAER,QAAQ,IAAI,OAAO,WAAW,CAAC,UAAU,KAAK,WAAW,EAAE;AAC3D,YAAY,IAAI,WAAW,CAAC,UAAU,KAAK,MAAM,IAAI,WAAW,CAAC,UAAU,KAAK,KAAK,EAAE;AACvF,gBAAgB,MAAM,IAAI,SAAS,CAAC,CAAC,gEAAgE,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACjI,YAAY;;AAEZ,YAAY,EAAE,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU;AAClD,QAAQ,CAAC,MAAM;AACf,YAAY,EAAE,CAAC,UAAU,GAAG,MAAM;AAClC,QAAQ;;AAER,QAAQ,IAAI,OAAO,WAAW,CAAC,aAAa,KAAK,SAAS,EAAE;AAC5D,YAAY,EAAE,CAAC,aAAa,GAAG,WAAW,CAAC,aAAa;AACxD,QAAQ,CAAC,MAAM;AACf,YAAY,EAAE,CAAC,aAAa,GAAG,KAAK;AACpC,QAAQ;;AAER,QAAQ,IAAI,WAAW,CAAC,YAAY,KAAK,MAAM,EAAE;AACjD,YAAY,EAAE,CAAC,YAAY,GAAG,MAAM;AACpC,QAAQ,CAAC,MAAM;AACf,YAAY,EAAE,CAAC,YAAY,GAAG,KAAK;AACnC,QAAQ;;AAER,QAAQ,IAAI,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,EAAE;AACnD,YAAY,EAAE,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK;AACxC,QAAQ;;AAER,QAAQ,IAAI,OAAO,WAAW,CAAC,SAAS,KAAK,QAAQ,EAAE;AACvD,YAAY,EAAE,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS;AAChD,QAAQ;;AAER,QAAQ,IAAI,OAAO,WAAW,CAAC,qBAAqB,KAAK,QAAQ,IAAI,WAAW,CAAC,qBAAqB,GAAG,CAAC,EAAE;AAC5G,YAAY,EAAE,CAAC,qBAAqB,GAAG,WAAW,CAAC,qBAAqB;AACxE,QAAQ,CAAC,MAAM;AACf,YAAY,EAAE,CAAC,qBAAqB,GAAG,KAAK;AAC5C,QAAQ;;AAER,QAAQ,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;AAC9B,YAAY,EAAE,CAAC,YAAY,GAAG,UAAU;AACxC,QAAQ;AACR,QAAQ,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;AAC9B,YAAY,EAAE,CAAC,YAAY,GAAG,MAAM;AACpC,YAAY,EAAE,CAAC,IAAI,GAAG,UAAU;AAChC,QAAQ;;AAER,QAAQ,IAAI,OAAO,GAAG,aAAa,EAAE;;AAErC,QAAQ,IAAI,WAAW,GAAG,aAAa,EAAE;AACzC,QAAQ,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW;AAC5C,YAAY,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC;AACtD,YAAY,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC;AAChD,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,EAAE;AACjC,YAAY,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AACnC,QAAQ,CAAC,CAAC;;AAEV,QAAQ,IAAI,aAAa,GAAG,UAAU,EAAE;;AAExC,QAAQ,SAAS,MAAM,GAAG;AAC1B,YAAY,IAAI,OAAO,GAAG,SAAS,MAAM,EAAE;AAC3C,gBAAgB,IAAI,CAAC,MAAM,EAAE;AAC7B,oBAAoB,OAAO,CAAC,MAAM,GAAG,MAAM;AAC3C,gBAAgB;;AAEhB,gBAAgB,IAAI,WAAW,CAAC,MAAM,EAAE;AACxC,oBAAoB,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;AACvD,gBAAgB;AAChB,gBAAgB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY;AACnD,oBAAoB,WAAW,CAAC,UAAU,EAAE;AAC5C,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE;AAC1C,oBAAoB,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC/C,gBAAgB,CAAC,CAAC;AAClB,YAAY;;AAEZ,YAAY,IAAI,gBAAgB,GAAG,iBAAiB;AACpD,gBAAgB,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC3D,gBAAgB,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAC;AAC9G,gBAAgB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC;AAC7C,gBAAgB,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,yEAAyE,CAAC;AACvH,gBAAgB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,2BAA2B,CAAC;AACvE,gBAAgB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AAC3C,gBAAgB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;;AAE/C,gBAAgB,IAAI,eAAe,GAAG,SAAS,KAAK,EAAE;AACtD,oBAAoB,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,EAAE;AACxG,wBAAwB;AACxB,oBAAoB;;AAEpB,oBAAoB,IAAI,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;AACzD,oBAAoB,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC;;AAEvD,oBAAoB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACnD,oBAAoB,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC;AAC1E,gBAAgB,CAAC;;AAEjB,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC;AACnE,YAAY,CAAC;;AAEb,YAAY,IAAI,OAAO,GAAG,EAAE;AAC5B,YAAY,QAAQ,WAAW,CAAC,MAAM;AACtC,gBAAgB,KAAK,WAAW;AAChC,oBAAoB,IAAI,WAAW,CAAC,MAAM,EAAE;AAC5C,wBAAwB,qBAAqB,EAAE,CAAC,IAAI,CAAC,WAAW;AAChE,4BAA4B,gBAAgB,EAAE,CAAC,IAAI,CAAC,UAAU,SAAS,EAAE;AACzE,gCAAgC,IAAI,CAAC,SAAS,EAAE;AAChD,oCAAoC,EAAE,CAAC,yBAAyB,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;AACtG,gCAAgC,CAAC,MAAM;AACvC,oCAAoC,WAAW,CAAC,UAAU,EAAE;AAC5D,gCAAgC;AAChC,4BAA4B,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE;AACtD,gCAAgC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC3D,4BAA4B,CAAC,CAAC;AAC9B,wBAAwB,CAAC,CAAC;AAC1B,oBAAoB,CAAC,MAAM;AAC3B,wBAAwB,EAAE,CAAC,yBAAyB,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;AAC1F,oBAAoB;AACpB,oBAAoB;AACpB,gBAAgB,KAAK,gBAAgB;AACrC,oBAAoB,OAAO,CAAC,IAAI,CAAC;AACjC,oBAAoB;AACpB,gBAAgB;AAChB,oBAAoB,MAAM,0BAA0B;AACpD;AACA,QAAQ;;AAER,QAAQ,SAAS,WAAW,GAAG;AAC/B,YAAY,IAAI,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;;AAE9D,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;AACxF,YAAY;;AAEZ,YAAY,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE;AAC5C,gBAAgB,OAAO,qBAAqB,EAAE,CAAC,IAAI,CAAC,WAAW;AAC/D,oBAAoB,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC1D,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE;AAC1C,oBAAoB,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC/C,gBAAgB,CAAC,CAAC;AAClB,YAAY;;AAEZ,YAAY,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,YAAY,EAAE;AAC/D,gBAAgB,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC;;AAE1F,gBAAgB,IAAI,WAAW,CAAC,MAAM,EAAE;AACxC,oBAAoB,qBAAqB,EAAE,CAAC,IAAI,CAAC,WAAW;AAC5D,wBAAwB,gBAAgB,EAAE,CAAC,IAAI,CAAC,UAAU,SAAS,EAAE;AACrE,4BAA4B,IAAI,SAAS,EAAE;AAC3C,gCAAgC,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,aAAa,EAAE;AACtE,gCAAgC,WAAW,CAAC,UAAU,EAAE;AACxD,gCAAgC,mBAAmB,EAAE;AACrD,4BAA4B,CAAC,MAAM;AACnC,gCAAgC,WAAW,CAAC,UAAU,EAAE;AACxD,4BAA4B;AAC5B,wBAAwB,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE;AAClD,4BAA4B,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;AACvD,wBAAwB,CAAC,CAAC;AAC1B,oBAAoB,CAAC,CAAC;AACtB,gBAAgB,CAAC,MAAM;AACvB,oBAAoB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW;AACvD,wBAAwB,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,aAAa,EAAE;AAC9D,wBAAwB,WAAW,CAAC,UAAU,EAAE;AAChD,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,EAAE;AAC7C,wBAAwB,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW,EAAE;AAC1D,wBAAwB,IAAI,WAAW,CAAC,MAAM,EAAE;AAChD,4BAA4B,MAAM,EAAE;AACpC,wBAAwB,CAAC,MAAM;AAC/B,4BAA4B,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;AACvD,wBAAwB;AACxB,oBAAoB,CAAC,CAAC;AACtB,gBAAgB;AAChB,YAAY,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE;AAC3C,gBAAgB,MAAM,EAAE;AACxB,YAAY,CAAC,MAAM;AACnB,gBAAgB,WAAW,CAAC,UAAU,EAAE;AACxC,YAAY;AACZ,QAAQ;;AAER,QAAQ,aAAa,CAAC,IAAI,CAAC,YAAY;AACvC,YAAY,uBAAuB;AACnC,iBAAiB,IAAI,CAAC,WAAW;AACjC,iBAAiB,KAAK,CAAC,UAAU,KAAK,EAAE;AACxC,oBAAoB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC3C,gBAAgB,CAAC,CAAC;AAClB,QAAQ,CAAC,CAAC;AACV,QAAQ,aAAa,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE;AAC7C,YAAY,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AACnC,QAAQ,CAAC,CAAC;;AAEV,QAAQ,OAAO,OAAO,CAAC,OAAO;AAC9B,IAAI;;AAEJ,IAAI,EAAE,CAAC,KAAK,GAAG,UAAU,OAAO,EAAE;AAClC,QAAQ,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;AACrC,IAAI;;AAEJ,IAAI,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACrC,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,WAAW,EAAE;AAC5F,YAAY,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;AAC/D,QAAQ;;AAER,QAAQ,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC1D,IAAI;;AAEJ,IAAI,SAAS,oBAAoB,CAAC,GAAG,EAAE;AACvC,QAAQ,OAAO,oBAAoB,CAAC,GAAG,EAAE,gEAAgE,CAAC;AAC1G,IAAI;;AAEJ,IAAI,SAAS,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC;AAChD,QAAQ,IAAI,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC;AAChD,QAAQ,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC;AAClC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACtC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC3E,QAAQ;AACR,QAAQ,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;AACrD,IAAI;;AAEJ,IAAI,eAAe,qBAAqB,CAAC,UAAU,EAAE,YAAY,EAAE;AACnE,QAAQ,IAAI,UAAU,KAAK,MAAM,EAAE;AACnC,YAAY,MAAM,IAAI,SAAS,CAAC,CAAC,yDAAyD,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;AAC3G,QAAQ;;AAER;AACA,QAAQ,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;AAC1E,QAAQ,MAAM,WAAW,GAAG,aAAa,CAAC,SAAS;AACnD,aAAa,OAAO,CAAC,KAAK,EAAE,GAAG;AAC/B,aAAa,OAAO,CAAC,KAAK,EAAE,GAAG;AAC/B,aAAa,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;;AAE/B,QAAQ,OAAO,WAAW;AAC1B,IAAI;;AAEJ,IAAI,SAAS,oBAAoB,CAAC,YAAY,CAAC;AAC/C,QAAQ,IAAI,MAAM,GAAG;AACrB,YAAY,QAAQ,EAAE;AACtB,gBAAgB,GAAG,EAAE;AACrB;AACA;AACA,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACrC,IAAI;;AAEJ,IAAI,EAAE,CAAC,cAAc,GAAG,eAAe,OAAO,EAAE;AAChD,QAAQ,IAAI,KAAK,GAAG,UAAU,EAAE;AAChC,QAAQ,IAAI,KAAK,GAAG,UAAU,EAAE;;AAEhC,QAAQ,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;;AAEtD,QAAQ,IAAI,aAAa,GAAG;AAC5B,YAAY,KAAK,EAAE,KAAK;AACxB,YAAY,KAAK,EAAE,KAAK;AACxB,YAAY,WAAW,EAAE,kBAAkB,CAAC,WAAW,CAAC;AACxD,YAAY,YAAY,EAAE;AAC1B,SAAS;;AAET,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;AACvC,YAAY,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;AACjD,QAAQ;;AAER,QAAQ,IAAI,OAAO;AACnB,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE;AACrD,YAAY,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC7C,QAAQ,CAAC,MAAM;AACf,YAAY,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;AAC9C,QAAQ;;AAER,QAAQ,IAAI,KAAK,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK;AACxD,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB;AACA,YAAY,KAAK,GAAG,QAAQ;AAC5B,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE;AACnD;AACA,YAAY,KAAK,GAAG,SAAS,GAAG,KAAK;AACrC,QAAQ;;AAER,QAAQ,IAAI,GAAG,GAAG;AAClB,cAAc,aAAa,GAAG,kBAAkB,CAAC,EAAE,CAAC,QAAQ;AAC5D,cAAc,gBAAgB,GAAG,kBAAkB,CAAC,WAAW;AAC/D,cAAc,SAAS,GAAG,kBAAkB,CAAC,KAAK;AAClD,cAAc,iBAAiB,GAAG,kBAAkB,CAAC,EAAE,CAAC,YAAY;AACpE,cAAc,iBAAiB,GAAG,kBAAkB,CAAC,EAAE,CAAC,YAAY;AACpE,cAAc,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC;AACnD,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,GAAG,GAAG,GAAG,GAAG,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC;AAC7D,QAAQ;;AAER,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;AACvC,YAAY,GAAG,IAAI,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC;AAClE,QAAQ;;AAER,QAAQ,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC3D,YAAY,GAAG,IAAI,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC;AACnE,QAAQ;;AAER,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE;AAC1C,YAAY,GAAG,IAAI,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC;AACzE,QAAQ;;AAER,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;AACxC,YAAY,GAAG,IAAI,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC;AACxE,QAAQ;;AAER,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE;AACvE,YAAY,GAAG,IAAI,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC;AACrE,QAAQ;;AAER,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;AACvC,YAAY,GAAG,IAAI,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC;AACtE,QAAQ;;AAER,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE;AACpC,YAAY,IAAI,eAAe,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC;AACnE,YAAY,GAAG,IAAI,UAAU,GAAG,kBAAkB,CAAC,eAAe,CAAC;AACnE,QAAQ;;AAER,QAAQ,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS,EAAE;AAC5D,YAAY,GAAG,IAAI,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,CAAC;AACzF,QAAQ;;AAER,QAAQ,IAAI,EAAE,CAAC,UAAU,EAAE;AAC3B,YAAY,IAAI;AAChB,gBAAgB,MAAM,YAAY,GAAG,oBAAoB,CAAC,EAAE,CAAC;AAC7D,gBAAgB,MAAM,aAAa,GAAG,MAAM,qBAAqB,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;;AAE9F,gBAAgB,aAAa,CAAC,gBAAgB,GAAG,YAAY;;AAE7D,gBAAgB,GAAG,IAAI,kBAAkB,GAAG,aAAa;AACzD,gBAAgB,GAAG,IAAI,yBAAyB,GAAG,EAAE,CAAC,UAAU;AAChE,YAAY,CAAC,CAAC,OAAO,KAAK,EAAE;AAC5B,gBAAgB,MAAM,IAAI,KAAK,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACvF,YAAY;AACZ,QAAQ;;AAER,QAAQ,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC;;AAE1C,QAAQ,OAAO,GAAG;AAClB,IAAI;;AAEJ,IAAI,EAAE,CAAC,MAAM,GAAG,SAAS,OAAO,EAAE;AAClC,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AACtC,IAAI;;AAEJ,IAAI,EAAE,CAAC,eAAe,GAAG,SAAS,OAAO,EAAE;;AAE3C,QAAQ,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC,YAAY;AACrE,QAAQ,IAAI,YAAY,KAAK,MAAM,EAAE;AACrC,YAAY,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE;AACxC,QAAQ;;AAER,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM;AACrC,cAAc,aAAa,GAAG,kBAAkB,CAAC,EAAE,CAAC,QAAQ;AAC5D,cAAc,4BAA4B,GAAG,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;;AAEpG,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE;AACxB,YAAY,GAAG,IAAI,iBAAiB,GAAG,kBAAkB,CAAC,EAAE,CAAC,OAAO,CAAC;AACrE,QAAQ;;AAER,QAAQ,OAAO,GAAG;AAClB,IAAI;;AAEJ,IAAI,EAAE,CAAC,QAAQ,GAAG,UAAU,OAAO,EAAE;AACrC,QAAQ,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AACxC,IAAI;;AAEJ,IAAI,EAAE,CAAC,iBAAiB,GAAG,eAAe,OAAO,EAAE;AACnD,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,OAAO,GAAG,EAAE;AACxB,QAAQ;AACR,QAAQ,OAAO,CAAC,MAAM,GAAG,UAAU;AACnC,QAAQ,OAAO,MAAM,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC;AAC/C,IAAI;;AAEJ,IAAI,EAAE,CAAC,gBAAgB,GAAG,SAAS,OAAO,EAAE;AAC5C,QAAQ,IAAI,KAAK,GAAG,WAAW,EAAE;AACjC,QAAQ,IAAI,GAAG,GAAG,SAAS;AAC3B,QAAQ,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAC1C,YAAY,GAAG,GAAG;AAClB,cAAc;AACd,cAAc,YAAY,GAAG,kBAAkB,CAAC,EAAE,CAAC,QAAQ;AAC3D,cAAc,gBAAgB,GAAG,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACjF,QAAQ;AACR,QAAQ,OAAO,GAAG;AAClB,IAAI;;AAEJ,IAAI,EAAE,CAAC,iBAAiB,GAAG,WAAW;AACtC,QAAQ,OAAO,OAAO,CAAC,iBAAiB,EAAE;AAC1C,IAAI;;AAEJ,IAAI,EAAE,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE;AACtC,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC,WAAW;AACnC,QAAQ,OAAO,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1D,IAAI;;AAEJ,IAAI,EAAE,CAAC,eAAe,GAAG,SAAS,IAAI,EAAE,QAAQ,EAAE;AAClD,QAAQ,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE;AAChC,YAAY,OAAO,KAAK;AACxB,QAAQ;;AAER,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC,cAAc,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,CAAC;AAC/D,QAAQ,OAAO,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1D,IAAI;;AAEJ,IAAI,EAAE,CAAC,eAAe,GAAG,WAAW;AACpC,QAAQ,IAAI,GAAG,GAAG,WAAW,EAAE,GAAG,UAAU;AAC5C,QAAQ,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE;AACtC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;AAClC,QAAQ,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAC1D,QAAQ,GAAG,CAAC,gBAAgB,CAAC,eAAe,EAAE,SAAS,GAAG,EAAE,CAAC,KAAK,CAAC;;AAEnE,QAAQ,IAAI,OAAO,GAAG,aAAa,EAAE;;AAErC,QAAQ,GAAG,CAAC,kBAAkB,GAAG,YAAY;AAC7C,YAAY,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE;AACrC,gBAAgB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;AACvC,oBAAoB,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;AAC7D,oBAAoB,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC;AAClD,gBAAgB,CAAC,MAAM;AACvB,oBAAoB,OAAO,CAAC,QAAQ,EAAE;AACtC,gBAAgB;AAChB,YAAY;AACZ,QAAQ;;AAER,QAAQ,GAAG,CAAC,IAAI,EAAE;;AAElB,QAAQ,OAAO,OAAO,CAAC,OAAO;AAC9B,IAAI;;AAEJ,IAAI,EAAE,CAAC,YAAY,GAAG,WAAW;AACjC,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE;AACzC,QAAQ,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE;AACtC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;AAClC,QAAQ,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAC1D,QAAQ,GAAG,CAAC,gBAAgB,CAAC,eAAe,EAAE,SAAS,GAAG,EAAE,CAAC,KAAK,CAAC;;AAEnE,QAAQ,IAAI,OAAO,GAAG,aAAa,EAAE;;AAErC,QAAQ,GAAG,CAAC,kBAAkB,GAAG,YAAY;AAC7C,YAAY,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE;AACrC,gBAAgB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;AACvC,oBAAoB,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;AAC9D,oBAAoB,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC;AACnD,gBAAgB,CAAC,MAAM;AACvB,oBAAoB,OAAO,CAAC,QAAQ,EAAE;AACtC,gBAAgB;AAChB,YAAY;AACZ,QAAQ;;AAER,QAAQ,GAAG,CAAC,IAAI,EAAE;;AAElB,QAAQ,OAAO,OAAO,CAAC,OAAO;AAC9B,IAAI;;AAEJ,IAAI,EAAE,CAAC,cAAc,GAAG,SAAS,WAAW,EAAE;AAC9C,QAAQ,IAAI,CAAC,EAAE,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,IAAI,IAAI,UAAU,EAAE,EAAE;AAC7E,YAAY,MAAM,mBAAmB;AACrC,QAAQ;;AAER,QAAQ,IAAI,EAAE,CAAC,QAAQ,IAAI,IAAI,EAAE;AACjC,YAAY,OAAO,CAAC,2EAA2E,CAAC;AAChG,YAAY,OAAO,IAAI;AACvB,QAAQ;;AAER,QAAQ,IAAI,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ;AACpG,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE;AACpC,gBAAgB,MAAM,qBAAqB;AAC3C,YAAY;AACZ,YAAY,SAAS,IAAI,WAAW;AACpC,QAAQ;AACR,QAAQ,OAAO,SAAS,GAAG,CAAC;AAC5B,IAAI;;AAEJ,IAAI,EAAE,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE;AAC3C,QAAQ,IAAI,OAAO,GAAG,aAAa,EAAE;;AAErC,QAAQ,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;AAC9B,YAAY,OAAO,CAAC,QAAQ,EAAE;AAC9B,YAAY,OAAO,OAAO,CAAC,OAAO;AAClC,QAAQ;;AAER,QAAQ,WAAW,GAAG,WAAW,IAAI,CAAC;;AAEtC,QAAQ,IAAI,IAAI,GAAG,WAAW;AAC9B,YAAY,IAAI,YAAY,GAAG,KAAK;AACpC,YAAY,IAAI,WAAW,IAAI,EAAE,EAAE;AACnC,gBAAgB,YAAY,GAAG,IAAI;AACnC,gBAAgB,OAAO,CAAC,6CAA6C,CAAC;AACtE,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;AAC1E,gBAAgB,YAAY,GAAG,IAAI;AACnC,gBAAgB,OAAO,CAAC,4CAA4C,CAAC;AACrE,YAAY;;AAEZ,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,gBAAgB,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;AACzC,YAAY,CAAC,MAAM;AACnB,gBAAgB,IAAI,MAAM,GAAG,2BAA2B,GAAG,gBAAgB,GAAG,EAAE,CAAC,YAAY;AAC7F,gBAAgB,IAAI,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE;;AAE9C,gBAAgB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;;AAE1C,gBAAgB,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE;AAC9C,oBAAoB,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE;AAClD,oBAAoB,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;AAC/C,oBAAoB,GAAG,CAAC,gBAAgB,CAAC,cAAc,EAAE,mCAAmC,CAAC;AAC7F,oBAAoB,GAAG,CAAC,eAAe,GAAG,IAAI;;AAE9C,oBAAoB,MAAM,IAAI,aAAa,GAAG,kBAAkB,CAAC,EAAE,CAAC,QAAQ,CAAC;;AAE7E,oBAAoB,IAAI,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;;AAExD,oBAAoB,GAAG,CAAC,kBAAkB,GAAG,YAAY;AACzD,wBAAwB,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE;AACjD,4BAA4B,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;AACnD,gCAAgC,OAAO,CAAC,4BAA4B,CAAC;;AAErE,gCAAgC,SAAS,GAAG,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;;AAElF,gCAAgC,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;;AAEhF,gCAAgC,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;;AAE7I,gCAAgC,EAAE,CAAC,oBAAoB,IAAI,EAAE,CAAC,oBAAoB,EAAE;AACpF,gCAAgC,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,EAAE;AACpG,oCAAoC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;AACtD,gCAAgC;AAChC,4BAA4B,CAAC,MAAM;AACnC,gCAAgC,OAAO,CAAC,oCAAoC,CAAC;;AAE7E,gCAAgC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;AACvD,oCAAoC,EAAE,CAAC,UAAU,EAAE;AACnD,gCAAgC;;AAEhC,gCAAgC,EAAE,CAAC,kBAAkB,IAAI,EAAE,CAAC,kBAAkB,EAAE;AAChF,gCAAgC,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,EAAE;AACpG,oCAAoC,CAAC,CAAC,QAAQ,CAAC,mGAAmG,CAAC;AACnJ,gCAAgC;AAChC,4BAA4B;AAC5B,wBAAwB;AACxB,oBAAoB,CAAC;;AAErB,oBAAoB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AACpC,gBAAgB;AAChB,YAAY;AACZ,QAAQ;;AAER,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE;AAChC,YAAY,IAAI,aAAa,GAAG,gBAAgB,EAAE;AAClD,YAAY,aAAa,CAAC,IAAI,CAAC,WAAW;AAC1C,gBAAgB,IAAI,EAAE;AACtB,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,EAAE;AACrC,gBAAgB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AACvC,YAAY,CAAC,CAAC;AACd,QAAQ,CAAC,MAAM;AACf,YAAY,IAAI,EAAE;AAClB,QAAQ;;AAER,QAAQ,OAAO,OAAO,CAAC,OAAO;AAC9B,IAAI;;AAEJ,IAAI,EAAE,CAAC,UAAU,GAAG,WAAW;AAC/B,QAAQ,IAAI,EAAE,CAAC,KAAK,EAAE;AACtB,YAAY,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACtC,YAAY,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,YAAY,EAAE;AAChD,YAAY,IAAI,EAAE,CAAC,aAAa,EAAE;AAClC,gBAAgB,EAAE,CAAC,KAAK,EAAE;AAC1B,YAAY;AACZ,QAAQ;AACR,IAAI;;AAEJ,IAAI,SAAS,WAAW,GAAG;AAC3B,QAAQ,IAAI,OAAO,EAAE,CAAC,aAAa,KAAK,WAAW,EAAE;AACrD,YAAY,IAAI,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE;AAC7E,gBAAgB,OAAO,EAAE,CAAC,aAAa,GAAG,SAAS,GAAG,kBAAkB,CAAC,EAAE,CAAC,KAAK,CAAC;AAClF,YAAY,CAAC,MAAM;AACnB,gBAAgB,OAAO,EAAE,CAAC,aAAa,GAAG,UAAU,GAAG,kBAAkB,CAAC,EAAE,CAAC,KAAK,CAAC;AACnF,YAAY;AACZ,QAAQ,CAAC,MAAM;AACf,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,IAAI;;AAEJ,IAAI,SAAS,SAAS,GAAG;AACzB,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;AACrC,YAAY,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;AACvI,QAAQ,CAAC,MAAM;AACf,YAAY,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM;AACzC,QAAQ;AACR,IAAI;;AAEJ,IAAI,SAAS,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE;AAC7C,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI;AAC7B,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK;AAC/B,QAAQ,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM;;AAEjC,QAAQ,IAAI,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;;AAE5C,QAAQ,IAAI,KAAK,CAAC,kBAAkB,CAAC,EAAE;AACvC,YAAY,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;AACjG,QAAQ;;AAER,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,IAAI,MAAM,IAAI,MAAM,EAAE;AAClC,gBAAgB,IAAI,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,iBAAiB,KAAK,wBAAwB,EAAE;AACrG,oBAAoB,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;AAChD,gBAAgB,CAAC,MAAM;AACvB,oBAAoB,IAAI,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE;AAChG,oBAAoB,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;AAC/D,oBAAoB,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC1D,gBAAgB;AAChB,YAAY,CAAC,MAAM;AACnB,gBAAgB,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE;AAC/C,YAAY;AACZ,YAAY;AACZ,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,UAAU,MAAM,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;AACtF,YAAY,WAAW,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;AACvE,QAAQ;;AAER,QAAQ,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,UAAU,KAAK,IAAI,EAAE;AAC7C,YAAY,IAAI,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,gCAAgC;AAC1E,YAAY,IAAI,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE;;AAE1C,YAAY,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE;AAC1C,YAAY,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;AACvC,YAAY,GAAG,CAAC,gBAAgB,CAAC,cAAc,EAAE,mCAAmC,CAAC;;AAErF,YAAY,MAAM,IAAI,aAAa,GAAG,kBAAkB,CAAC,EAAE,CAAC,QAAQ,CAAC;AACrE,YAAY,MAAM,IAAI,gBAAgB,GAAG,KAAK,CAAC,WAAW;;AAE1D,YAAY,IAAI,KAAK,CAAC,gBAAgB,EAAE;AACxC,gBAAgB,MAAM,IAAI,iBAAiB,GAAG,KAAK,CAAC,gBAAgB;AACpE,YAAY;;AAEZ,YAAY,GAAG,CAAC,eAAe,GAAG,IAAI;;AAEtC,YAAY,GAAG,CAAC,kBAAkB,GAAG,WAAW;AAChD,gBAAgB,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE;AACzC,oBAAoB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;;AAE3C,wBAAwB,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;AACxE,wBAAwB,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC;AACrJ,wBAAwB,mBAAmB,EAAE;AAC7C,oBAAoB,CAAC,MAAM;AAC3B,wBAAwB,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW,EAAE;AAC1D,wBAAwB,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;AACrD,oBAAoB;AACpB,gBAAgB;AAChB,YAAY,CAAC;;AAEb,YAAY,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,QAAQ;;AAER,QAAQ,SAAS,WAAW,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE;AACjF,YAAY,SAAS,GAAG,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;;AAE9D,YAAY,QAAQ,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC;;AAEnE,YAAY,IAAI,QAAQ,KAAK,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,aAAa,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE;AAC/F,gBAAgB,OAAO,CAAC,0CAA0C,CAAC;AACnE,gBAAgB,EAAE,CAAC,UAAU,EAAE;AAC/B,gBAAgB,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC7C,YAAY,CAAC,MAAM;AACnB,gBAAgB,IAAI,cAAc,EAAE;AACpC,oBAAoB,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,aAAa,EAAE;AAC1D,oBAAoB,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE;AACnD,gBAAgB;AAChB,YAAY;AACZ,QAAQ;;AAER,IAAI;;AAEJ,IAAI,SAAS,UAAU,GAAG;AAC1B,QAAQ,IAAI,OAAO,GAAG,aAAa,EAAE;AACrC,QAAQ,IAAI,SAAS;;AAErB,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACxC,YAAY,SAAS,GAAG,MAAM;AAC9B,QAAQ;;AAER,QAAQ,SAAS,iBAAiB,CAAC,iBAAiB,EAAE;AACtD,YAAY,IAAI,EAAE,iBAAiB,EAAE;AACrC,gBAAgB,EAAE,CAAC,SAAS,GAAG;AAC/B,oBAAoB,SAAS,EAAE,WAAW;AAC1C,wBAAwB,OAAO,WAAW,EAAE,GAAG,+BAA+B;AAC9E,oBAAoB,CAAC;AACrB,oBAAoB,KAAK,EAAE,WAAW;AACtC,wBAAwB,OAAO,WAAW,EAAE,GAAG,gCAAgC;AAC/E,oBAAoB,CAAC;AACrB,oBAAoB,MAAM,EAAE,WAAW;AACvC,wBAAwB,OAAO,WAAW,EAAE,GAAG,iCAAiC;AAChF,oBAAoB,CAAC;AACrB,oBAAoB,kBAAkB,EAAE,WAAW;AACnD,wBAAwB,OAAO,WAAW,EAAE,GAAG,mDAAmD;AAClG,oBAAoB,CAAC;AACrB,oBAAoB,uBAAuB,EAAE,WAAW;AACxD,wBAAwB,OAAO,WAAW,EAAE,GAAG,gDAAgD;AAC/F,oBAAoB,CAAC;AACrB,oBAAoB,QAAQ,EAAE,WAAW;AACzC,wBAAwB,OAAO,WAAW,EAAE,GAAG,wCAAwC;AACvF,oBAAoB,CAAC;AACrB,oBAAoB,QAAQ,EAAE,WAAW;AACzC,wBAAwB,OAAO,WAAW,EAAE,GAAG,mCAAmC;AAClF,oBAAoB;AACpB,iBAAiB;AACjB,YAAY,CAAC,MAAM;AACnB,gBAAgB,EAAE,CAAC,SAAS,GAAG;AAC/B,oBAAoB,SAAS,EAAE,WAAW;AAC1C,wBAAwB,OAAO,iBAAiB,CAAC,sBAAsB;AACvE,oBAAoB,CAAC;AACrB,oBAAoB,KAAK,EAAE,WAAW;AACtC,wBAAwB,OAAO,iBAAiB,CAAC,cAAc;AAC/D,oBAAoB,CAAC;AACrB,oBAAoB,MAAM,EAAE,WAAW;AACvC,wBAAwB,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE;AACrE,4BAA4B,MAAM,kCAAkC;AACpE,wBAAwB;AACxB,wBAAwB,OAAO,iBAAiB,CAAC,oBAAoB;AACrE,oBAAoB,CAAC;AACrB,oBAAoB,kBAAkB,EAAE,WAAW;AACnD,wBAAwB,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE;AACrE,4BAA4B,MAAM,kCAAkC;AACpE,wBAAwB;AACxB,wBAAwB,OAAO,iBAAiB,CAAC,oBAAoB;AACrE,oBAAoB,CAAC;AACrB,oBAAoB,QAAQ,EAAE,WAAW;AACzC,wBAAwB,MAAM,yEAAyE;AACvG,oBAAoB,CAAC;AACrB,oBAAoB,QAAQ,EAAE,WAAW;AACzC,wBAAwB,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE;AAClE,4BAA4B,MAAM,kCAAkC;AACpE,wBAAwB;AACxB,wBAAwB,OAAO,iBAAiB,CAAC,iBAAiB;AAClE,oBAAoB;AACpB;AACA,YAAY;AACZ,QAAQ;;AAER,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE;AAC1C,YAAY,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC;AAC5C,YAAY,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,CAAC;;AAE9D,YAAY,GAAG,CAAC,kBAAkB,GAAG,YAAY;AACjD,gBAAgB,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE;AACzC,oBAAoB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;AAC9D,wBAAwB,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;;AAEjE,wBAAwB,EAAE,CAAC,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACpE,wBAAwB,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AAClD,wBAAwB,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AACxD,wBAAwB,iBAAiB,CAAC,IAAI,CAAC;AAC/C,wBAAwB,OAAO,CAAC,UAAU,EAAE;AAC5C,oBAAoB,CAAC,MAAM;AAC3B,wBAAwB,OAAO,CAAC,QAAQ,EAAE;AAC1C,oBAAoB;AACpB,gBAAgB;AAChB,YAAY,CAAC;;AAEb,YAAY,GAAG,CAAC,IAAI,EAAE;AACtB,QAAQ,CAAC,MAAM;AACf,YAAY,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;;AAEzC,YAAY,IAAI,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACrD,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,gBAAgB,EAAE,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG;AAC7C,gBAAgB,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;AACvC,gBAAgB,iBAAiB,CAAC,IAAI,CAAC;AACvC,gBAAgB,OAAO,CAAC,UAAU,EAAE;AACpC,YAAY,CAAC,MAAM;AACnB,gBAAgB,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;AACtD,oBAAoB,IAAI,qBAAqB;AAC7C,oBAAoB,IAAI,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE;AAC7E,wBAAwB,qBAAqB,GAAG,YAAY,GAAG,kCAAkC;AACjG,oBAAoB,CAAC,MAAM;AAC3B,wBAAwB,qBAAqB,GAAG,YAAY,GAAG,mCAAmC;AAClG,oBAAoB;AACpB,oBAAoB,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE;AAClD,oBAAoB,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,EAAE,IAAI,CAAC;AAChE,oBAAoB,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,CAAC;;AAEtE,oBAAoB,GAAG,CAAC,kBAAkB,GAAG,YAAY;AACzD,wBAAwB,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE;AACjD,4BAA4B,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;AACtE,gCAAgC,IAAI,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;AACrF,gCAAgC,iBAAiB,CAAC,kBAAkB,CAAC;AACrE,gCAAgC,OAAO,CAAC,UAAU,EAAE;AACpD,4BAA4B,CAAC,MAAM;AACnC,gCAAgC,OAAO,CAAC,QAAQ,EAAE;AAClD,4BAA4B;AAC5B,wBAAwB;AACxB,oBAAoB,CAAC;;AAErB,oBAAoB,GAAG,CAAC,IAAI,EAAE;AAC9B,gBAAgB,CAAC,MAAM;AACvB,oBAAoB,iBAAiB,CAAC,YAAY,CAAC;AACnD,oBAAoB,OAAO,CAAC,UAAU,EAAE;AACxC,gBAAgB;AAChB,YAAY;AACZ,QAAQ;;AAER,QAAQ,OAAO,OAAO,CAAC,OAAO;AAC9B,IAAI;;AAEJ,IAAI,SAAS,UAAU,CAAC,GAAG,EAAE;AAC7B,QAAQ,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;AACzF,IAAI;;AAEJ,IAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE;AAC/D,QAAQ,IAAI,EAAE,CAAC,kBAAkB,EAAE;AACnC,YAAY,YAAY,CAAC,EAAE,CAAC,kBAAkB,CAAC;AAC/C,YAAY,EAAE,CAAC,kBAAkB,GAAG,IAAI;AACxC,QAAQ;;AAER,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,EAAE,CAAC,YAAY,GAAG,YAAY;AAC1C,YAAY,EAAE,CAAC,kBAAkB,GAAG,WAAW,CAAC,YAAY,CAAC;AAC7D,QAAQ,CAAC,MAAM;AACf,YAAY,OAAO,EAAE,CAAC,YAAY;AAClC,YAAY,OAAO,EAAE,CAAC,kBAAkB;AACxC,QAAQ;;AAER,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,EAAE,CAAC,OAAO,GAAG,OAAO;AAChC,YAAY,EAAE,CAAC,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC;AACnD,QAAQ,CAAC,MAAM;AACf,YAAY,OAAO,EAAE,CAAC,OAAO;AAC7B,YAAY,OAAO,EAAE,CAAC,aAAa;AACnC,QAAQ;;AAER,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,EAAE,CAAC,KAAK,GAAG,KAAK;AAC5B,YAAY,EAAE,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;AAC/C,YAAY,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG;AAC7C,YAAY,EAAE,CAAC,aAAa,GAAG,IAAI;AACnC,YAAY,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG;AAC3C,YAAY,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY;AACxD,YAAY,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,eAAe;;AAE9D,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG;AAC/E,YAAY;;AAEZ,YAAY,IAAI,EAAE,CAAC,QAAQ,IAAI,IAAI,EAAE;AACrC,gBAAgB,OAAO,CAAC,qEAAqE,GAAG,EAAE,CAAC,QAAQ,GAAG,UAAU,CAAC;;AAEzH,gBAAgB,IAAI,EAAE,CAAC,cAAc,EAAE;AACvC,oBAAoB,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,IAAI,IAAI;AAChH,oBAAoB,OAAO,CAAC,8BAA8B,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AACjG,oBAAoB,IAAI,SAAS,IAAI,CAAC,EAAE;AACxC,wBAAwB,EAAE,CAAC,cAAc,EAAE;AAC3C,oBAAoB,CAAC,MAAM;AAC3B,wBAAwB,EAAE,CAAC,kBAAkB,GAAG,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC;AACxF,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,QAAQ,CAAC,MAAM;AACf,YAAY,OAAO,EAAE,CAAC,KAAK;AAC3B,YAAY,OAAO,EAAE,CAAC,WAAW;AACjC,YAAY,OAAO,EAAE,CAAC,OAAO;AAC7B,YAAY,OAAO,EAAE,CAAC,WAAW;AACjC,YAAY,OAAO,EAAE,CAAC,cAAc;;AAEpC,YAAY,EAAE,CAAC,aAAa,GAAG,KAAK;AACpC,QAAQ;AACR,IAAI;;AAEJ,IAAI,SAAS,UAAU,GAAG;AAC1B,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,WAAW,EAAE;AACvF,YAAY,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;AAC/D,QAAQ;;AAER,QAAQ,OAAO,MAAM,CAAC,UAAU,EAAE;AAClC,IAAI;;AAEJ,IAAI,SAAS,aAAa,CAAC,GAAG,EAAE;AAChC,QAAQ,IAAI,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC;AACzC,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY;AACZ,QAAQ;;AAER,QAAQ,IAAI,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;;AAEzD,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,KAAK,CAAC,KAAK,GAAG,IAAI;AAC9B,YAAY,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW;AACtD,YAAY,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK;AAChD,YAAY,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;AAC5C,YAAY,KAAK,CAAC,gBAAgB,GAAG,UAAU,CAAC,gBAAgB;AAChE,YAAY,KAAK,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY;AACxD,QAAQ;;AAER,QAAQ,OAAO,KAAK;AACpB,IAAI;;AAEJ,IAAI,SAAS,gBAAgB,CAAC,GAAG,EAAE;AACnC,QAAQ,IAAI,eAAe;AAC3B,QAAQ,QAAQ,EAAE,CAAC,IAAI;AACvB,YAAY,KAAK,UAAU;AAC3B,gBAAgB,eAAe,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,CAAC;AAC5G,gBAAgB;AAChB,YAAY,KAAK,UAAU;AAC3B,gBAAgB,eAAe,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,CAAC;AAC5J,gBAAgB;AAChB,YAAY,KAAK,QAAQ;AACzB,gBAAgB,eAAe,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,CAAC;AACpK,gBAAgB;AAChB;;AAEA,QAAQ,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;AACrC,QAAQ,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACjD,QAAQ,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;;AAEzC,QAAQ,IAAI,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AACzC,QAAQ,IAAI,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;;AAE5C,QAAQ,IAAI,MAAM;AAClB,QAAQ,IAAI,MAAM;;AAElB,QAAQ,IAAI,EAAE,CAAC,YAAY,KAAK,OAAO,IAAI,UAAU,KAAK,EAAE,EAAE;AAC9D,YAAY,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC;AACjD,YAAY,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,aAAa,KAAK,EAAE,GAAG,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;AAC3I,YAAY,IAAI,MAAM,CAAC,YAAY,KAAK,EAAE,EAAE;AAC5C,gBAAgB,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,YAAY;AACnD,YAAY;AACZ,YAAY,IAAI,aAAa,KAAK,EAAE,EAAE;AACtC,gBAAgB,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC;AACtD,YAAY;AACZ,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,YAAY,KAAK,UAAU,IAAI,aAAa,KAAK,EAAE,EAAE;AAC3E,YAAY,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC;AACpD,YAAY,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC;AAC3F,YAAY,IAAI,MAAM,CAAC,YAAY,KAAK,EAAE,EAAE;AAC5C,gBAAgB,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,YAAY;AACnD,YAAY;AACZ,QAAQ;;AAER,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE;AAC1C,YAAY,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE;AAChE,gBAAgB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE;AACvG,oBAAoB,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,MAAM;AACtD,oBAAoB,OAAO,MAAM,CAAC,WAAW;AAC7C,gBAAgB;AAChB,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE;AAC/C,gBAAgB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE;AAC/G,oBAAoB,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,MAAM;AACtD,oBAAoB,OAAO,MAAM,CAAC,WAAW;AAC7C,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,IAAI;;AAEJ,IAAI,SAAS,mBAAmB,CAAC,YAAY,EAAE,eAAe,EAAE;AAChE,QAAQ,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;AACvC,QAAQ,IAAI,MAAM,GAAG;AACrB,YAAY,YAAY,EAAE,EAAE;AAC5B,YAAY,WAAW,EAAE;AACzB;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,YAAY,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AACzC,YAAY,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;AAC1C,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE;AACrD,gBAAgB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAC/D,YAAY,CAAC,MAAM;AACnB,gBAAgB,IAAI,MAAM,CAAC,YAAY,KAAK,EAAE,EAAE;AAChD,oBAAoB,MAAM,CAAC,YAAY,IAAI,GAAG;AAC9C,gBAAgB;AAChB,gBAAgB,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,MAAM;AACrB,IAAI;;AAEJ,IAAI,SAAS,aAAa,GAAG;AAC7B;AACA;AACA,QAAQ,IAAI,CAAC,GAAG;AAChB,YAAY,UAAU,EAAE,SAAS,MAAM,EAAE;AACzC,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACjC,YAAY,CAAC;;AAEb,YAAY,QAAQ,EAAE,SAAS,MAAM,EAAE;AACvC,gBAAgB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AAChC,YAAY;AACZ,SAAS;AACT,QAAQ,CAAC,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;AAC1D,YAAY,CAAC,CAAC,OAAO,GAAG,OAAO;AAC/B,YAAY,CAAC,CAAC,MAAM,GAAG,MAAM;AAC7B,QAAQ,CAAC,CAAC;;AAEV,QAAQ,OAAO,CAAC;AAChB,IAAI;;AAEJ;AACA,IAAI,SAAS,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE;AACnE,QAAQ,IAAI,aAAa,GAAG,IAAI;AAChC,QAAQ,IAAI,cAAc,GAAG,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AACpE,YAAY,aAAa,GAAG,UAAU,CAAC,YAAY;AACnD,gBAAgB,MAAM,CAAC,EAAE,OAAO,EAAE,YAA4E,EAAE,CAAC;AACjH,YAAY,CAAC,EAAE,OAAO,CAAC;AACvB,QAAQ,CAAC,CAAC;;AAEV,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY;AAC3E,YAAY,YAAY,CAAC,aAAa,CAAC;AACvC,QAAQ,CAAC,CAAC;AACV,IAAI;;AAEJ,IAAI,SAAS,qBAAqB,GAAG;AACrC,QAAQ,IAAI,OAAO,GAAG,aAAa,EAAE;;AAErC,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACjC,YAAY,OAAO,CAAC,UAAU,EAAE;AAChC,YAAY,OAAO,OAAO,CAAC,OAAO;AAClC,QAAQ;;AAER,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE;AAChC,YAAY,OAAO,CAAC,UAAU,EAAE;AAChC,YAAY,OAAO,OAAO,CAAC,OAAO;AAClC,QAAQ;;AAER,QAAQ,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AACrD,QAAQ,WAAW,CAAC,MAAM,GAAG,MAAM;;AAEnC,QAAQ,MAAM,CAAC,MAAM,GAAG,WAAW;AACnC,YAAY,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;AAClD,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC3C,gBAAgB,WAAW,CAAC,YAAY,GAAG,SAAS,EAAE;AACtD,YAAY,CAAC,MAAM;AACnB,gBAAgB,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACxF,YAAY;AACZ,YAAY,OAAO,CAAC,UAAU,EAAE;AAChC,QAAQ;;AAER,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,kBAAkB,EAAE;AACnD,QAAQ,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE;AACxC,QAAQ,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,yEAAyE,CAAC;AACjH,QAAQ,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,yBAAyB,EAAE;AAChE,QAAQ,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AACrC,QAAQ,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;;AAEzC,QAAQ,IAAI,eAAe,GAAG,SAAS,KAAK,EAAE;AAC9C,YAAY,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,YAAY,MAAM,WAAW,CAAC,MAAM,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE;AACpH,gBAAgB;AAChB,YAAY;;AAEZ,YAAY,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,WAAW,IAAI,KAAK,CAAC,IAAI,IAAI,SAAS,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE;AAClG,gBAAgB;AAChB,YAAY;;;AAGZ,YAAY,IAAI,KAAK,CAAC,IAAI,IAAI,WAAW,EAAE;AAC3C,gBAAgB,EAAE,CAAC,UAAU,EAAE;AAC/B,YAAY;;AAEZ,YAAY,IAAI,SAAS,GAAG,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC;;AAE/F,YAAY,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;AAC5D,gBAAgB,IAAI,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;AAC1C,gBAAgB,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE;AAC3C,oBAAoB,OAAO,CAAC,QAAQ,EAAE;AACtC,gBAAgB,CAAC,MAAM;AACvB,oBAAoB,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,WAAW,CAAC;AACjE,gBAAgB;AAChB,YAAY;AACZ,QAAQ,CAAC;;AAET,QAAQ,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC;;AAElE,QAAQ,OAAO,OAAO,CAAC,OAAO;AAC9B,IAAI;;AAEJ,IAAI,SAAS,mBAAmB,GAAG;AACnC,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE;AAChC,YAAY,IAAI,EAAE,CAAC,KAAK,EAAE;AAC1B,gBAAgB,UAAU,CAAC,WAAW;AACtC,oBAAoB,gBAAgB,EAAE,CAAC,IAAI,CAAC,SAAS,SAAS,EAAE;AAChE,wBAAwB,IAAI,SAAS,EAAE;AACvC,4BAA4B,mBAAmB,EAAE;AACjD,wBAAwB;AACxB,oBAAoB,CAAC,CAAC;AACtB,gBAAgB,CAAC,EAAE,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC/C,YAAY;AACZ,QAAQ;AACR,IAAI;;AAEJ,IAAI,SAAS,gBAAgB,GAAG;AAChC,QAAQ,IAAI,OAAO,GAAG,aAAa,EAAE;;AAErC,QAAQ,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,YAAY,GAAG;AAC7D,YAAY,IAAI,GAAG,GAAG,EAAE,CAAC,QAAQ,GAAG,GAAG,IAAI,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;AAC5E,YAAY,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAClD,YAAY,IAAI,MAAM,GAAG,WAAW,CAAC,YAAY;AACjD,YAAY,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE;AACtD,gBAAgB,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC;AACzE,YAAY;AACZ,QAAQ,CAAC,MAAM;AACf,YAAY,OAAO,CAAC,UAAU,EAAE;AAChC,QAAQ;;AAER,QAAQ,OAAO,OAAO,CAAC,OAAO;AAC9B,IAAI;;AAEJ,IAAI,SAAS,uBAAuB,GAAG;AACvC,QAAQ,IAAI,OAAO,GAAG,aAAa,EAAE;;AAErC,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC,yBAAyB,KAAK,OAAO,EAAE,CAAC,SAAS,CAAC,uBAAuB,KAAK,UAAU,EAAE;AAChI,YAAY,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AACzD,YAAY,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;AAC9E,YAAY,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,yEAAyE,CAAC;AACrH,YAAY,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,0BAA0B,EAAE;AACrE,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AACzC,YAAY,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;;AAE7C,YAAY,IAAI,eAAe,GAAG,SAAS,KAAK,EAAE;AAClD,gBAAgB,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,EAAE;AAC3D,oBAAoB;AACpB,gBAAgB;;AAEhB,gBAAgB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE;AAChF,oBAAoB;AACpB,gBAAgB,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE;AACzD,oBAAoB,OAAO;AAC3B,wBAAwB,kFAAkF;AAC1G,wBAAwB,sIAAsI;AAC9J,wBAAwB,gIAAgI;AACxJ,wBAAwB;AACxB,qBAAqB;;AAErB,oBAAoB,WAAW,CAAC,MAAM,GAAG,KAAK;AAC9C,oBAAoB,IAAI,EAAE,CAAC,sBAAsB,EAAE;AACnD,wBAAwB,EAAE,CAAC,yBAAyB,GAAG,KAAK;AAC5D,oBAAoB;AACpB,gBAAgB;;AAEhB,gBAAgB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACjD,gBAAgB,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC;AACtE,gBAAgB,OAAO,CAAC,UAAU,EAAE;AACpC,YAAY,CAAC;;AAEb,YAAY,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC;AACtE,QAAQ,CAAC,MAAM;AACf,YAAY,OAAO,CAAC,UAAU,EAAE;AAChC,QAAQ;;AAER,QAAQ,OAAO,qBAAqB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,qBAAqB,EAAE,0DAA0D,CAAC;AAC3I,IAAI;;AAEJ,IAAI,SAAS,WAAW,CAAC,IAAI,EAAE;AAC/B,QAAQ,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,SAAS,EAAE;AACxC,YAAY,OAAO;AACnB,gBAAgB,KAAK,EAAE,eAAe,OAAO,EAAE;AAC/C,oBAAoB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC5E,oBAAoB,OAAO,aAAa,EAAE,CAAC,OAAO;AAClD,gBAAgB,CAAC;;AAEjB,gBAAgB,MAAM,EAAE,eAAe,OAAO,EAAE;;AAEhD,oBAAoB,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC,YAAY;AACjF,oBAAoB,IAAI,YAAY,KAAK,KAAK,EAAE;AAChD,wBAAwB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC5E,wBAAwB;AACxB,oBAAoB;;AAEpB;AACA,oBAAoB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;;AAE/D,oBAAoB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;AACvD,oBAAoB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC5E,oBAAoB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;;AAE/C;AACA,oBAAoB,MAAM,IAAI,GAAG;AACjC,wBAAwB,aAAa,EAAE,EAAE,CAAC,OAAO;AACjD,wBAAwB,SAAS,EAAE,EAAE,CAAC,QAAQ;AAC9C,wBAAwB,wBAAwB,EAAE,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK;AACpF,qBAAqB;;AAErB,oBAAoB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACtE,wBAAwB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;;AAErE,wBAAwB,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;AAC5D,wBAAwB,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;AACxD,wBAAwB,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;;AAE1D,wBAAwB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC/C,oBAAoB;;AAEpB;AACA,oBAAoB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACnD,oBAAoB,IAAI,CAAC,MAAM,EAAE;AACjC,gBAAgB,CAAC;;AAEjB,gBAAgB,QAAQ,EAAE,eAAe,OAAO,EAAE;AAClD,oBAAoB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC/E,oBAAoB,OAAO,aAAa,EAAE,CAAC,OAAO;AAClD,gBAAgB,CAAC;;AAEjB,gBAAgB,iBAAiB,GAAG,WAAW;AAC/C,oBAAoB,IAAI,UAAU,GAAG,EAAE,CAAC,gBAAgB,EAAE;AAC1D,oBAAoB,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;AAC3D,wBAAwB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,UAAU;AACzD,oBAAoB,CAAC,MAAM;AAC3B,wBAAwB,MAAM,kCAAkC;AAChE,oBAAoB;AACpB,oBAAoB,OAAO,aAAa,EAAE,CAAC,OAAO;AAClD,gBAAgB,CAAC;;AAEjB,gBAAgB,WAAW,EAAE,SAAS,OAAO,EAAE,UAAU,EAAE;;AAK3D,oBAAoB,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE;AACxD,wBAAwB,OAAO,OAAO,CAAC,WAAW;AAClD,oBAAoB,CAAC,MAAM,IAAI,EAAE,CAAC,WAAW,EAAE;AAC/C,wBAAwB,OAAO,EAAE,CAAC,WAAW;AAC7C,oBAAoB,CAAC,MAAM;AAC3B,wBAAwB,OAAO,QAAQ,CAAC,IAAI;AAC5C,oBAAoB;AACpB,gBAAgB;AAChB,aAAa;AACb,QAAQ;;AAER,QAAQ,IAAI,IAAI,IAAI,SAAS,EAAE;AAC/B,YAAY,WAAW,CAAC,MAAM,GAAG,KAAK;AACtC,YAAY,IAAI,wBAAwB,GAAG,SAAS,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;AAC/E,gBAAgB,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE;AACnE;AACA,oBAAoB,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;AACtF,gBAAgB,CAAC,MAAM;AACvB,oBAAoB,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;AACjE,gBAAgB;AAChB,YAAY,CAAC;;AAEb,YAAY,IAAI,0BAA0B,GAAG,UAAU,WAAW,EAAE;AACpE,gBAAgB,IAAI,WAAW,IAAI,WAAW,CAAC,cAAc,EAAE;AAC/D,oBAAoB,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,UAAU,OAAO,EAAE,UAAU,EAAE;AACzG,wBAAwB,OAAO,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC;AACpF,wBAAwB,OAAO,OAAO;AACtC,oBAAoB,CAAC,EAAE,EAAE,CAAC;AAC1B,gBAAgB,CAAC,MAAM;AACvB,oBAAoB,OAAO,EAAE;AAC7B,gBAAgB;AAChB,YAAY,CAAC;;AAEb,YAAY,IAAI,oBAAoB,GAAG,UAAU,cAAc,EAAE;AACjE,gBAAgB,OAAO,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,UAAU,OAAO,EAAE,UAAU,EAAE;AACzF,oBAAoB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAC3E,oBAAoB,OAAO,OAAO;AAClC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAChC,YAAY,CAAC;;AAEb,YAAY,IAAI,oBAAoB,GAAG,UAAU,WAAW,EAAE;AAC9D,gBAAgB,IAAI,cAAc,GAAG,0BAA0B,CAAC,WAAW,CAAC;AAC5E,gBAAgB,cAAc,CAAC,QAAQ,GAAG,IAAI;AAC9C,gBAAgB,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,IAAI,MAAM,EAAE;AACjE,oBAAoB,cAAc,CAAC,MAAM,GAAG,KAAK;AACjD,gBAAgB;AAChB,gBAAgB,OAAO,oBAAoB,CAAC,cAAc,CAAC;AAC3D,YAAY,CAAC;;AAEb,YAAY,IAAI,qBAAqB,GAAG,WAAW;AACnD,gBAAgB,OAAO,EAAE,CAAC,WAAW,IAAI,kBAAkB;AAC3D,YAAY;;AAEZ,YAAY,OAAO;AACnB,gBAAgB,KAAK,EAAE,eAAe,OAAO,EAAE;AAC/C,oBAAoB,IAAI,OAAO,GAAG,aAAa,EAAE;;AAEjD,oBAAoB,IAAI,cAAc,GAAG,oBAAoB,CAAC,OAAO,CAAC;AACtE,oBAAoB,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC;AACnE,oBAAoB,IAAI,GAAG,GAAG,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC;AAC1F,oBAAoB,IAAI,SAAS,GAAG,KAAK;;AAEzC,oBAAoB,IAAI,MAAM,GAAG,KAAK;AACtC,oBAAoB,IAAI,YAAY,GAAG,WAAW;AAClD,wBAAwB,MAAM,GAAG,IAAI;AACrC,wBAAwB,GAAG,CAAC,KAAK,EAAE;AACnC,oBAAoB,CAAC;;AAErB,oBAAoB,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,KAAK,EAAE;AACtE,wBAAwB,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7E,4BAA4B,IAAI,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AACnE,4BAA4B,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC9D,4BAA4B,YAAY,EAAE;AAC1C,4BAA4B,SAAS,GAAG,IAAI;AAC5C,wBAAwB;AACxB,oBAAoB,CAAC,CAAC;;AAEtB,oBAAoB,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,KAAK,EAAE;AACtE,wBAAwB,IAAI,CAAC,SAAS,EAAE;AACxC,4BAA4B,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,EAAE;AACjF,gCAAgC,IAAI,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AACvE,gCAAgC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC;AAClE,gCAAgC,YAAY,EAAE;AAC9C,gCAAgC,SAAS,GAAG,IAAI;AAChD,4BAA4B,CAAC,MAAM;AACnC,gCAAgC,OAAO,CAAC,QAAQ,EAAE;AAClD,gCAAgC,YAAY,EAAE;AAC9C,4BAA4B;AAC5B,wBAAwB;AACxB,oBAAoB,CAAC,CAAC;;AAEtB,oBAAoB,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE;AACjE,wBAAwB,IAAI,CAAC,MAAM,EAAE;AACrC,4BAA4B,OAAO,CAAC,QAAQ,CAAC;AAC7C,gCAAgC,MAAM,EAAE;AACxC,6BAA6B,CAAC;AAC9B,wBAAwB;AACxB,oBAAoB,CAAC,CAAC;;AAEtB,oBAAoB,OAAO,OAAO,CAAC,OAAO;AAC1C,gBAAgB,CAAC;;AAEjB,gBAAgB,MAAM,EAAE,SAAS,OAAO,EAAE;AAC1C,oBAAoB,IAAI,OAAO,GAAG,aAAa,EAAE;;AAEjD,oBAAoB,IAAI,SAAS,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC;AAC/D,oBAAoB,IAAI,GAAG,GAAG,wBAAwB,CAAC,SAAS,EAAE,QAAQ,EAAE,uCAAuC,CAAC;;AAEpH,oBAAoB,IAAI,KAAK;;AAE7B,oBAAoB,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,KAAK,EAAE;AACtE,wBAAwB,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7E,4BAA4B,GAAG,CAAC,KAAK,EAAE;AACvC,wBAAwB;AACxB,oBAAoB,CAAC,CAAC;;AAEtB,oBAAoB,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,KAAK,EAAE;AACtE,wBAAwB,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7E,4BAA4B,GAAG,CAAC,KAAK,EAAE;AACvC,wBAAwB,CAAC,MAAM;AAC/B,4BAA4B,KAAK,GAAG,IAAI;AACxC,4BAA4B,GAAG,CAAC,KAAK,EAAE;AACvC,wBAAwB;AACxB,oBAAoB,CAAC,CAAC;;AAEtB,oBAAoB,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE;AACjE,wBAAwB,IAAI,KAAK,EAAE;AACnC,4BAA4B,OAAO,CAAC,QAAQ,EAAE;AAC9C,wBAAwB,CAAC,MAAM;AAC/B,4BAA4B,EAAE,CAAC,UAAU,EAAE;AAC3C,4BAA4B,OAAO,CAAC,UAAU,EAAE;AAChD,wBAAwB;AACxB,oBAAoB,CAAC,CAAC;;AAEtB,oBAAoB,OAAO,OAAO,CAAC,OAAO;AAC1C,gBAAgB,CAAC;;AAEjB,gBAAgB,QAAQ,GAAG,eAAe,OAAO,EAAE;AACnD,oBAAoB,IAAI,OAAO,GAAG,aAAa,EAAE;AACjD,oBAAoB,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC,iBAAiB,EAAE;AAClE,oBAAoB,IAAI,cAAc,GAAG,oBAAoB,CAAC,OAAO,CAAC;AACtE,oBAAoB,IAAI,GAAG,GAAG,wBAAwB,CAAC,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC;AAC7F,oBAAoB,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,KAAK,EAAE;AACtE,wBAAwB,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7E,4BAA4B,GAAG,CAAC,KAAK,EAAE;AACvC,4BAA4B,IAAI,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AAChE,4BAA4B,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC;AAC3D,wBAAwB;AACxB,oBAAoB,CAAC,CAAC;AACtB,oBAAoB,OAAO,OAAO,CAAC,OAAO;AAC1C,gBAAgB,CAAC;;AAEjB,gBAAgB,iBAAiB,GAAG,WAAW;AAC/C,oBAAoB,IAAI,UAAU,GAAG,EAAE,CAAC,gBAAgB,EAAE;AAC1D,oBAAoB,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;AAC3D,wBAAwB,IAAI,GAAG,GAAG,wBAAwB,CAAC,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC;AAC/F,wBAAwB,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,KAAK,EAAE;AAC1E,4BAA4B,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,EAAE;AACjF,gCAAgC,GAAG,CAAC,KAAK,EAAE;AAC3C,4BAA4B;AAC5B,wBAAwB,CAAC,CAAC;AAC1B,oBAAoB,CAAC,MAAM;AAC3B,wBAAwB,MAAM,kCAAkC;AAChE,oBAAoB;AACpB,gBAAgB,CAAC;;AAEjB,gBAAgB,WAAW,EAAE,SAAS,OAAO,EAAE;AAC/C,oBAAoB,OAAO,qBAAqB,EAAE;AAClD,gBAAgB;AAChB;AACA,QAAQ;;AAER,QAAQ,IAAI,IAAI,IAAI,gBAAgB,EAAE;AACtC,YAAY,WAAW,CAAC,MAAM,GAAG,KAAK;;AAEtC,YAAY,OAAO;AACnB,gBAAgB,KAAK,EAAE,eAAe,OAAO,EAAE;AAC/C,oBAAoB,IAAI,OAAO,GAAG,aAAa,EAAE;AACjD,oBAAoB,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC;;AAEnE,oBAAoB,cAAc,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,KAAK,EAAE;AACzE,wBAAwB,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC;AAC9D,wBAAwB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;AACjE,wBAAwB,IAAI,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AAC5D,wBAAwB,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC;AACvD,oBAAoB,CAAC,CAAC;;AAEtB,oBAAoB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC;AACvE,oBAAoB,OAAO,OAAO,CAAC,OAAO;AAC1C,gBAAgB,CAAC;;AAEjB,gBAAgB,MAAM,EAAE,SAAS,OAAO,EAAE;AAC1C,oBAAoB,IAAI,OAAO,GAAG,aAAa,EAAE;AACjD,oBAAoB,IAAI,SAAS,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC;;AAE/D,oBAAoB,cAAc,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,KAAK,EAAE;AACzE,wBAAwB,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC;AAC9D,wBAAwB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;AACjE,wBAAwB,EAAE,CAAC,UAAU,EAAE;AACvC,wBAAwB,OAAO,CAAC,UAAU,EAAE;AAC5C,oBAAoB,CAAC,CAAC;;AAEtB,oBAAoB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC;AACxE,oBAAoB,OAAO,OAAO,CAAC,OAAO;AAC1C,gBAAgB,CAAC;;AAEjB,gBAAgB,QAAQ,GAAG,eAAe,OAAO,EAAE;AACnD,oBAAoB,IAAI,OAAO,GAAG,aAAa,EAAE;AACjD,oBAAoB,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACzE,oBAAoB,cAAc,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,KAAK,EAAE;AAC1E,wBAAwB,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC;AAC9D,wBAAwB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;AACjE,wBAAwB,IAAI,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AAC5D,wBAAwB,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC;AACvD,oBAAoB,CAAC,CAAC;AACtB,oBAAoB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;AAC1E,oBAAoB,OAAO,OAAO,CAAC,OAAO;;AAE1C,gBAAgB,CAAC;;AAEjB,gBAAgB,iBAAiB,GAAG,WAAW;AAC/C,oBAAoB,IAAI,UAAU,GAAG,EAAE,CAAC,gBAAgB,EAAE;AAC1D,oBAAoB,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;AAC3D,wBAAwB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC;AAC7E,oBAAoB,CAAC,MAAM;AAC3B,wBAAwB,MAAM,kCAAkC;AAChE,oBAAoB;AACpB,gBAAgB,CAAC;;AAEjB,gBAAgB,WAAW,EAAE,SAAS,OAAO,EAAE;AAC/C,oBAAoB,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE;AACxD,wBAAwB,OAAO,OAAO,CAAC,WAAW;AAClD,oBAAoB,CAAC,MAAM,IAAI,EAAE,CAAC,WAAW,EAAE;AAC/C,wBAAwB,OAAO,EAAE,CAAC,WAAW;AAC7C,oBAAoB,CAAC,MAAM;AAC3B,wBAAwB,OAAO,kBAAkB;AACjD,oBAAoB;AACpB,gBAAgB;AAChB;AACA,QAAQ;;AAER,QAAQ,MAAM,wBAAwB,GAAG,IAAI;AAC7C,IAAI;;AAEJ,IAAI,MAAM,kBAAkB,GAAG,cAAc;;AAE7C,IAAI,IAAI,YAAY,GAAG,WAAW;AAClC,QAAQ,IAAI,EAAE,IAAI,YAAY,YAAY,CAAC,EAAE;AAC7C,YAAY,OAAO,IAAI,YAAY,EAAE;AACrC,QAAQ;;AAER,QAAQ,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;AAC/C,QAAQ,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC;;AAE1C,QAAQ,IAAI,EAAE,GAAG,IAAI;;AAErB;AACA;AACA;AACA,QAAQ,SAAS,kBAAkB,GAAG;AACtC,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE;;AAE1C,YAAY,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,gBAAgB,EAAE,EAAE;AAC3D;AACA,gBAAgB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC;;AAEjD;AACA,gBAAgB,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,GAAG,WAAW,EAAE;AAC7D,oBAAoB,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;AAChD,gBAAgB;AAChB,YAAY;AACZ,QAAQ;;AAER;AACA;AACA;AACA,QAAQ,SAAS,cAAc,GAAG;AAClC,YAAY,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,gBAAgB,EAAE,EAAE;AACpD,gBAAgB,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;AAC5C,YAAY;AACZ,QAAQ;;AAER;AACA;AACA;AACA;AACA,QAAQ,SAAS,gBAAgB,GAAG;AACpC,YAAY,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;AACrG,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,QAAQ,SAAS,WAAW,CAAC,KAAK,EAAE;AACpC,YAAY,IAAI,WAAW;;AAE3B;AACA,YAAY,IAAI;AAChB,gBAAgB,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/C,YAAY,CAAC,CAAC,OAAO,KAAK,EAAE;AAC5B,gBAAgB,OAAO,IAAI;AAC3B,YAAY;;AAEZ;AACA,YAAY,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,SAAS,IAAI,WAAW,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE;AAC9G,gBAAgB,OAAO,WAAW,CAAC,OAAO;AAC1C,YAAY;;AAEZ,YAAY,OAAO,IAAI;AACvB,QAAQ;;AAER,QAAQ,EAAE,CAAC,GAAG,GAAG,SAAS,KAAK,EAAE;AACjC,YAAY,IAAI,CAAC,KAAK,EAAE;AACxB,gBAAgB;AAChB,YAAY;;AAEZ,YAAY,IAAI,GAAG,GAAG,kBAAkB,GAAG,KAAK;AAChD,YAAY,IAAI,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AACjD,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;AAC5C,gBAAgB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACzC,YAAY;;AAEZ,YAAY,kBAAkB,EAAE;AAChC,YAAY,OAAO,KAAK;AACxB,QAAQ,CAAC;;AAET,QAAQ,EAAE,CAAC,GAAG,GAAG,SAAS,KAAK,EAAE;AACjC,YAAY,kBAAkB,EAAE;;AAEhC,YAAY,MAAM,GAAG,GAAG,kBAAkB,GAAG,KAAK,CAAC,KAAK;AACxD,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;AACzC,gBAAgB,GAAG,KAAK;AACxB;AACA,gBAAgB,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;AACrD,aAAa,CAAC;;AAEd,YAAY,IAAI;AAChB,gBAAgB,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;AAChD,YAAY,CAAC,CAAC,OAAO,KAAK,EAAE;AAC5B;AACA,gBAAgB,cAAc,EAAE;AAChC,gBAAgB,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;AAChD,YAAY;AACZ,QAAQ,CAAC;AACT,IAAI,CAAC;;AAEL,IAAI,IAAI,aAAa,GAAG,WAAW;AACnC,QAAQ,IAAI,EAAE,IAAI,YAAY,aAAa,CAAC,EAAE;AAC9C,YAAY,OAAO,IAAI,aAAa,EAAE;AACtC,QAAQ;;AAER,QAAQ,IAAI,EAAE,GAAG,IAAI;;AAErB,QAAQ,EAAE,CAAC,GAAG,GAAG,SAAS,KAAK,EAAE;AACjC,YAAY,IAAI,CAAC,KAAK,EAAE;AACxB,gBAAgB;AAChB,YAAY;;AAEZ,YAAY,IAAI,KAAK,GAAG,SAAS,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAC7D,YAAY,SAAS,CAAC,kBAAkB,GAAG,KAAK,EAAE,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC7E,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACxC,YAAY;AACZ,QAAQ,CAAC;;AAET,QAAQ,EAAE,CAAC,GAAG,GAAG,SAAS,KAAK,EAAE;AACjC,YAAY,SAAS,CAAC,kBAAkB,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;AACpG,QAAQ,CAAC;;AAET,QAAQ,EAAE,CAAC,UAAU,GAAG,SAAS,GAAG,EAAE;AACtC,YAAY,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACtD,QAAQ,CAAC;;AAET,QAAQ,IAAI,gBAAgB,GAAG,UAAU,OAAO,EAAE;AAClD,YAAY,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE;AAChC,YAAY,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAC1D,YAAY,OAAO,GAAG;AACtB,QAAQ,CAAC;;AAET,QAAQ,IAAI,SAAS,GAAG,UAAU,GAAG,EAAE;AACvC,YAAY,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG;AAChC,YAAY,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/C,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7B,gBAAgB,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;AAC3C,oBAAoB,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACtC,gBAAgB;AAChB,gBAAgB,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1C,oBAAoB,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;AAC7D,gBAAgB;AAChB,YAAY;AACZ,YAAY,OAAO,EAAE;AACrB,QAAQ,CAAC;;AAET,QAAQ,IAAI,SAAS,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE;AAC9D,YAAY,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG;AAC7C,kBAAkB,UAAU,GAAG,cAAc,CAAC,WAAW,EAAE,GAAG,IAAI;AAClE,YAAY,QAAQ,CAAC,MAAM,GAAG,MAAM;AACpC,QAAQ;AACR,IAAI,CAAC;;AAEL,IAAI,SAAS,qBAAqB,GAAG;AACrC,QAAQ,IAAI;AACZ,YAAY,OAAO,IAAI,YAAY,EAAE;AACrC,QAAQ,CAAC,CAAC,OAAO,GAAG,EAAE;AACtB,QAAQ;;AAER,QAAQ,OAAO,IAAI,aAAa,EAAE;AAClC,IAAI;;AAEJ,IAAI,SAAS,YAAY,CAAC,EAAE,EAAE;AAC9B,QAAQ,OAAO,WAAW;AAC1B,YAAY,IAAI,EAAE,CAAC,aAAa,EAAE;AAClC,gBAAgB,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxE,YAAY;AACZ,QAAQ,CAAC;AACT,IAAI;AACJ;;AAIA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;AACpD,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B;;AAEA;AACA;AACA;AACA;AACA,eAAe,YAAY,CAAC,OAAO,EAAE;AACrC,IAAI,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;AACrC,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;;AAExC,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE;AAC/E,QAAQ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;AAC3D,IAAI;;AAEJ,IAAI,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC;AACtD;;AAEA;AACA;AACA;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;AAE9C,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACrC,QAAQ,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;AACrE,IAAI;;AAEJ,IAAI,IAAI,OAAO;;AAEf,IAAI,IAAI;AACR,QAAQ,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;AAC1C,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;AACpB,QAAQ,MAAM,IAAI,KAAK,CAAC,iEAAiE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC5G,IAAI;;AAEJ,IAAI,IAAI;AACR,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAClC,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;AACpB,QAAQ,MAAM,IAAI,KAAK,CAAC,4DAA4D,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACvG,IAAI;AACJ;;AAEA;AACA;AACA;AACA,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,IAAI,IAAI,MAAM,GAAG;AACjB,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG;AAC5B,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;;AAE7B,IAAI,QAAQ,MAAM,CAAC,MAAM,GAAG,CAAC;AAC7B,QAAQ,KAAK,CAAC;AACd,YAAY;AACZ,QAAQ,KAAK,CAAC;AACd,YAAY,MAAM,IAAI,IAAI;AAC1B,YAAY;AACZ,QAAQ,KAAK,CAAC;AACd,YAAY,MAAM,IAAI,GAAG;AACzB,YAAY;AACZ,QAAQ;AACR,YAAY,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;AAClE;;AAEA,IAAI,IAAI;AACR,QAAQ,OAAO,gBAAgB,CAAC,MAAM,CAAC;AACvC,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;AACpB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,IAAI;AACJ;;AAEA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,KAAK,EAAE;AACjC,IAAI,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK;AACpE,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;;AAE7D,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAY,IAAI,GAAG,GAAG,GAAG,IAAI;AAC7B,QAAQ;;AAER,QAAQ,OAAO,GAAG,GAAG,IAAI;AACzB,IAAI,CAAC,CAAC,CAAC;AACP;;AAEA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;AACtD;;ACh1DA,MAAM,aAAa,GAAG,aAAa;AACnC,MAAM,sBAAsB,GAAG,MAAM;AACrC,EAAE,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM;AAClI,CAAC;AACD,SAAS,QAAQ,GAAG;AACpB,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AAChD;AACA,SAAS,YAAY,CAAC,aAAa,EAAE;AACrC,EAAE,IAAI;AACN,IAAI,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,EAAE,aAAa,GAAG,UAAU,CAAC,OAAO;AAC/C,IAAI,KAAK,EAAE,SAAS,GAAG,UAAU,CAAC,KAAK;AACvC,IAAI,eAAe,EAAE,qBAAqB;AAC1C,IAAI,cAAc,EAAE,oBAAoB;AACxC,IAAI,OAAO,EAAE,WAAW;AACxB,IAAI,cAAc,GAAG,MAAM;AAC3B,IAAI,GAAG;AACP,GAAG,GAAG,EAAE,GAAG,aAAa,EAAE;AAC1B,EAAE,cAAc,GAAG,sBAAsB,EAAE,GAAG,cAAc,GAAG,MAAM;AACrE,EAAE,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;AACxC,EAAE,MAAM,iBAAiB,GAAG,EAAE;AAC9B,EAAE,eAAe,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE;AACrD,IAAI,MAAM;AACV,MAAM,OAAO,EAAE,YAAY;AAC3B,MAAM,KAAK,GAAG,SAAS;AACvB,MAAM,OAAO,GAAG,aAAa;AAC7B,MAAM,OAAO;AACb,MAAM,MAAM,GAAG,EAAE;AACjB,MAAM,OAAO,GAAG,MAAM;AACtB,MAAM,eAAe,EAAE,sBAAsB;AAC7C,MAAM,cAAc,GAAG,oBAAoB,IAAI,qBAAqB;AACpE,MAAM,IAAI;AACV,MAAM,UAAU,EAAE,kBAAkB,GAAG,EAAE;AACzC,MAAM,GAAG;AACT,KAAK,GAAG,YAAY,IAAI,EAAE;AAC1B,IAAI,IAAI,YAAY,GAAG,OAAO;AAC9B,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,YAAY,GAAG,mBAAmB,CAAC,YAAY,CAAC,IAAI,OAAO;AACjE,IAAI;AACJ,IAAI,IAAI,eAAe,GAAG,OAAO,qBAAqB,KAAK,UAAU,GAAG,qBAAqB,GAAG,qBAAqB,CAAC,qBAAqB,CAAC;AAC5I,IAAI,IAAI,sBAAsB,EAAE;AAChC,MAAM,eAAe,GAAG,OAAO,sBAAsB,KAAK,UAAU,GAAG,sBAAsB,GAAG,qBAAqB,CAAC;AACtH,QAAQ,GAAG,OAAO,qBAAqB,KAAK,QAAQ,GAAG,qBAAqB,GAAG,EAAE;AACjF,QAAQ,GAAG;AACX,OAAO,CAAC;AACR,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,cAAc;AACpE,MAAM,IAAI;AACV;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM;AACtD,KAAK;AACL,IAAI,MAAM,YAAY,GAAG,YAAY;AACrC;AACA,MAAM,cAAc,KAAK,MAAM;AAC/B,MAAM,cAAc,YAAY,QAAQ,GAAG,EAAE,GAAG;AAChD,QAAQ,cAAc,EAAE;AACxB,OAAO;AACP,MAAM,WAAW;AACjB,MAAM,OAAO;AACb,MAAM,MAAM,CAAC;AACb,KAAK;AACL,IAAI,MAAM,gBAAgB,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,kBAAkB,CAAC;AAC1E,IAAI,MAAM,WAAW,GAAG;AACxB,MAAM,QAAQ,EAAE,QAAQ;AACxB,MAAM,GAAG,WAAW;AACpB,MAAM,GAAG,IAAI;AACb,MAAM,IAAI,EAAE,cAAc;AAC1B,MAAM,OAAO,EAAE;AACf,KAAK;AACL,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,OAAO;AACf,IAAI,IAAI,OAAO,GAAG,IAAI,OAAO;AAC7B,MAAM,cAAc,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;AACpF,MAAM;AACN,KAAK;AACL,IAAI,IAAI,QAAQ;AAChB,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AAC5B,MAAM,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE;AAC7B,QAAQ,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AAChC,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,gBAAgB,CAAC,MAAM,EAAE;AACjC,MAAM,EAAE,GAAG,QAAQ,EAAE;AACrB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAC9B,QAAQ,OAAO,EAAE,YAAY;AAC7B,QAAQ,KAAK;AACb,QAAQ,OAAO;AACf,QAAQ,eAAe;AACvB,QAAQ;AACR,OAAO,CAAC;AACR,MAAM,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE;AACxC,QAAQ,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,UAAU,EAAE;AAC7E,UAAU,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,SAAS,CAAC;AAC3C,YAAY,OAAO;AACnB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB,YAAY,OAAO;AACnB,YAAY;AACZ,WAAW,CAAC;AACZ,UAAU,IAAI,MAAM,EAAE;AACtB,YAAY,IAAI,MAAM,YAAY,OAAO,EAAE;AAC3C,cAAc,OAAO,GAAG,MAAM;AAC9B,YAAY,CAAC,MAAM,IAAI,MAAM,YAAY,QAAQ,EAAE;AACnD,cAAc,QAAQ,GAAG,MAAM;AAC/B,cAAc;AACd,YAAY,CAAC,MAAM;AACnB,cAAc,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC;AAC9G,YAAY;AACZ,UAAU;AACV,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,IAAI;AACV,QAAQ,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC;AACvD,MAAM,CAAC,CAAC,OAAO,MAAM,EAAE;AACvB,QAAQ,IAAI,oBAAoB,GAAG,MAAM;AACzC,QAAQ,IAAI,gBAAgB,CAAC,MAAM,EAAE;AACrC,UAAU,KAAK,IAAI,CAAC,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACjE,YAAY,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,EAAE;AAC/E,cAAc,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;AAC7C,gBAAgB,OAAO;AACvB,gBAAgB,KAAK,EAAE,oBAAoB;AAC3C,gBAAgB,UAAU;AAC1B,gBAAgB,MAAM;AACtB,gBAAgB,OAAO;AACvB,gBAAgB;AAChB,eAAe,CAAC;AAChB,cAAc,IAAI,MAAM,EAAE;AAC1B,gBAAgB,IAAI,MAAM,YAAY,QAAQ,EAAE;AAChD,kBAAkB,oBAAoB,GAAG,MAAM;AAC/C,kBAAkB,QAAQ,GAAG,MAAM;AACnC,kBAAkB;AAClB,gBAAgB;AAChB,gBAAgB,IAAI,MAAM,YAAY,KAAK,EAAE;AAC7C,kBAAkB,oBAAoB,GAAG,MAAM;AAC/C,kBAAkB;AAClB,gBAAgB;AAChB,gBAAgB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC;AAC3F,cAAc;AACd,YAAY;AACZ,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,oBAAoB,EAAE;AAClC,UAAU,MAAM,oBAAoB;AACpC,QAAQ;AACR,MAAM;AACN,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE;AACnC,QAAQ,KAAK,IAAI,CAAC,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/D,UAAU,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;AACvC,UAAU,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU,EAAE;AAChF,YAAY,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,UAAU,CAAC;AAC9C,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,UAAU;AACxB,cAAc,MAAM;AACpB,cAAc,OAAO;AACrB,cAAc;AACd,aAAa,CAAC;AACd,YAAY,IAAI,MAAM,EAAE;AACxB,cAAc,IAAI,EAAE,MAAM,YAAY,QAAQ,CAAC,EAAE;AACjD,gBAAgB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC;AACrG,cAAc;AACd,cAAc,QAAQ,GAAG,MAAM;AAC/B,YAAY;AACZ,UAAU;AACV,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,GAAG,EAAE;AAChH,MAAM,OAAO,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;AACnF,IAAI;AACJ,IAAI,IAAI,QAAQ,CAAC,EAAE,EAAE;AACrB,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE;AAChC,QAAQ,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE;AAChD,MAAM;AACN,MAAM,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE;AAC1D,IAAI;AACJ,IAAI,IAAI,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACrC,IAAI,IAAI;AACR,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/B,IAAI,CAAC,CAAC,MAAM;AACZ,IAAI;AACJ,IAAI,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC9B,EAAE;AACF,EAAE,OAAO;AACT,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AAC/B,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;AACtE,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE;AACnB,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACvD,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE;AACnB,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACvD,IAAI,CAAC;AACL;AACA,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;AACpB,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACxD,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE;AACtB,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC1D,IAAI,CAAC;AACL;AACA,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE;AACvB,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC3D,IAAI,CAAC;AACL;AACA,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;AACpB,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACxD,IAAI,CAAC;AACL;AACA,IAAI,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;AACrB,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACzD,IAAI,CAAC;AACL;AACA,IAAI,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;AACrB,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACzD,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,GAAG,UAAU,EAAE;AACvB,MAAM,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;AAClC,QAAQ,IAAI,CAAC,CAAC,EAAE;AAChB,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,EAAE,WAAW,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE;AACjG,UAAU,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC;AACjH,QAAQ;AACR,QAAQ,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,MAAM;AACN,IAAI,CAAC;AACL;AACA,IAAI,KAAK,CAAC,GAAG,UAAU,EAAE;AACzB,MAAM,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;AAClC,QAAQ,MAAM,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,KAAK,EAAE,EAAE;AACtB,UAAU,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACxC,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,GAAG;AACH;AAuDA,SAAS,uBAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;AACvD,EAAE,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE;AAC1C,IAAI,OAAO,EAAE;AACb,EAAE;AACF,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACjC,IAAI,MAAM,IAAI,KAAK;AACnB,MAAM;AACN,KAAK;AACL,EAAE;AACF,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzF;AACA,SAAS,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;AACpD,EAAE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3C,IAAI,OAAO,EAAE;AACb,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,MAAM,EAAE,GAAG;AACf,IAAI,KAAK,EAAE,GAAG;AACd,IAAI,MAAM,EAAE;AACZ,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG;AACzB,EAAE,IAAI,OAAO,CAAC,KAAK,KAAK,YAAY,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;AACnE,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AAC3B,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9F,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC,IAAI,QAAQ,OAAO,CAAC,KAAK;AACzB,MAAM,KAAK,MAAM,EAAE;AACnB,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAClC,MAAM;AACN,MAAM,KAAK,OAAO,EAAE;AACpB,QAAQ,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3B,MAAM;AACN,MAAM,KAAK,QAAQ,EAAE;AACrB,QAAQ,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACnC,MAAM;AACN,MAAM,SAAS;AACf,QAAQ,OAAO,MAAM;AACrB,MAAM;AACN;AACA,EAAE;AACF,EAAE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACzB,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,KAAK,YAAY,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1E,IAAI,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACtE,EAAE;AACF,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACnC,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK;AAC9F;AACA,SAAS,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;AACnD,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC7B,IAAI,OAAO,EAAE;AACb,EAAE;AACF,EAAE,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;AACjC,IAAI,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG;AAClG,IAAI,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC;AAClH,IAAI,QAAQ,OAAO,CAAC,KAAK;AACzB,MAAM,KAAK,QAAQ,EAAE;AACrB,QAAQ,OAAO,KAAK;AACpB,MAAM;AACN,MAAM,KAAK,OAAO,EAAE;AACpB,QAAQ,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1B,MAAM;AACN,MAAM,KAAK,QAAQ,EAAE;AACrB,QAAQ,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAClC,MAAM;AACN;AACA;AACA,MAAM,SAAS;AACf,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACjC,MAAM;AACN;AACA,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG;AAC/E,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACzB,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,EAAE;AACjE,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC7E,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1H;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE;AACxC,EAAE,OAAO,SAAS,eAAe,CAAC,WAAW,EAAE;AAC/C,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACxD,MAAM,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AACtC,QAAQ,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC;AACvC,QAAQ,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE;AAChD,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAClC,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,YAAY;AACZ,UAAU;AACV,UAAU,MAAM,CAAC,IAAI;AACrB,YAAY,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE;AAC7C,cAAc,KAAK,EAAE,MAAM;AAC3B,cAAc,OAAO,EAAE,IAAI;AAC3B,cAAc,GAAG,OAAO,EAAE,KAAK;AAC/B,cAAc,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI;AACvD,aAAa;AACb,WAAW;AACX,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,UAAU,MAAM,CAAC,IAAI;AACrB,YAAY,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE;AAC9C,cAAc,KAAK,EAAE,YAAY;AACjC,cAAc,OAAO,EAAE,IAAI;AAC3B,cAAc,GAAG,OAAO,EAAE,MAAM;AAChC,cAAc,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI;AACvD,aAAa;AACb,WAAW;AACX,UAAU;AACV,QAAQ;AACR,QAAQ,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAClE,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3B,EAAE,CAAC;AACH;AACA,SAAS,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE;AACrD,EAAE,IAAI,OAAO,GAAG,QAAQ;AACxB,EAAE,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE;AAC3D,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACnD,IAAI,IAAI,OAAO,GAAG,KAAK;AACvB,IAAI,IAAI,KAAK,GAAG,QAAQ;AACxB,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B,MAAM,OAAO,GAAG,IAAI;AACpB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC9B,MAAM,KAAK,GAAG,OAAO;AACrB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACrC,MAAM,KAAK,GAAG,QAAQ;AACtB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9B,IAAI;AACJ,IAAI,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;AACjF,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;AAClC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAC5F,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7F,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,KAAK,KAAK,QAAQ,EAAE;AAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAClF,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,GAAG,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACrH,EAAE;AACF,EAAE,OAAO,OAAO;AAChB;AACA,SAAS,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE;AAC9C,EAAE,IAAI,IAAI,YAAY,QAAQ,EAAE;AAChC,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,IAAI,OAAO,EAAE;AACf,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,YAAY,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC;AACzK,IAAI,IAAI,WAAW,KAAK,mCAAmC,EAAE;AAC7D,MAAM,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;AACjD,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC7B;AACA,SAAS,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC3C,EAAE,IAAI,QAAQ,GAAG,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChD,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE;AAC5B,IAAI,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AACnE,EAAE;AACF,EAAE,IAAI,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;AAClE,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC9B,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAChC,EAAE;AACF,EAAE,IAAI,MAAM,EAAE;AACd,IAAI,QAAQ,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC5B,EAAE;AACF,EAAE,OAAO,QAAQ;AACjB;AACA,SAAS,YAAY,CAAC,GAAG,UAAU,EAAE;AACrC,EAAE,MAAM,YAAY,GAAG,IAAI,OAAO,EAAE;AACpC,EAAE,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;AAC9B,IAAI,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACrC,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,CAAC,YAAY,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3E,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE;AACnC,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;AACtB,QAAQ,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACnC,QAAQ,KAAK,MAAM,EAAE,IAAI,CAAC,EAAE;AAC5B,UAAU,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;AACpC,QAAQ;AACR,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE;AAC/B,QAAQ,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,YAAY;AACrB;AACA,SAAS,mBAAmB,CAAC,GAAG,EAAE;AAClC,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACzB,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3C,EAAE;AACF,EAAE,OAAO,GAAG;AACZ;;ACzeM,SAAU,iBAAiB,CAAC,SAA2B,EAAA;IAC3D,OAAO;AACL;;AAEG;QACH,KAAK,GAAA;AACH,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;QACnC,CAAC;AAED;;AAEG;AACH,QAAA,QAAQ,CAAC,MAAuB,EAAA;AAC9B,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE;AAC7B,gBAAA,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1B,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,WAAW,CAAC,EAAU,EAAA;AACpB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE;AAClC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,UAAU,CAAC,IAAoB,EAAA;AAC7B,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC9B,IAAI;AACL,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;QACH,UAAU,CAAC,EAAU,EAAE,IAAmB,EAAA;AACxC,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,aAAa,EAAE;AACpC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;gBACxB,IAAI;AACL,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,UAAU,CAAC,EAAU,EAAA;AACnB,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE;AACrC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,aAAa,CAAC,EAAU,EAAA;AACtB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,oBAAoB,EAAE;AACzC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,mBAAmB,CAAC,EAAU,EAAA;AAC5B,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,0BAA0B,EAAE;AAC/C,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,mBAAmB,CAAC,EAAU,EAAA;AAC5B,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,0BAA0B,EAAE;AAC/C,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,QAAQ,CAAC,EAAU,EAAA;AACjB,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACxC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;KACF;AACH;;ACvGM,SAAU,wBAAwB,CAAC,SAA2B,EAAA;IAClE,OAAO;QACL,MAAM,GAAA;AACJ,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;QACvC,CAAC;AACD,QAAA,OAAO,CAAC,EAAU,EAAA;AAChB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC1E,CAAC;;AAGD,QAAA,SAAS,CAAC,aAAqB,EAAA;AAC7B,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,sCAAsC,EAAE;AAC3D,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE;AACpC,aAAA,CAAC;QACJ,CAAC;QACD,QAAQ,CAAC,aAAqB,EAAE,IAA+B,EAAA;AAC7D,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,sCAAsC,EAAE;AAC5D,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE;AACnC,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;QACD,WAAW,CAAC,aAAqB,EAAE,OAAe,EAAA;AAChD,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,gDAAgD,EAAE;gBACxE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;AAC7C,aAAA,CAAC;QACJ,CAAC;AACD,QAAA,WAAW,CAAC,aAAqB,EAAE,OAAe,EAAE,IAA+B,EAAA;AACjF,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,gDAAgD,EAAE;gBACvE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;AAC5C,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;;QAED,aAAa,CAAC,aAAqB,EAAE,OAAwC,EAAA;AAC3E,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,0CAA0C,EAAE;AAC/D,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,EAAE,aAAa,EAAE;AACvB,oBAAA,KAAK,EAAE,OAAO;AACf,iBAAA;AACF,aAAA,CAAC;QACJ,CAAC;QACD,gBAAgB,CAAC,aAAqB,EAAE,WAAmB,EAAA;AACzD,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,wDAAwD,EAAE;gBAC7E,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE;AACjD,aAAA,CAAC;QACJ,CAAC;QACD,YAAY,CAAC,aAAqB,EAAE,IAAmC,EAAA;AACrE,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,0CAA0C,EAAE;AAChE,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE;AACnC,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AACD,QAAA,eAAe,CAAC,aAAqB,EAAE,WAAmB,EAAE,IAAmC,EAAA;AAC7F,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,wDAAwD,EAAE;gBAC/E,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE;AAChD,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;QACD,eAAe,CAAC,aAAqB,EAAE,WAAmB,EAAA;AACxD,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,wDAAwD,EAAE;gBAChF,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE;AACjD,aAAA,CAAC;QACJ,CAAC;;QAGD,QAAQ,CACN,aAAqB,EACrB,OAAkC,EAAA;AAElC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,qCAAqC,EAAE;AAC1D,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,EAAE,aAAa,EAAE;AACvB,oBAAA,KAAK,EAAE,OAAO;AACf,iBAAA;AACF,aAAA,CAAC;QACJ,CAAC;;AAGD,QAAA,gBAAgB,CAAC,aAAqB,EAAA;AACpC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,6CAA6C,EAAE;AAClE,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE;AACpC,aAAA,CAAC;QACJ,CAAC;QACD,mBAAmB,CAAC,aAAqB,EAAE,cAAsB,EAAA;AAC/D,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,8DAA8D,EAAE;gBACnF,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE;AACpD,aAAA,CAAC;QACJ,CAAC;QACD,uBAAuB,CAAC,aAAqB,EAAE,MAAc,EAAA;AAC3D,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,2DAA2D,EAAE;gBAChF,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE;AAC5C,aAAA,CAAC;QACJ,CAAC;QACD,YAAY,CAAC,aAAqB,EAAE,IAAsC,EAAA;AACxE,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,6CAA6C,EAAE;AACnE,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE;AACnC,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AACD,QAAA,kBAAkB,CAAC,aAAqB,EAAE,cAAsB,EAAE,IAAsC,EAAA;AACtG,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,8DAA8D,EAAE;gBACrF,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE;AACnD,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AACD,QAAA,qBAAqB,CAAC,aAAqB,EAAE,cAAsB,EAAE,IAAwB,EAAA;AAC3F,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,wEAAwE,EAAE;gBAC/F,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE;AACnD,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;QACD,kBAAkB,CAAC,aAAqB,EAAE,cAAsB,EAAA;AAC9D,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,8DAA8D,EAAE;gBACtF,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE;AACpD,aAAA,CAAC;QACJ,CAAC;AACD,QAAA,aAAa,CAAC,aAAqB,EAAA;AACjC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,4CAA4C,EAAE;AACjE,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE;AACpC,aAAA,CAAC;QACJ,CAAC;KACF;AACH;;ACzHM,SAAU,mBAAmB,CAAC,SAA2B,EAAA;IAC7D,OAAO;AACL;;;AAGG;AACH,QAAA,YAAY,CAAC,MAA2B,EAAA;AACtC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,oBAAoB,EAAE;AACzC,gBAAA,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1B,aAAA,CAAC;QACJ,CAAC;AAED;;;AAGG;AACH,QAAA,yBAAyB,CAAC,EAAU,EAAA;AAClC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,yBAAyB,EAAE;AAC9C,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;;AAGG;QACH,gBAAgB,GAAA;AACd,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC;QAClD,CAAC;AAED;;;AAGG;AACH,QAAA,6BAA6B,CAAC,EAAU,EAAA;AACtC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,+BAA+B,EAAE;AACpD,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;;AAGG;QACH,eAAe,GAAA;AACb,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC;QAChD,CAAC;AAED;;;AAGG;AACH,QAAA,4BAA4B,CAAC,EAAU,EAAA;AACrC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,6BAA6B,EAAE;AAClD,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;;AAGG;AACH,QAAA,mBAAmB,CAAC,MAAkC,EAAA;AACpD,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,4BAA4B,EAAE;AACjD,gBAAA,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1B,aAAA,CAAC;QACJ,CAAC;AAED;;;AAGG;QACH,gCAAgC,CAAC,EAAU,EAAE,MAAkC,EAAA;AAC7E,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,iCAAiC,EAAE;AACtD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,EAAE,EAAE,EAAE;AACZ,oBAAA,KAAK,EAAE,MAAM;AACd,iBAAA;AACF,aAAA,CAAC;QACJ,CAAC;AAED;;;AAGG;AACH,QAAA,cAAc,CAAC,MAA4B,EAAA;AACzC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,uBAAuB,EAAE;AAC5C,gBAAA,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1B,aAAA,CAAC;QACJ,CAAC;AAED;;;AAGG;QACH,2BAA2B,CAAC,EAAU,EAAE,MAA4B,EAAA;AAClE,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,4BAA4B,EAAE;AACjD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,EAAE,EAAE,EAAE;AACZ,oBAAA,KAAK,EAAE,MAAM;AACd,iBAAA;AACF,aAAA,CAAC;QACJ,CAAC;KACF;AACH;;AC3GM,SAAU,sBAAsB,CAAC,SAA2B,EAAA;IAChE,OAAO;AACL;;AAEG;QACH,MAAM,GAAA;AACJ,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;QACrC,CAAC;AAED;;AAEG;AACH,QAAA,OAAO,CAAC,EAAU,EAAA;AAChB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,kBAAkB,EAAE;AACvC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;QACH,gBAAgB,CAAC,aAAqB,EAAE,MAAyC,EAAA;AAC/E,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,8BAA8B,EAAE;AACnD,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE;AAC3B,oBAAA,KAAK,EAAE,MAAM;AACd,iBAAA;AACF,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,MAAM,CAAC,IAAwB,EAAA;AAC7B,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE;AACnC,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;QACH,MAAM,CAAC,EAAU,EAAE,IAAwB,EAAA;AACzC,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,kBAAkB,EAAE;AACzC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACxB,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,MAAM,CAAC,EAAU,EAAA;AACf,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE;AAC1C,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;KACF;AACH;;ACvDM,SAAU,yBAAyB,CAAC,SAA2B,EAAA;IACnE,OAAO;AACL;;AAEG;AACH,QAAA,MAAM,CAAC,MAA+B,EAAA;AACpC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAAE;AACrC,gBAAA,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1B,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,OAAO,CAAC,EAAU,EAAA;AAChB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,qBAAqB,EAAE;AAC1C,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,MAAM,CAAC,IAA2B,EAAA;AAChC,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBACtC,IAAI;AACL,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;QACH,MAAM,CAAC,EAAU,EAAE,IAA2B,EAAA;AAC5C,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,qBAAqB,EAAE;AAC5C,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;gBACxB,IAAI;AACL,aAAA,CAAC;QACJ,CAAC;AAED;;;AAGG;AACH,QAAA,MAAM,CAAC,EAAU,EAAA;AACf,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC7C,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;KACF;AACH;;AC1DM,SAAU,kBAAkB,CAAC,SAA2B,EAAA;IAC5D,OAAO;AACL;;AAEG;QACH,MAAM,GAAA;AACJ,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;QACjC,CAAC;AAED;;AAEG;AACH,QAAA,OAAO,CAAC,EAAU,EAAA;AAChB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE;AACnC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,MAAM,CAAC,IAAoB,EAAA;AACzB,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE;AAC/B,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;QACH,MAAM,CAAC,EAAU,EAAE,IAAoB,EAAA;AACrC,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,cAAc,EAAE;AACrC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACxB,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,MAAM,CAAC,EAAU,EAAA;AACf,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE;AACtC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;KACF;AACH;;AC9CM,SAAU,kBAAkB,CAAC,SAA2B,EAAA;IAC5D,OAAO;AACL;;AAEG;QACH,MAAM,GAAA;AACJ,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;QACjC,CAAC;AAED;;AAEG;AACH,QAAA,OAAO,CAAC,EAAU,EAAA;AAChB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE;AACnC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,MAAM,CAAC,IAAoB,EAAA;AACzB,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE;AAC/B,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;QACH,MAAM,CAAC,EAAU,EAAE,IAAoB,EAAA;AACrC,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,cAAc,EAAE;AACrC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACxB,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,MAAM,CAAC,EAAU,EAAA;AACf,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE;AACtC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;KACF;AACH;;AC7CM,SAAU,qBAAqB,CAAC,SAA2B,EAAA;IAC/D,OAAO;;QAEL,MAAM,GAAA;AACJ,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;QACpC,CAAC;;AAGD,QAAA,OAAO,CAAC,EAAU,EAAA;AAChB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,iBAAiB,EAAE;AACtC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;;AAGD,QAAA,MAAM,CAAC,IAAuB,EAAA;AAC5B,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE;AAClC,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;;QAGD,MAAM,CAAC,EAAU,EAAE,IAAuB,EAAA;AACxC,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,iBAAiB,EAAE;AACxC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACxB,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;;AAGD,QAAA,MAAM,CAAC,EAAU,EAAA;AACf,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE;AACzC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;;AAGD,QAAA,QAAQ,CAAC,EAAU,EAAA;AACjB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,uBAAuB,EAAE;AAC5C,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;;AAGD,QAAA,YAAY,CAAC,IAA6B,EAAA;AACxC,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACzC,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;;QAGD,cAAc,CAAC,UAAkB,EAAE,MAAc,EAAA;AAC/C,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,wCAAwC,EAAE;gBAChE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;AACzC,aAAA,CAAC;QACJ,CAAC;KACF;AACH;;ACnDM,SAAU,sBAAsB,CAAC,OAAe,EAAA;AACpD,IAAA,OAAO,YAAY,CAAQ,EAAE,OAAO,EAAE,CAAC;AACzC;AAaM,SAAU,qBAAqB,CAAC,SAA2B,EAAA;IAC/D,OAAO;AACL,QAAA,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC;AAClC,QAAA,WAAW,EAAE,wBAAwB,CAAC,SAAS,CAAC;AAChD,QAAA,MAAM,EAAE,mBAAmB,CAAC,SAAS,CAAC;AACtC,QAAA,SAAS,EAAE,sBAAsB,CAAC,SAAS,CAAC;AAC5C,QAAA,YAAY,EAAE,yBAAyB,CAAC,SAAS,CAAC;AAClD,QAAA,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC;AACpC,QAAA,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC;AACpC,QAAA,QAAQ,EAAE,qBAAqB,CAAC,SAAS,CAAC;KAC3C;AACH;;ACvCYI;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AAC/B,IAAA,YAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EANWA,oBAAY,KAAZA,oBAAY,GAAA,EAAA,CAAA,CAAA;;ACyBxB;AACA;AACA;AACA;AACA,IAAI,cAAoC;MAE3B,mBAAmB,GAA0C,CAAC,EACzE,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,UAAU,EACV,WAAW,EACX,gBAAgB,GACjB,KAAI;;IAEH,IAAI,CAAC,cAAc,EAAE;AACnB,QAAA,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC;AAC3E,QAAA,cAAc,GAAG,IAAI,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;IACtE;;AAGA,IAAA,MAAM,mBAAmB,GAAGC,aAAO,CACjC,OAAO;AACL,QAAA,GAAG,WAAW;QACd,aAAa,EAAE,IAAI;AACpB,KAAA,CAAC,EACF,CAAC,WAAW,CAAC,CACd;AAED,IAAA,QACEP,cAAA,CAAC,qBAAqB,EAAA,EACpB,UAAU,EAAE,cAAc,EAC1B,WAAW,EAAE,mBAAmB,EAAA,QAAA,EAEhCA,eAAC,gBAAgB,EAAA,EACf,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB,EAAA,QAAA,EAEjC,QAAQ,EAAA,CACQ,EAAA,CACG;AAE5B;AAEA,MAAM,eAAe,GAAGG,mBAAa,CAAsB;AACzD,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,eAAe,EAAE,cAAa,CAAC;AAC/B,IAAA,OAAO,EAAE,MAAM,IAAI;AACnB,IAAA,SAAS,EAAE,MAAM,IAAI;AACrB,IAAA,SAAS,EAAE,MAAM,KAAK;AACtB,IAAA,YAAY,EAAE,MAAM,KAAK;AACzB,IAAA,aAAa,EAAE,MAAM,KAAK;AAC1B,IAAA,eAAe,EAAE,MAAM,KAAK;AAC5B,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,WAAW,EAAE,SAAS;AACvB,CAAA,CAAC;AAEF,MAAM,gBAAgB,GAAoC,CAAC,EACzD,UAAU,GAAG,gCAAgC,EAC7C,gBAAgB,GAAG,KAAK,EACxB,QAAQ,GACT,KAAI;IACH,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAGK,cAAQ,CAAC,KAAK,CAAC;IACzD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAGA,cAAQ,CAAqB,IAAI,CAAC;IACxE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE;AAE/C,IAAA,MAAM,SAAS,GAAGD,aAAO,CAAmB,MAAK;AAC/C,QAAA,OAAO,sBAAsB,CAAC,UAAU,CAAC;AAC3C,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAEhB,IAAA,MAAM,QAAQ,GAAGA,aAAO,CAAkB,MAAK;AAC7C,QAAA,OAAO,qBAAqB,CAAC,SAAS,CAAC;AACzC,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAEfE,eAAS,CAAC,MAAK;AACb,QAAA,IAAI,QAAQ,EAAE,KAAK,EAAE;YACnB,SAAS,CAAC,GAAG,CAAC;gBACZ,SAAS,CAAC,EAAE,OAAO,EAAE,EAAA;AACnB,oBAAA,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAA,OAAA,EAAU,QAAQ,CAAC,KAAK,CAAA,CAAE,CAAC;AAChE,oBAAA,OAAO,OAAO;gBAChB,CAAC;AACF,aAAA,CAAC;QACJ;IACF,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAEhCA,eAAS,CAAC,MAAK;QACb,gBAAgB,CAAC,WAAW,CAAC;AAC/B,IAAA,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IAEjBA,eAAS,CAAC,MAAK;;AAEb,QAAA,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,KAAK;AACrC,IAAA,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAEpB,IAAA,MAAM,eAAe,GAAGC,iBAAW,CAAC,MAAmB;AACrD,QAAA,MAAM,aAAa,GAAG,QAAQ,EAAE,aAAa,IAAI,EAAE;QAEnD,OAAO;AACL,YAAA,KAAK,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE;AACjC,YAAA,IAAI,EAAE,aAAa,EAAE,UAAU,IAAI,EAAE;AACrC,YAAA,QAAQ,EAAE,aAAa,EAAE,WAAW,IAAI,EAAE;SAC3C;AACH,IAAA,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAE7BD,eAAS,CAAC,MAAK;AACb,QAAA,MAAM,aAAa,GAAG,YAAW;YAC/B,IAAI,WAAW,IAAI,QAAQ,EAAE,aAAa,IAAI,QAAQ,EAAE,KAAK,EAAE;gBAC7D,IAAI,gBAAgB,EAAE;AACpB,oBAAA,MAAM,WAAW,GAAgB;wBAC/B,YAAY,EAAE,eAAe,EAAE;qBACjB;AAChB,oBAAA,cAAc,CAAC,EAAE,GAAG,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC;oBACpE;gBACF;AAEA,gBAAA,IAAI;oBACF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;AAC5C,oBAAA,IAAI,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;AACxB,wBAAA,MAAM,WAAW,GAAgB;AAC/B,4BAAA,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI;4BACrB,YAAY,EAAE,eAAe,EAAE;yBAChC;wBACD,cAAc,CAAC,WAAW,CAAC;oBAC7B;gBACF;gBAAE,OAAO,KAAK,EAAE;AACd,oBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC;gBACnD;YACF;AAAO,iBAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE;gBACnC,cAAc,CAAC,IAAI,CAAC;YACtB;AACF,QAAA,CAAC;AAED,QAAA,aAAa,EAAE;AACjB,IAAA,CAAC,EAAE;QACD,WAAW;AACX,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,QAAQ,EAAE,KAAK;QACf,eAAe;QACf,QAAQ;QACR,gBAAgB;AACjB,KAAA,CAAC;AAEF,IAAA,MAAM,eAAe,GAAGC,iBAAW,CAAC,YAAW;AAC7C,QAAA,IAAI,QAAQ,EAAE,aAAa,EAAE;YAC3B,IAAI,gBAAgB,EAAE;AACpB,gBAAA,MAAM,WAAW,GAAgB;oBAC/B,YAAY,EAAE,eAAe,EAAE;iBACjB;gBAChB,cAAc,CAAC,WAAW,CAAC;gBAC3B;YACF;AAEA,YAAA,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;AAC5C,gBAAA,IAAI,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;AACxB,oBAAA,MAAM,WAAW,GAAgB;AAC/B,wBAAA,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI;wBACrB,YAAY,EAAE,eAAe,EAAE;qBAChC;oBACD,cAAc,CAAC,WAAW,CAAC;gBAC7B;YACF;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC;YACrD;QACF;AACF,IAAA,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAE1E,MAAM,OAAO,GAAG,MAAK;QACnB,cAAc,CAAC,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE;AACpB,IAAA,CAAC;IAED,MAAM,eAAe,GAAG,MAAK;AAC3B,QAAA,QACE,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa;AAEzE,IAAA,CAAC;AAED,IAAA,MAAM,SAAS,GAAG,CAAC,QAAgB,KAAI;QACrC,IAAI,QAAQ,EAAE,YAAY,CAACJ,oBAAY,CAAC,aAAa,CAAC,EAAE;AACtD,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IACE,WAAW,EAAE,wBAAwB,EAAE,IAAI,CACzC,CAAC,YAAY,KAAK,YAAY,CAAC,aAAa,KAAK,QAAQ,CAC1D,EACD;AACA,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,KAAK;AACd,IAAA,CAAC;AAED,IAAA,QACEN,cAAA,CAAC,eAAe,CAAC,QAAQ,EAAA,EACvB,KAAK,EAAE;YACL,aAAa;AACb,YAAA,IAAI,EAAE,WAAW;YACjB,eAAe;YACf,OAAO;YACP,eAAe;YACf,SAAS;YACT,SAAS,EAAE,QAAQ,CAAC,KAAK;YACzB,YAAY,EAAE,QAAQ,EAAE,YAAY;YACpC,aAAa,EAAE,QAAQ,CAAC,eAAe;YACvC,WAAW,EAAE,QAAQ,EAAE,KAAK;YAC5B,SAAS;YACT,QAAQ;SACT,EAAA,QAAA,EAEA,QAAQ,EAAA,CACgB;AAE/B,CAAC;AAQM,MAAM,cAAc,GAAG,MAAMK,gBAAU,CAAC,eAAe;;AC5P9D;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,WAAW,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE;AAC3F,MAAM,WAAW,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO;AAC9C,EAAE,uBAAuB;AACzB,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW;AAC3D,CAAC;AACD,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK;AACjC,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;AACvC,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC;AACD,MAAM,YAAY,GAAG,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,KAAK;AACjF,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK;AAC5F,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACnB,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;AAC/B,EAAE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC5B,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE;AACzE,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,EAAE;AACF,CAAC;;ACzBD;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,iBAAiB,GAAG;AACxB,EAAE,KAAK,EAAE,4BAA4B;AACrC,EAAE,KAAK,EAAE,EAAE;AACX,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,OAAO,EAAE,WAAW;AACtB,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,MAAM,EAAE,cAAc;AACxB,EAAE,WAAW,EAAE,CAAC;AAChB,EAAE,aAAa,EAAE,OAAO;AACxB,EAAE,cAAc,EAAE;AAClB,CAAC;;ACjBD;AACA;AACA;AACA;AACA;AACA;;;AAMA,MAAM,IAAI,GAAGM,gBAAU;AACvB,EAAE,CAAC;AACH,IAAI,KAAK,GAAG,cAAc;AAC1B,IAAI,IAAI,GAAG,EAAE;AACb,IAAI,WAAW,GAAG,CAAC;AACnB,IAAI,mBAAmB;AACvB,IAAI,SAAS,GAAG,EAAE;AAClB,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,GAAG;AACP,GAAG,EAAE,GAAG,KAAKC,mBAAa;AAC1B,IAAI,KAAK;AACT,IAAI;AACJ,MAAM,GAAG;AACT,MAAM,GAAG,iBAAiB;AAC1B,MAAM,KAAK,EAAE,IAAI;AACjB,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,WAAW,EAAE,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW;AAC9F,MAAM,SAAS,EAAE,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC;AAClD,MAAM,GAAG,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE;AACrE,MAAM,GAAG;AACT,KAAK;AACL,IAAI;AACJ,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAKA,mBAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAClE,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ;AACvD;AACA;AACA,CAAC;;ACvCD;AACA;AACA;AACA;AACA;AACA;;;AAMA,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK;AACjD,EAAE,MAAM,SAAS,GAAGD,gBAAU;AAC9B,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAKC,mBAAa,CAAC,IAAI,EAAE;AAC1D,MAAM,GAAG;AACT,MAAM,QAAQ;AACd,MAAM,SAAS,EAAE,YAAY;AAC7B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC5B,QAAQ;AACR,OAAO;AACP,MAAM,GAAG;AACT,KAAK;AACL,GAAG;AACH,EAAE,SAAS,CAAC,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC;AAChD,EAAE,OAAO,SAAS;AAClB,CAAC;;AC1BD;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,6BAA6B,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;AAClF,MAAM,YAAY,GAAG,gBAAgB,CAAC,eAAe,EAAE,UAAU,CAAC;;ACVlE,MAAM,oBAAoB,GAAG,GAAG;AAChC,MAAM,qBAAqB,GAAG,MAAM,IAAI;AACxC,EAAE,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC;AACzC,EAAE,MAAM;AACR,IAAI,sBAAsB;AAC1B,IAAI;AACJ,GAAG,GAAG,MAAM;AACZ,EAAE,MAAM,eAAe,GAAG,SAAS,IAAI;AACvC,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC;AAC5D;AACA,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACzD,MAAM,UAAU,CAAC,KAAK,EAAE;AACxB,IAAI;AACJ,IAAI,OAAO,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,8BAA8B,CAAC,SAAS,CAAC;AAC/F,EAAE,CAAC;AACH,EAAE,MAAM,2BAA2B,GAAG,CAAC,YAAY,EAAE,kBAAkB,KAAK;AAC5E,IAAI,MAAM,SAAS,GAAG,sBAAsB,CAAC,YAAY,CAAC,IAAI,EAAE;AAChE,IAAI,IAAI,kBAAkB,IAAI,8BAA8B,CAAC,YAAY,CAAC,EAAE;AAC5E,MAAM,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,8BAA8B,CAAC,YAAY,CAAC,CAAC;AAC5E,IAAI;AACJ,IAAI,OAAO,SAAS;AACpB,EAAE,CAAC;AACH,EAAE,OAAO;AACT,IAAI,eAAe;AACnB,IAAI;AACJ,GAAG;AACH,CAAC;AACD,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,eAAe,KAAK;AAC3D,EAAE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,IAAI,OAAO,eAAe,CAAC,YAAY;AACvC,EAAE;AACF,EAAE,MAAM,gBAAgB,GAAG,UAAU,CAAC,CAAC,CAAC;AACxC,EAAE,MAAM,mBAAmB,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAC5E,EAAE,MAAM,2BAA2B,GAAG,mBAAmB,GAAG,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,GAAG,SAAS;AACnI,EAAE,IAAI,2BAA2B,EAAE;AACnC,IAAI,OAAO,2BAA2B;AACtC,EAAE;AACF,EAAE,IAAI,eAAe,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/C,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC;AACzD,EAAE,OAAO,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI;AACJ,GAAG,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY;AAC3C,CAAC;AACD,MAAM,sBAAsB,GAAG,YAAY;AAC3C,MAAM,8BAA8B,GAAG,SAAS,IAAI;AACpD,EAAE,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC9C,IAAI,MAAM,0BAA0B,GAAG,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAChF,IAAI,MAAM,QAAQ,GAAG,0BAA0B,EAAE,SAAS,CAAC,CAAC,EAAE,0BAA0B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtG,IAAI,IAAI,QAAQ,EAAE;AAClB;AACA,MAAM,OAAO,aAAa,GAAG,QAAQ;AACrC,IAAI;AACJ,EAAE;AACF,CAAC;AACD;AACA;AACA;AACA,MAAM,cAAc,GAAG,MAAM,IAAI;AACjC,EAAE,MAAM;AACR,IAAI,KAAK;AACT,IAAI;AACJ,GAAG,GAAG,MAAM;AACZ,EAAE,MAAM,QAAQ,GAAG;AACnB,IAAI,QAAQ,EAAE,IAAI,GAAG,EAAE;AACvB,IAAI,UAAU,EAAE;AAChB,GAAG;AACH,EAAE,KAAK,MAAM,YAAY,IAAI,WAAW,EAAE;AAC1C,IAAI,yBAAyB,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC;AACvF,EAAE;AACF,EAAE,OAAO,QAAQ;AACjB,CAAC;AACD,MAAM,yBAAyB,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,KAAK;AACxF,EAAE,UAAU,CAAC,OAAO,CAAC,eAAe,IAAI;AACxC,IAAI,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;AAC7C,MAAM,MAAM,qBAAqB,GAAG,eAAe,KAAK,EAAE,GAAG,eAAe,GAAG,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC;AACxH,MAAM,qBAAqB,CAAC,YAAY,GAAG,YAAY;AACvD,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;AAC/C,MAAM,IAAI,aAAa,CAAC,eAAe,CAAC,EAAE;AAC1C,QAAQ,yBAAyB,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,CAAC;AAC/F,QAAQ;AACR,MAAM;AACN,MAAM,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC;AACtC,QAAQ,SAAS,EAAE,eAAe;AAClC,QAAQ;AACR,OAAO,CAAC;AACR,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK;AACnE,MAAM,yBAAyB,CAAC,UAAU,EAAE,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC;AAC/F,IAAI,CAAC,CAAC;AACN,EAAE,CAAC,CAAC;AACJ,CAAC;AACD,MAAM,OAAO,GAAG,CAAC,eAAe,EAAE,IAAI,KAAK;AAC3C,EAAE,IAAI,sBAAsB,GAAG,eAAe;AAC9C,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI;AACvD,IAAI,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACxD,MAAM,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE;AACpD,QAAQ,QAAQ,EAAE,IAAI,GAAG,EAAE;AAC3B,QAAQ,UAAU,EAAE;AACpB,OAAO,CAAC;AACR,IAAI;AACJ,IAAI,sBAAsB,GAAG,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1E,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,sBAAsB;AAC/B,CAAC;AACD,MAAM,aAAa,GAAG,IAAI,IAAI,IAAI,CAAC,aAAa;;AAEhD;AACA,MAAM,cAAc,GAAG,YAAY,IAAI;AACvC,EAAE,IAAI,YAAY,GAAG,CAAC,EAAE;AACxB,IAAI,OAAO;AACX,MAAM,GAAG,EAAE,MAAM,SAAS;AAC1B,MAAM,GAAG,EAAE,MAAM,CAAC;AAClB,KAAK;AACL,EAAE;AACF,EAAE,IAAI,SAAS,GAAG,CAAC;AACnB,EAAE,IAAI,KAAK,GAAG,IAAI,GAAG,EAAE;AACvB,EAAE,IAAI,aAAa,GAAG,IAAI,GAAG,EAAE;AAC/B,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK;AACjC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACzB,IAAI,SAAS,EAAE;AACf,IAAI,IAAI,SAAS,GAAG,YAAY,EAAE;AAClC,MAAM,SAAS,GAAG,CAAC;AACnB,MAAM,aAAa,GAAG,KAAK;AAC3B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE;AACvB,IAAI;AACJ,EAAE,CAAC;AACH,EAAE,OAAO;AACT,IAAI,GAAG,CAAC,GAAG,EAAE;AACb,MAAM,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,MAAM,IAAI,KAAK,KAAK,SAAS,EAAE;AAC/B,QAAQ,OAAO,KAAK;AACpB,MAAM;AACN,MAAM,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,SAAS,EAAE;AAC1D,QAAQ,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;AAC1B,QAAQ,OAAO,KAAK;AACpB,MAAM;AACN,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE;AACpB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC1B,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC7B,MAAM,CAAC,MAAM;AACb,QAAQ,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;AAC1B,MAAM;AACN,IAAI;AACJ,GAAG;AACH,CAAC;AACD,MAAM,kBAAkB,GAAG,GAAG;AAC9B,MAAM,kBAAkB,GAAG,GAAG;AAC9B,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,MAAM;AAC3D,MAAM,oBAAoB,GAAG,MAAM,IAAI;AACvC,EAAE,MAAM;AACR,IAAI,MAAM;AACV,IAAI;AACJ,GAAG,GAAG,MAAM;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,cAAc,GAAG,SAAS,IAAI;AACpC,IAAI,MAAM,SAAS,GAAG,EAAE;AACxB,IAAI,IAAI,YAAY,GAAG,CAAC;AACxB,IAAI,IAAI,UAAU,GAAG,CAAC;AACtB,IAAI,IAAI,aAAa,GAAG,CAAC;AACzB,IAAI,IAAI,uBAAuB;AAC/B,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AAC3D,MAAM,IAAI,gBAAgB,GAAG,SAAS,CAAC,KAAK,CAAC;AAC7C,MAAM,IAAI,YAAY,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,EAAE;AAClD,QAAQ,IAAI,gBAAgB,KAAK,kBAAkB,EAAE;AACrD,UAAU,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAC/D,UAAU,aAAa,GAAG,KAAK,GAAG,yBAAyB;AAC3D,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,gBAAgB,KAAK,GAAG,EAAE;AACtC,UAAU,uBAAuB,GAAG,KAAK;AACzC,UAAU;AACV,QAAQ;AACR,MAAM;AACN,MAAM,IAAI,gBAAgB,KAAK,GAAG,EAAE;AACpC,QAAQ,YAAY,EAAE;AACtB,MAAM,CAAC,MAAM,IAAI,gBAAgB,KAAK,GAAG,EAAE;AAC3C,QAAQ,YAAY,EAAE;AACtB,MAAM,CAAC,MAAM,IAAI,gBAAgB,KAAK,GAAG,EAAE;AAC3C,QAAQ,UAAU,EAAE;AACpB,MAAM,CAAC,MAAM,IAAI,gBAAgB,KAAK,GAAG,EAAE;AAC3C,QAAQ,UAAU,EAAE;AACpB,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,kCAAkC,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC;AACtH,IAAI,MAAM,aAAa,GAAG,sBAAsB,CAAC,kCAAkC,CAAC;AACpF,IAAI,MAAM,oBAAoB,GAAG,aAAa,KAAK,kCAAkC;AACrF,IAAI,MAAM,4BAA4B,GAAG,uBAAuB,IAAI,uBAAuB,GAAG,aAAa,GAAG,uBAAuB,GAAG,aAAa,GAAG,SAAS;AACjK,IAAI,OAAO;AACX,MAAM,SAAS;AACf,MAAM,oBAAoB;AAC1B,MAAM,aAAa;AACnB,MAAM;AACN,KAAK;AACL,EAAE,CAAC;AACH,EAAE,IAAI,MAAM,EAAE;AACd,IAAI,MAAM,UAAU,GAAG,MAAM,GAAG,kBAAkB;AAClD,IAAI,MAAM,sBAAsB,GAAG,cAAc;AACjD,IAAI,cAAc,GAAG,SAAS,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,sBAAsB,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG;AACtI,MAAM,UAAU,EAAE,IAAI;AACtB,MAAM,SAAS,EAAE,EAAE;AACnB,MAAM,oBAAoB,EAAE,KAAK;AACjC,MAAM,aAAa,EAAE,SAAS;AAC9B,MAAM,4BAA4B,EAAE;AACpC,KAAK;AACL,EAAE;AACF,EAAE,IAAI,0BAA0B,EAAE;AAClC,IAAI,MAAM,sBAAsB,GAAG,cAAc;AACjD,IAAI,cAAc,GAAG,SAAS,IAAI,0BAA0B,CAAC;AAC7D,MAAM,SAAS;AACf,MAAM,cAAc,EAAE;AACtB,KAAK,CAAC;AACN,EAAE;AACF,EAAE,OAAO,cAAc;AACvB,CAAC;AACD,MAAM,sBAAsB,GAAG,aAAa,IAAI;AAChD,EAAE,IAAI,aAAa,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AAClD,IAAI,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/D,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE,IAAI,aAAa,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE;AACpD,IAAI,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;AACrC,EAAE;AACF,EAAE,OAAO,aAAa;AACtB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAmB,GAAG,MAAM,IAAI;AACtC,EAAE,MAAM,uBAAuB,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AACtH,EAAE,MAAM,aAAa,GAAG,SAAS,IAAI;AACrC,IAAI,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;AAC/B,MAAM,OAAO,SAAS;AACtB,IAAI;AACJ,IAAI,MAAM,eAAe,GAAG,EAAE;AAC9B,IAAI,IAAI,iBAAiB,GAAG,EAAE;AAC9B,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI;AAClC,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,uBAAuB,CAAC,QAAQ,CAAC;AAC1F,MAAM,IAAI,mBAAmB,EAAE;AAC/B,QAAQ,eAAe,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC;AACnE,QAAQ,iBAAiB,GAAG,EAAE;AAC9B,MAAM,CAAC,MAAM;AACb,QAAQ,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxC,MAAM;AACN,IAAI,CAAC,CAAC;AACN,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC;AACrD,IAAI,OAAO,eAAe;AAC1B,EAAE,CAAC;AACH,EAAE,OAAO,aAAa;AACtB,CAAC;AACD,MAAM,iBAAiB,GAAG,MAAM,KAAK;AACrC,EAAE,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC;AACzC,EAAE,cAAc,EAAE,oBAAoB,CAAC,MAAM,CAAC;AAC9C,EAAE,aAAa,EAAE,mBAAmB,CAAC,MAAM,CAAC;AAC5C,EAAE,GAAG,qBAAqB,CAAC,MAAM;AACjC,CAAC,CAAC;AACF,MAAM,mBAAmB,GAAG,KAAK;AACjC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,WAAW,KAAK;AACnD,EAAE,MAAM;AACR,IAAI,cAAc;AAClB,IAAI,eAAe;AACnB,IAAI,2BAA2B;AAC/B,IAAI;AACJ,GAAG,GAAG,WAAW;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,qBAAqB,GAAG,EAAE;AAClC,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC;AAChE,EAAE,IAAI,MAAM,GAAG,EAAE;AACjB,EAAE,KAAK,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;AAClE,IAAI,MAAM,iBAAiB,GAAG,UAAU,CAAC,KAAK,CAAC;AAC/C,IAAI,MAAM;AACV,MAAM,UAAU;AAChB,MAAM,SAAS;AACf,MAAM,oBAAoB;AAC1B,MAAM,aAAa;AACnB,MAAM;AACN,KAAK,GAAG,cAAc,CAAC,iBAAiB,CAAC;AACzC,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,MAAM,GAAG,iBAAiB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9E,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,kBAAkB,GAAG,CAAC,CAAC,4BAA4B;AAC3D,IAAI,IAAI,YAAY,GAAG,eAAe,CAAC,kBAAkB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,4BAA4B,CAAC,GAAG,aAAa,CAAC;AACrI,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,MAAM,IAAI,CAAC,kBAAkB,EAAE;AAC/B;AACA,QAAQ,MAAM,GAAG,iBAAiB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC;AAChF,QAAQ;AACR,MAAM;AACN,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,CAAC;AACnD,MAAM,IAAI,CAAC,YAAY,EAAE;AACzB;AACA,QAAQ,MAAM,GAAG,iBAAiB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC;AAChF,QAAQ;AACR,MAAM;AACN,MAAM,kBAAkB,GAAG,KAAK;AAChC,IAAI;AACJ,IAAI,MAAM,eAAe,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9D,IAAI,MAAM,UAAU,GAAG,oBAAoB,GAAG,eAAe,GAAG,kBAAkB,GAAG,eAAe;AACpG,IAAI,MAAM,OAAO,GAAG,UAAU,GAAG,YAAY;AAC7C,IAAI,IAAI,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACjD;AACA,MAAM;AACN,IAAI;AACJ,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;AACvC,IAAI,MAAM,cAAc,GAAG,2BAA2B,CAAC,YAAY,EAAE,kBAAkB,CAAC;AACxF,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACpD,MAAM,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC;AACrC,MAAM,qBAAqB,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACpD,IAAI;AACJ;AACA,IAAI,MAAM,GAAG,iBAAiB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC;AAC5E,EAAE;AACF,EAAE,OAAO,MAAM;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,GAAG;AAClB,EAAE,IAAI,KAAK,GAAG,CAAC;AACf,EAAE,IAAI,QAAQ;AACd,EAAE,IAAI,aAAa;AACnB,EAAE,IAAI,MAAM,GAAG,EAAE;AACjB,EAAE,OAAO,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE;AACnC,IAAI,IAAI,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE;AACvC,MAAM,IAAI,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC7C,QAAQ,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC;AACjC,QAAQ,MAAM,IAAI,aAAa;AAC/B,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,MAAM;AACf;AACA,MAAM,OAAO,GAAG,GAAG,IAAI;AACvB,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,OAAO,GAAG;AACd,EAAE;AACF,EAAE,IAAI,aAAa;AACnB,EAAE,IAAI,MAAM,GAAG,EAAE;AACjB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AAChB,MAAM,IAAI,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3C,QAAQ,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC;AACjC,QAAQ,MAAM,IAAI,aAAa;AAC/B,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,MAAM;AACf,CAAC;AACD,SAAS,mBAAmB,CAAC,iBAAiB,EAAE,GAAG,gBAAgB,EAAE;AACrE,EAAE,IAAI,WAAW;AACjB,EAAE,IAAI,QAAQ;AACd,EAAE,IAAI,QAAQ;AACd,EAAE,IAAI,cAAc,GAAG,iBAAiB;AACxC,EAAE,SAAS,iBAAiB,CAAC,SAAS,EAAE;AACxC,IAAI,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,mBAAmB,KAAK,mBAAmB,CAAC,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;AAC7I,IAAI,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC;AAC3C,IAAI,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG;AACpC,IAAI,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG;AACpC,IAAI,cAAc,GAAG,aAAa;AAClC,IAAI,OAAO,aAAa,CAAC,SAAS,CAAC;AACnC,EAAE;AACF,EAAE,SAAS,aAAa,CAAC,SAAS,EAAE;AACpC,IAAI,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC;AAC5C,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,OAAO,YAAY;AACzB,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC;AACzD,IAAI,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;AAC/B,IAAI,OAAO,MAAM;AACjB,EAAE;AACF,EAAE,OAAO,SAAS,iBAAiB,GAAG;AACtC,IAAI,OAAO,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACxD,EAAE,CAAC;AACH;AACA,MAAM,SAAS,GAAG,GAAG,IAAI;AACzB,EAAE,MAAM,WAAW,GAAG,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;AAC/C,EAAE,WAAW,CAAC,aAAa,GAAG,IAAI;AAClC,EAAE,OAAO,WAAW;AACpB,CAAC;AACD,MAAM,mBAAmB,GAAG,6BAA6B;AACzD,MAAM,sBAAsB,GAAG,6BAA6B;AAC5D,MAAM,aAAa,GAAG,YAAY;AAClC,MAAM,eAAe,GAAG,kCAAkC;AAC1D,MAAM,eAAe,GAAG,2HAA2H;AACnJ,MAAM,kBAAkB,GAAG,oDAAoD;AAC/E;AACA,MAAM,WAAW,GAAG,iEAAiE;AACrF,MAAM,UAAU,GAAG,8FAA8F;AACjH,MAAM,UAAU,GAAG,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AACrD,MAAM,QAAQ,GAAG,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjE,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE,MAAM,SAAS,GAAG,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9E,MAAM,YAAY,GAAG,KAAK,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AACzD,MAAM,KAAK,GAAG,MAAM,IAAI;AACxB,MAAM,YAAY,GAAG,KAAK;AAC1B;AACA;AACA;AACA,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9D,MAAM,OAAO,GAAG,MAAM,KAAK;AAC3B,MAAM,QAAQ,GAAG,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AACjD,MAAM,OAAO,GAAG,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/C,MAAM,iBAAiB,GAAG,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC1F,MAAM,eAAe,GAAG,KAAK,IAAI,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC;AACjF,MAAM,gBAAgB,GAAG,KAAK,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AACjE,MAAM,iBAAiB,GAAG,KAAK,IAAI,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,CAAC;AAC1F,MAAM,iBAAiB,GAAG,KAAK,IAAI,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC;AACtF,MAAM,mBAAmB,GAAG,KAAK,IAAI,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC;AACzF,MAAM,gBAAgB,GAAG,KAAK,IAAI,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC;AACnF,MAAM,iBAAiB,GAAG,KAAK,IAAI,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC;AACtF,MAAM,mBAAmB,GAAG,KAAK,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;AACvE,MAAM,yBAAyB,GAAG,KAAK,IAAI,sBAAsB,CAAC,KAAK,EAAE,aAAa,CAAC;AACvF,MAAM,6BAA6B,GAAG,KAAK,IAAI,sBAAsB,CAAC,KAAK,EAAE,iBAAiB,CAAC;AAC/F,MAAM,2BAA2B,GAAG,KAAK,IAAI,sBAAsB,CAAC,KAAK,EAAE,eAAe,CAAC;AAC3F,MAAM,uBAAuB,GAAG,KAAK,IAAI,sBAAsB,CAAC,KAAK,EAAE,WAAW,CAAC;AACnF,MAAM,wBAAwB,GAAG,KAAK,IAAI,sBAAsB,CAAC,KAAK,EAAE,YAAY,CAAC;AACrF,MAAM,yBAAyB,GAAG,KAAK,IAAI,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC;AAC7F;AACA,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,KAAK;AAC7D,EAAE,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AAChD,EAAE,IAAI,MAAM,EAAE;AACd,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;AACnB,MAAM,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI;AACJ,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/B,EAAE;AACF,EAAE,OAAO,KAAK;AACd,CAAC;AACD,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,kBAAkB,GAAG,KAAK,KAAK;AACjF,EAAE,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;AACnD,EAAE,IAAI,MAAM,EAAE;AACd,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;AACnB,MAAM,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI;AACJ,IAAI,OAAO,kBAAkB;AAC7B,EAAE;AACF,EAAE,OAAO,KAAK;AACd,CAAC;AACD;AACA,MAAM,eAAe,GAAG,KAAK,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,YAAY;AAC/E,MAAM,YAAY,GAAG,KAAK,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK;AAClE,MAAM,WAAW,GAAG,KAAK,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS;AAC1F,MAAM,aAAa,GAAG,KAAK,IAAI,KAAK,KAAK,QAAQ;AACjD,MAAM,aAAa,GAAG,KAAK,IAAI,KAAK,KAAK,QAAQ;AACjD,MAAM,iBAAiB,GAAG,KAAK,IAAI,KAAK,KAAK,aAAa;AAC1D,MAAM,aAAa,GAAG,KAAK,IAAI,KAAK,KAAK,QAAQ;AA2BjD,MAAM,gBAAgB,GAAG,MAAM;AAC/B;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC;AACvC,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;AACrC,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;AACrC,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC,aAAa,CAAC;AAClD,EAAE,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC;AAC7C,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC;AAC3C,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC,YAAY,CAAC;AACjD,EAAE,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC;AAC/C,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC;AAC3C,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC;AACzC,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC;AACzC,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC;AACpD,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC,aAAa,CAAC;AAClD,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC,aAAa,CAAC;AAClD,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;AACrC,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAC,aAAa,CAAC;AACnD,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC;AACzC,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;AACrC,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;AACpG,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;AACrF;AACA,EAAE,UAAU,EAAE,WAAW;AACzB;AACA,EAAE,WAAW,EAAE,cAAc;AAC7B;AACA,EAAE,cAAc,EAAE,aAAa;AAC/B;AACA,EAAE,aAAa,CAAC;AAChB,EAAE,MAAM,0BAA0B,GAAG,MAAM,CAAC,GAAG,aAAa,EAAE,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AACtG,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;AAC7E,EAAE,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC;AAC3D,EAAE,MAAM,uBAAuB,GAAG,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,YAAY,CAAC;AAC7F,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,uBAAuB,EAAE,CAAC;AACrF,EAAE,MAAM,yBAAyB,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AAC/G,EAAE,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE;AACpD,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB;AACnE,GAAG,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AACtD,EAAE,MAAM,yBAAyB,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AACpG,EAAE,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AACzG,EAAE,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC;AACjJ,EAAE,MAAM,uBAAuB,GAAG,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC;AACxG,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,uBAAuB,EAAE,CAAC;AAClE,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,uBAAuB,EAAE,CAAC;AACrJ,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AAC9E,EAAE,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,aAAa,EAAE,EAAE,2BAA2B,EAAE,mBAAmB,EAAE;AACvG,IAAI,QAAQ,EAAE,CAAC,mBAAmB,EAAE,gBAAgB;AACpD,GAAG,CAAC;AACJ,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,EAAE;AAC5C,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO;AAC3C,GAAG,CAAC;AACJ,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,eAAe,EAAE;AACnG,IAAI,IAAI,EAAE,CAAC,mBAAmB,EAAE,gBAAgB;AAChD,GAAG,CAAC;AACJ,EAAE,MAAM,yBAAyB,GAAG,MAAM,CAAC,SAAS,EAAE,yBAAyB,EAAE,iBAAiB,CAAC;AACnG,EAAE,MAAM,WAAW,GAAG,MAAM;AAC5B;AACA,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AACzE,EAAE,MAAM,gBAAgB,GAAG,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,yBAAyB,EAAE,iBAAiB,CAAC;AAC7F,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACtE,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,CAAC;AAC/N,EAAE,MAAM,sBAAsB,GAAG,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,2BAA2B,EAAE,mBAAmB,CAAC;AAC9G,EAAE,MAAM,SAAS,GAAG,MAAM;AAC1B;AACA,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AAC/D,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AACrF,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AACpF,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AAC3E,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,uBAAuB,EAAE,CAAC;AACjF,EAAE,OAAO;AACT,IAAI,SAAS,EAAE,GAAG;AAClB,IAAI,KAAK,EAAE;AACX,MAAM,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;AAClD,MAAM,MAAM,EAAE,CAAC,OAAO,CAAC;AACvB,MAAM,IAAI,EAAE,CAAC,YAAY,CAAC;AAC1B,MAAM,UAAU,EAAE,CAAC,YAAY,CAAC;AAChC,MAAM,KAAK,EAAE,CAAC,KAAK,CAAC;AACpB,MAAM,SAAS,EAAE,CAAC,YAAY,CAAC;AAC/B,MAAM,aAAa,EAAE,CAAC,YAAY,CAAC;AACnC,MAAM,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;AACnC,MAAM,IAAI,EAAE,CAAC,iBAAiB,CAAC;AAC/B,MAAM,aAAa,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC;AAClH,MAAM,cAAc,EAAE,CAAC,YAAY,CAAC;AACpC,MAAM,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;AACtE,MAAM,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC;AAChF,MAAM,MAAM,EAAE,CAAC,YAAY,CAAC;AAC5B,MAAM,MAAM,EAAE,CAAC,YAAY,CAAC;AAC5B,MAAM,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC/B,MAAM,IAAI,EAAE,CAAC,YAAY,CAAC;AAC1B,MAAM,aAAa,EAAE,CAAC,YAAY,CAAC;AACnC,MAAM,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ;AACxE,KAAK;AACL,IAAI,WAAW,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW;AACjG,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC,WAAW,CAAC;AAC9B;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc;AACjF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,UAAU;AAClC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc;AACtE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,gBAAgB,EAAE,CAAC,OAAO,EAAE,OAAO;AAC3C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,GAAG,EAAE,CAAC;AACZ,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,SAAS;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC;AAC1T;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;AACpC;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AACvD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AAC/D,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC;AAC9C;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,MAAM,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;AACjE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,MAAM,EAAE,0BAA0B;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,aAAa;AAC/B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,aAAa;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,aAAa;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,eAAe;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,eAAe;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,eAAe;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC;AACrE;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,UAAU;AACzB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,UAAU;AAC7B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,UAAU;AAC7B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,UAAU;AACzB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,GAAG,EAAE,CAAC;AACZ,QAAQ,GAAG,EAAE,UAAU;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,GAAG,EAAE,CAAC;AACZ,QAAQ,GAAG,EAAE,UAAU;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,UAAU;AACzB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,UAAU;AAC1B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,UAAU;AACxB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC;AACtD;AACA;AACA;AACA;AACA,MAAM,CAAC,EAAE,CAAC;AACV,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AACpE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,uBAAuB,EAAE;AACxF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa;AACzD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc;AAC/C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB;AAChF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAClE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AACpE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AACzF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,yBAAyB;AAC9C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,GAAG,EAAE,0BAA0B;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,yBAAyB;AAC9C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,yBAAyB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,yBAAyB;AAC9C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,GAAG,EAAE,0BAA0B;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,yBAAyB;AAC9C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,yBAAyB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW;AACrE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,qBAAqB;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,qBAAqB;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,GAAG,EAAE,CAAC;AACZ,QAAQ,GAAG,EAAE,uBAAuB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,uBAAuB;AACxC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,uBAAuB;AACxC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,OAAO,EAAE,CAAC,GAAG,qBAAqB,EAAE,EAAE,QAAQ;AACtD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,eAAe,EAAE,CAAC,GAAG,uBAAuB,EAAE,EAAE,QAAQ;AAChE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,CAAC,MAAM,EAAE,GAAG,uBAAuB,EAAE;AAC7D,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,OAAO,EAAE,CAAC,QAAQ,EAAE,GAAG,qBAAqB,EAAE;AACtD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,KAAK,EAAE,CAAC,GAAG,uBAAuB,EAAE,EAAE;AAC9C,UAAU,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM;AAC/B,SAAS;AACT,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,uBAAuB,EAAE,EAAE;AACrD,UAAU,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM;AAC/B,SAAS;AACT,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,eAAe,EAAE,qBAAqB;AAC9C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,CAAC,GAAG,uBAAuB,EAAE,EAAE,UAAU;AAChE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,CAAC,MAAM,EAAE,GAAG,uBAAuB,EAAE;AAC3D,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA,MAAM,CAAC,EAAE,CAAC;AACV,QAAQ,CAAC,EAAE,uBAAuB;AAClC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,uBAAuB;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,uBAAuB;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,uBAAuB;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,uBAAuB;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,uBAAuB;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,uBAAuB;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,uBAAuB;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,uBAAuB;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,CAAC,EAAE,CAAC;AACV,QAAQ,CAAC,EAAE,WAAW;AACtB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,uBAAuB;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC,iBAAiB,CAAC;AAC5C;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,uBAAuB;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC,iBAAiB,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,WAAW;AACzB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,CAAC,EAAE,CAAC;AACV,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE;AACtD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,cAAc,EAAE,QAAQ;AAC1C,QAAQ,MAAM,EAAE,GAAG,WAAW,EAAE;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM;AAClD,QAAQ,OAAO;AACf,QAAQ;AACR,UAAU,MAAM,EAAE,CAAC,eAAe;AAClC,SAAS,EAAE,GAAG,WAAW,EAAE;AAC3B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,CAAC,EAAE,CAAC;AACV,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,WAAW,EAAE;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE;AAC1D,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,WAAW,EAAE;AAClD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,yBAAyB,EAAE,iBAAiB;AAC9E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC,aAAa,EAAE,sBAAsB,CAAC;AAC/D;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5C;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,IAAI,EAAE,CAAC,eAAe,EAAE,mBAAmB,EAAE,iBAAiB;AACtE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB;AACpM,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,IAAI,EAAE,CAAC,6BAA6B,EAAE,gBAAgB,EAAE,SAAS;AACzE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC,aAAa,CAAC;AACnC;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC,SAAS,CAAC;AAChC;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC,cAAc,CAAC;AAC1C;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;AACpD;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC,mBAAmB,EAAE,cAAc,CAAC;AAC1D;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;AACjE;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,CAAC,aAAa,EAAE,mBAAmB,EAAE,gBAAgB;AACvE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,iBAAiB;AAC/E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE;AACjB,QAAQ,YAAY,EAAE,GAAG,uBAAuB,EAAE;AAClD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AACpE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS;AAClC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AAC/E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK;AACnE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAmB,EAAE,CAAC;AAC5B,QAAQ,WAAW,EAAE,UAAU;AAC/B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,IAAI,EAAE,UAAU;AACxB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,CAAC;AAClF;AACA;AACA;AACA;AACA,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,UAAU,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,MAAM;AAChD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,2BAA2B,EAAE,CAAC;AACpC,QAAQ,UAAU,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAE,iBAAiB;AAC1F,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC;AAC3B,QAAQ,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AACpF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,CAAC;AAC/E;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,WAAW,CAAC;AACjE;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;AACpD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,uBAAuB;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,KAAK,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB;AACvI,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc;AACtF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;AAChD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ;AACjD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AAC/D,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM;AAC1D,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS;AACpD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,EAAE,EAAE,eAAe;AAC3B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,EAAE,EAAE,aAAa;AACzB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,EAAE,EAAE,CAAC,MAAM,EAAE;AACrB,UAAU,MAAM,EAAE,CAAC;AACnB,YAAY,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;AAC3D,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AAC9D,UAAU,MAAM,EAAE,CAAC,EAAE,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AAC7D,UAAU,KAAK,EAAE,CAAC,SAAS,EAAE,mBAAmB,EAAE,gBAAgB;AAClE,SAAS,EAAE,wBAAwB,EAAE,gBAAgB;AACrD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,EAAE,EAAE,UAAU;AACtB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,mBAAmB,EAAE,CAAC;AAC5B,QAAQ,IAAI,EAAE,yBAAyB;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC;AAC3B,QAAQ,GAAG,EAAE,yBAAyB;AACtC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,EAAE,EAAE,yBAAyB;AACrC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,IAAI,EAAE,UAAU;AACxB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,GAAG,EAAE,UAAU;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,EAAE,EAAE,UAAU;AACtB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,WAAW;AAC5B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,WAAW;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,WAAW;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,WAAW;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,WAAW;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,WAAW;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,WAAW;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,WAAW;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,WAAW;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,WAAW;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,WAAW;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,WAAW;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,WAAW;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,WAAW;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,WAAW;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,MAAM,EAAE,gBAAgB;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC,kBAAkB,CAAC;AAC9C;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC,kBAAkB,CAAC;AAC9C;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,MAAM,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,QAAQ,EAAE,MAAM;AACtD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,MAAM,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,QAAQ,EAAE,MAAM;AACtD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,MAAM,EAAE,UAAU;AAC1B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,MAAM,EAAE,UAAU;AAC1B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,OAAO,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,MAAM,EAAE,QAAQ;AACvD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,gBAAgB,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC1E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,yBAAyB,EAAE,iBAAiB;AAC5E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,OAAO,EAAE,UAAU;AAC3B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE;AAChB;AACA,QAAQ,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,yBAAyB,EAAE,iBAAiB;AAC7E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,MAAM,EAAE,UAAU;AAC1B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,iBAAiB;AAC/F,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,oBAAoB,EAAE,CAAC;AAC7B,QAAQ,cAAc,EAAE,UAAU;AAClC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,IAAI,EAAE,gBAAgB;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC,YAAY,CAAC;AACpC;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,IAAI,EAAE,UAAU;AACxB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,aAAa,EAAE,CAAC,QAAQ,EAAE,iBAAiB;AACnD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAmB,EAAE,CAAC;AAC5B,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,YAAY,EAAE,gBAAgB;AACtC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC;AAC3B,QAAQ,YAAY,EAAE,UAAU;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,yBAAyB,EAAE,iBAAiB;AAC7F,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,mBAAmB,EAAE,CAAC;AAC5B,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AACjE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,aAAa,EAAE,cAAc;AACxE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,cAAc;AAClC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;AAC9E,OAAO,EAAE,cAAc,CAAC;AACxB;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS;AACxD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,aAAa,EAAE,CAAC,QAAQ;AAChC,OAAO,CAAC;AACR,MAAM,4BAA4B,EAAE,CAAC;AACrC,QAAQ,kBAAkB,EAAE,sBAAsB;AAClD,OAAO,CAAC;AACR,MAAM,0BAA0B,EAAE,CAAC;AACnC,QAAQ,gBAAgB,EAAE,sBAAsB;AAChD,OAAO,CAAC;AACR,MAAM,8BAA8B,EAAE,CAAC;AACvC,QAAQ,kBAAkB,EAAE,UAAU;AACtC,OAAO,CAAC;AACR,MAAM,4BAA4B,EAAE,CAAC;AACrC,QAAQ,gBAAgB,EAAE,UAAU;AACpC,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,aAAa,EAAE,sBAAsB;AAC7C,OAAO,CAAC;AACR,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,WAAW,EAAE,sBAAsB;AAC3C,OAAO,CAAC;AACR,MAAM,yBAAyB,EAAE,CAAC;AAClC,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,WAAW,EAAE,UAAU;AAC/B,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,aAAa,EAAE,sBAAsB;AAC7C,OAAO,CAAC;AACR,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,WAAW,EAAE,sBAAsB;AAC3C,OAAO,CAAC;AACR,MAAM,yBAAyB,EAAE,CAAC;AAClC,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,WAAW,EAAE,UAAU;AAC/B,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,aAAa,EAAE,sBAAsB;AAC7C,OAAO,CAAC;AACR,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,WAAW,EAAE,sBAAsB;AAC3C,OAAO,CAAC;AACR,MAAM,yBAAyB,EAAE,CAAC;AAClC,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,WAAW,EAAE,UAAU;AAC/B,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,aAAa,EAAE,sBAAsB;AAC7C,OAAO,CAAC;AACR,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,WAAW,EAAE,sBAAsB;AAC3C,OAAO,CAAC;AACR,MAAM,yBAAyB,EAAE,CAAC;AAClC,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,WAAW,EAAE,UAAU;AAC/B,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,aAAa,EAAE,sBAAsB;AAC7C,OAAO,CAAC;AACR,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,WAAW,EAAE,sBAAsB;AAC3C,OAAO,CAAC;AACR,MAAM,yBAAyB,EAAE,CAAC;AAClC,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,WAAW,EAAE,UAAU;AAC/B,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,aAAa,EAAE,sBAAsB;AAC7C,OAAO,CAAC;AACR,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,WAAW,EAAE,sBAAsB;AAC3C,OAAO,CAAC;AACR,MAAM,yBAAyB,EAAE,CAAC;AAClC,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,WAAW,EAAE,UAAU;AAC/B,OAAO,CAAC;AACR,MAAM,mBAAmB,EAAE,CAAC;AAC5B,QAAQ,aAAa,EAAE,CAAC,mBAAmB,EAAE,gBAAgB;AAC7D,OAAO,CAAC;AACR,MAAM,4BAA4B,EAAE,CAAC;AACrC,QAAQ,kBAAkB,EAAE,sBAAsB;AAClD,OAAO,CAAC;AACR,MAAM,0BAA0B,EAAE,CAAC;AACnC,QAAQ,gBAAgB,EAAE,sBAAsB;AAChD,OAAO,CAAC;AACR,MAAM,8BAA8B,EAAE,CAAC;AACvC,QAAQ,kBAAkB,EAAE,UAAU;AACtC,OAAO,CAAC;AACR,MAAM,4BAA4B,EAAE,CAAC;AACrC,QAAQ,gBAAgB,EAAE,UAAU;AACpC,OAAO,CAAC;AACR,MAAM,yBAAyB,EAAE,CAAC;AAClC,QAAQ,aAAa,EAAE,CAAC,QAAQ,EAAE,SAAS;AAC3C,OAAO,CAAC;AACR,MAAM,wBAAwB,EAAE,CAAC;AACjC,QAAQ,aAAa,EAAE,CAAC;AACxB,UAAU,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;AACrC,UAAU,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ;AACrC,SAAS;AACT,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,gBAAgB,EAAE,aAAa;AACvC,OAAO,CAAC;AACR,MAAM,sBAAsB,EAAE,CAAC;AAC/B,QAAQ,YAAY,EAAE,CAAC,QAAQ;AAC/B,OAAO,CAAC;AACR,MAAM,2BAA2B,EAAE,CAAC;AACpC,QAAQ,iBAAiB,EAAE,sBAAsB;AACjD,OAAO,CAAC;AACR,MAAM,yBAAyB,EAAE,CAAC;AAClC,QAAQ,eAAe,EAAE,sBAAsB;AAC/C,OAAO,CAAC;AACR,MAAM,6BAA6B,EAAE,CAAC;AACtC,QAAQ,iBAAiB,EAAE,UAAU;AACrC,OAAO,CAAC;AACR,MAAM,2BAA2B,EAAE,CAAC;AACpC,QAAQ,eAAe,EAAE,UAAU;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;AAChF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,IAAI,EAAE,eAAe;AAC7B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,IAAI,EAAE,aAAa;AAC3B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,IAAI,EAAE,WAAW;AACzB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AAC5D,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE;AAChB;AACA,QAAQ,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AACzD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,SAAS;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AACpE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAClE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE;AACvB;AACA,QAAQ,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,yBAAyB,EAAE,iBAAiB;AACjF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,mBAAmB,EAAE,CAAC;AAC5B,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AACvE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AACtE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AACpE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAClE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AACnE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,iBAAiB,EAAE;AAC3B;AACA,QAAQ,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AACzD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,eAAe,EAAE,SAAS;AAClC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,qBAAqB,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC/E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,mBAAmB,EAAE,CAAC;AAC5B,QAAQ,mBAAmB,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC7E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,oBAAoB,EAAE,CAAC;AAC7B,QAAQ,oBAAoB,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAClF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,qBAAqB,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC/E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,iBAAiB,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC/E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC;AAC3B,QAAQ,kBAAkB,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC5E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,mBAAmB,EAAE,CAAC;AAC5B,QAAQ,mBAAmB,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC7E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,gBAAgB,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC9E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,gBAAgB,EAAE,uBAAuB;AACjD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC;AAC3B,QAAQ,kBAAkB,EAAE,uBAAuB;AACnD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC;AAC3B,QAAQ,kBAAkB,EAAE,uBAAuB;AACnD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO;AAC/B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AACzH,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,UAAU,EAAE,CAAC,QAAQ,EAAE,UAAU;AACzC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB;AAC7E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB;AACpF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC/D,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB;AAC7E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS;AACtC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB;AAC7E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,oBAAoB,EAAE,CAAC;AAC7B,QAAQ,oBAAoB,EAAE,0BAA0B;AACxD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,WAAW;AAC3B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,WAAW;AAC/B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,WAAW;AAC/B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,WAAW;AAC/B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,UAAU;AACzB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,UAAU;AAC7B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,UAAU;AAC7B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,UAAU;AAC7B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC,UAAU,CAAC;AAC9B;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,SAAS;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,SAAS;AAC3B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,SAAS;AAC3B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;AACnF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC;AAC3B,QAAQ,MAAM,EAAE,0BAA0B;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,cAAc;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,cAAc;AACrC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,cAAc;AACrC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,cAAc;AACrC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC,gBAAgB,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,UAAU;AAC1B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,KAAK,EAAE,UAAU;AACzB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY;AACnF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB;AAC1d,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS;AAC3C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM;AACzC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG;AACrC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,uBAAuB;AAC3C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,uBAAuB;AAC3C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY;AACrD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc;AAC9C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC,kBAAkB,CAAC;AACtC;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;AAC9C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB;AACxG,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,UAAU,EAAE;AACtC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,MAAM,EAAE,CAAC,QAAQ,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,iBAAiB;AAC1F,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,UAAU,EAAE;AACxC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,qBAAqB,EAAE,CAAC,MAAM,EAAE,MAAM;AAC9C,OAAO;AACP,KAAK;AACL,IAAI,sBAAsB,EAAE;AAC5B,MAAM,QAAQ,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAC5C,MAAM,UAAU,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;AAClD,MAAM,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;AACrF,MAAM,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;AAClC,MAAM,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AAClC,MAAM,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;AACvC,MAAM,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AAC7B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACzD,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AACtB,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AACtB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACzD,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AACtB,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AACtB,MAAM,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;AACtB,MAAM,WAAW,EAAE,CAAC,SAAS,CAAC;AAC9B,MAAM,YAAY,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC;AACpG,MAAM,aAAa,EAAE,CAAC,YAAY,CAAC;AACnC,MAAM,kBAAkB,EAAE,CAAC,YAAY,CAAC;AACxC,MAAM,YAAY,EAAE,CAAC,YAAY,CAAC;AAClC,MAAM,aAAa,EAAE,CAAC,YAAY,CAAC;AACnC,MAAM,cAAc,EAAE,CAAC,YAAY,CAAC;AACpC,MAAM,YAAY,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;AAC3C,MAAM,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC;AAC7M,MAAM,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAC/C,MAAM,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAC/C,MAAM,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAC/C,MAAM,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAC/C,MAAM,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAC/C,MAAM,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAC/C,MAAM,gBAAgB,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;AAChE,MAAM,UAAU,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC;AAClI,MAAM,YAAY,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAChD,MAAM,YAAY,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAChD,MAAM,cAAc,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;AACtK,MAAM,gBAAgB,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AAC5D,MAAM,gBAAgB,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AAC5D,MAAM,SAAS,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,CAAC;AACjE,MAAM,gBAAgB,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC;AAClF,MAAM,UAAU,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC;AAC1H,MAAM,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;AAC7C,MAAM,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;AAC7C,MAAM,UAAU,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC;AAC1H,MAAM,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;AAC7C,MAAM,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;AAC7C,MAAM,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC;AAC/C,MAAM,SAAS,EAAE,CAAC,OAAO,CAAC;AAC1B,MAAM,SAAS,EAAE,CAAC,OAAO,CAAC;AAC1B,MAAM,UAAU,EAAE,CAAC,OAAO;AAC1B,KAAK;AACL,IAAI,8BAA8B,EAAE;AACpC,MAAM,WAAW,EAAE,CAAC,SAAS;AAC7B,KAAK;AACL,IAAI,uBAAuB,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW;AACrK,GAAG;AACH,CAAC;AAsDD,MAAM,OAAO,gBAAgB,mBAAmB,CAAC,gBAAgB,CAAC;;ACr9F5D,SAAU,EAAE,CAAC,GAAG,MAAoB,EAAA;AACxC,IAAA,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B;;ACDA,SAAS,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B,EAAA;IACnE,QACEZ,eAACa,YAAW,EAAA,EACV,IAAI,EAAC,QAAQ,EAAA,YAAA,EACF,SAAS,EACpB,SAAS,EAAE,EAAE,CAAC,sCAAsC,EAAE,SAAS,CAAC,EAAA,GAC5D,KAAK,EAAA,CACT;AAEN;;ACJO,MAAM,YAAY,GAAgC,CAAC,EACxD,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,GACnB,KAAI;AACH,IAAA,MAAM,EACJ,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,EACZ,eAAe,GAChB,GAAG,cAAc,EAAE;IAEpB,IAAI,CAAC,aAAa,EAAE;AAClB,QAAA,QACEb,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oDAAoD,EAAA,QAAA,EACjEA,cAAA,CAAC,OAAO,EAAA,EAAC,SAAS,EAAC,yBAAyB,EAAA,CAAG,EAAA,CAC3C;IAEV;AAEA,IAAA,IAAI,CAAC,eAAe,EAAE,EAAE;AACtB,QAAA,SAAS,EAAE;AACX,QAAA,OAAOA,uCAAK;IACd;AAEA,IAAA,IACE,mBAAmB;AACnB,QAAA,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,EACzD;AACA,QAAA,OAAOA,uCAAK;IACd;AAEA,IAAA,IACE,kBAAkB;AAClB,QAAA,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,EACvD;AACA,QAAA,QACEc,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oDAAoD,EAAA,QAAA,EAAA,CACjEd,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,qEAAA,EAAA,CAE7B,EACLA,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,gFAAA,EAAA,CAEO,CAAA,EAAA,CACH;IAEV;AAEA,IAAA,OAAO,QAAQ;AACjB;;ACnDO,MAAM,kBAAkB,GAAmC,CAAC,EACjE,QAAQ,EACR,kBAAkB,EAClB,mBAAmB,GACpB,KAAI;IACH,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,cAAc,EAAE;AAExD,IAAA,IACE,mBAAmB;AACnB,QAAA,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,EACzD;AACA,QAAA,OAAOA,uCAAK;IACd;AAEA,IAAA,IACE,kBAAkB;AAClB,QAAA,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,EACvD;AACA,QAAA,OAAOA,uCAAK;IACd;AAEA,IAAA,OAAO,QAAQ;AACjB;;ACtBO,MAAM,eAAe,GAAmC,CAAC,EAC9D,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,GACpB,KAAI;AACH,IAAA,MAAM,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE;AAE1C,IAAA,IACE,mBAAmB;AACnB,QAAA,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,EACzD;AACA,QAAA,OAAOA,cAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAK,mBAAmB,IAAI,cAAc,GAAM;IACzD;AAEA,IAAA,OAAO,QAAQ;AACjB;;ACvBA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AAChC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ;;AAE7B,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,CAAC;;AAEzD,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU;;AAEzB,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AAC/C,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC7B,IAAI;AACJ,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3B,EAAE;;AAEF,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG;AAClC,EAAE,CAAC,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACnD,EAAE;AACF;;;;;;;;ACzBYe;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AAC5B,CAAC,EADWA,wBAAgB,KAAhBA,wBAAgB,GAAA,EAAA,CAAA,CAAA;;ACAhBC;AAAZ,CAAA,UAAY,eAAe,EAAA;AAC3B,CAAC,EADWA,uBAAe,KAAfA,uBAAe,GAAA,EAAA,CAAA,CAAA;;ACAfC;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,mBAAiC;AACnC,CAAC,EAJWA,0BAAkB,KAAlBA,0BAAkB,GAAA,EAAA,CAAA,CAAA;;;;;;ACA9B;;;AAGG;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[0,2,3,4,5,6,7,8,9,10,22,23,24,25,26,27,33]}