Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
theme.keycloak.v2.admin.resources.assets.NewPolicyDialog-DySSrR_B.js.map Maven / Gradle / Ivy
Go to download
The user inferface to administrate the Keycloak server.
{"version":3,"file":"NewPolicyDialog-DySSrR_B.js","sources":["../../../../../node_modules/.pnpm/@[email protected] [email protected] [email protected] [email protected] /node_modules/@patternfly/react-core/dist/esm/components/TimePicker/TimePickerUtils.js","../../../../../node_modules/.pnpm/@[email protected] [email protected] [email protected] [email protected] /node_modules/@patternfly/react-icons/dist/esm/icons/outlined-clock-icon.js","../../../../../node_modules/.pnpm/@[email protected] /node_modules/@patternfly/react-tokens/dist/esm/c_date_picker__input_c_form_control_Width.js","../../../../../node_modules/.pnpm/@[email protected] [email protected] [email protected] [email protected] /node_modules/@patternfly/react-core/dist/esm/components/TimePicker/TimePicker.js","../../../../../node_modules/.pnpm/@[email protected] [email protected] [email protected] [email protected] /node_modules/@patternfly/react-icons/dist/esm/icons/caret-up-icon.js","../../src/components/users/UserSelect.tsx","../../src/clients/authorization/DecisionStrategySelect.tsx","../../src/clients/authorization/ResourcesPolicySelect.tsx","../../src/clients/authorization/policy/Aggregate.tsx","../../src/clients/authorization/policy/Client.tsx","../../src/clients/scopes/AddScopeDialog.tsx","../../src/clients/authorization/policy/ClientScope.tsx","../../src/clients/authorization/policy/Group.tsx","../../src/clients/authorization/policy/JavaScript.tsx","../../src/clients/authorization/policy/LogicSelector.tsx","../../src/clients/authorization/policy/NameDescription.tsx","../../src/clients/authorization/policy/Regex.tsx","../../src/clients/authorization/policy/Role.tsx","../../src/clients/authorization/policy/Time.tsx","../../src/clients/authorization/policy/User.tsx","../../src/clients/authorization/policy/PolicyDetails.tsx","../../src/clients/authorization/NewPolicyDialog.tsx"],"sourcesContent":["export const amSuffix = ' AM';\nexport const pmSuffix = ' PM';\nexport const makeTimeOptions = (stepMinutes, hour12, delimiter, minTime, maxTime, includeSeconds) => {\n const res = [];\n const iter = new Date(new Date().setHours(0, 0, 0, 0));\n const iterDay = iter.getDay();\n while (iter.getDay() === iterDay) {\n let hour = iter.getHours();\n let suffix = amSuffix;\n if (hour12) {\n if (hour === 0) {\n hour = 12; // 12am\n }\n else if (hour >= 12) {\n suffix = pmSuffix;\n }\n if (hour > 12) {\n hour %= 12;\n }\n }\n hour = hour12 ? hour.toString() : hour.toString().padStart(2, '0');\n const minutes = iter.getMinutes().toString().padStart(2, '0');\n const timeOption = `${hour}${delimiter}${minutes}${hour12 ? suffix : ''}`;\n // time option is valid if within min/max constraints\n if (isWithinMinMax(minTime, maxTime, timeOption, delimiter, includeSeconds)) {\n res.push(timeOption);\n }\n iter.setMinutes(iter.getMinutes() + stepMinutes);\n }\n return res;\n};\nexport const parseTime = (time, timeRegex, delimiter, is12Hour, includeSeconds) => {\n const date = new Date(time);\n // if default time is a ISO 8601 formatted date string, we parse it to hh:mm(am/pm) format\n if (!isNaN(date.getDate()) && (time instanceof Date || time.includes('T'))) {\n const hours = is12Hour\n ? `${date.getHours() > 12 ? date.getHours() - 12 : date.getHours()}`\n : `${date.getHours()}`.padStart(2, '0');\n const minutes = `${date.getMinutes()}`.padStart(2, '0');\n const seconds = includeSeconds ? `${date.getSeconds()}`.padStart(2, '0') : '';\n const secondsWithDelimiter = seconds ? `${delimiter}${seconds}` : '';\n let ampm = '';\n if (is12Hour && date.getHours() > 11) {\n ampm = pmSuffix;\n }\n else if (is12Hour) {\n ampm = amSuffix;\n }\n return `${hours}${delimiter}${minutes}${secondsWithDelimiter}${ampm}`;\n }\n else if (typeof time === 'string') {\n time = time.trim();\n if (time !== '' && validateTime(time, timeRegex, delimiter, is12Hour)) {\n const [, hours, minutes, seconds, suffix = ''] = timeRegex.exec(time);\n const secondsWithDelimiter = includeSeconds ? `${delimiter}${seconds !== null && seconds !== void 0 ? seconds : '00'}` : '';\n let ampm = '';\n // Format AM/PM according to design\n if (is12Hour) {\n const uppercaseSuffix = suffix.toUpperCase();\n if (uppercaseSuffix === amSuffix.toUpperCase().trim()) {\n ampm = amSuffix;\n }\n else if (uppercaseSuffix === pmSuffix.toUpperCase().trim()) {\n ampm = pmSuffix;\n }\n else {\n // if this 12 hour time is missing am/pm but otherwise valid,\n // append am/pm depending on time of day\n ampm = new Date().getHours() > 11 ? pmSuffix : amSuffix;\n }\n }\n return `${hours}${delimiter}${minutes}${secondsWithDelimiter}${ampm}`;\n }\n }\n return time.toString();\n};\nexport const validateTime = (time, timeRegex, delimiter, is12Hour) => {\n // ISO 8601 format is valid\n const date = new Date(time);\n if (!isNaN(date.getDate()) && time.includes('T')) {\n return true;\n }\n // hours only valid if they are [0-23] or [1-12]\n const hours = parseInt(time.split(delimiter)[0]);\n const validHours = hours >= (is12Hour ? 1 : 0) && hours <= (is12Hour ? 12 : 23);\n // minutes verified by timeRegex\n // empty string is valid\n return time === '' || (timeRegex.test(time) && validHours);\n};\nexport const getHours = (time, timeRegex) => {\n const parts = time.match(timeRegex);\n if (parts && parts.length) {\n if (/pm/i.test(parts[4])) {\n return parseInt(parts[1]) === 12 ? parseInt(parts[1]) : parseInt(parts[1]) + 12;\n }\n if (/am/i.test(parts[4])) {\n return parseInt(parts[1]) === 12 ? 0 : parseInt(parts[1]);\n }\n return parseInt(parts[1]);\n }\n return null;\n};\nexport const getMinutes = (time, timeRegex) => {\n const parts = time.match(timeRegex);\n return parts && parts.length ? parseInt(parts[2]) : null;\n};\nexport const getSeconds = (time, timeRegex) => {\n var _a;\n const seconds = (_a = time.match(timeRegex)) === null || _a === void 0 ? void 0 : _a[3];\n return seconds ? parseInt(seconds) : null;\n};\nexport const isWithinMinMax = (minTime, maxTime, time, delimiter, includeSeconds) => {\n // do not throw error if empty string\n if (time.trim() === '') {\n return true;\n }\n // correctly format as 24hr times (12:30AM => 00:30, 1:15 => 01:15)\n const min24HourTime = convertTo24Hour(minTime, delimiter, includeSeconds);\n const selected24HourTime = convertTo24Hour(time, delimiter, includeSeconds);\n const max24HourTime = convertTo24Hour(maxTime, delimiter, includeSeconds);\n // simple string comparison for 24hr times\n return min24HourTime <= selected24HourTime && selected24HourTime <= max24HourTime;\n};\nconst convertTo24Hour = (time, delimiter, includeSeconds) => {\n const timeReg = new RegExp(`^\\\\s*(\\\\d\\\\d?)${delimiter}([0-5]\\\\d)${delimiter}?([0-5]\\\\d)?\\\\s*([AaPp][Mm])?\\\\s*$`);\n const regMatches = timeReg.exec(time);\n if (!regMatches || !regMatches.length) {\n return;\n }\n let hours = regMatches[1].padStart(2, '0');\n const minutes = regMatches[2];\n let seconds = regMatches[3] ? `${delimiter}${regMatches[3]}` : '';\n // When seconds is empty and 'includeSeconds' is enabled, append 0 seconds.\n if (!seconds && includeSeconds) {\n seconds = `${delimiter}00`;\n }\n const suffix = regMatches[4] || '';\n if (suffix.toUpperCase() === 'PM' && hours !== '12') {\n hours = `${parseInt(hours) + 12}`;\n }\n else if (suffix.toUpperCase() === 'AM' && hours === '12') {\n hours = '00';\n }\n return `${hours}${delimiter}${minutes}${seconds}`;\n};\n//# sourceMappingURL=TimePickerUtils.js.map","import { createIcon } from '../createIcon';\n\nexport const OutlinedClockIconConfig = {\n name: 'OutlinedClockIcon',\n height: 512,\n width: 512,\n svgPath: 'M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z',\n yOffset: 0,\n xOffset: 0,\n};\n\nexport const OutlinedClockIcon = createIcon(OutlinedClockIconConfig);\n\nexport default OutlinedClockIcon;","export const c_date_picker__input_c_form_control_Width = {\n \"name\": \"--pf-v5-c-date-picker__input--c-form-control--Width\",\n \"value\": \"calc(10 * 1ch + calc(2rem + 0.5rem))\",\n \"var\": \"var(--pf-v5-c-date-picker__input--c-form-control--Width)\"\n};\nexport default c_date_picker__input_c_form_control_Width;","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport { css } from '@patternfly/react-styles';\nimport datePickerStyles from '@patternfly/react-styles/css/components/DatePicker/date-picker.mjs';\nimport menuStyles from '@patternfly/react-styles/css/components/Menu/menu.mjs';\nimport { getUniqueId } from '../../helpers';\nimport { Popper } from '../../helpers/Popper/Popper';\nimport { Menu, MenuContent, MenuList, MenuItem } from '../Menu';\nimport { InputGroup, InputGroupItem } from '../InputGroup';\nimport { TextInput } from '../TextInput';\nimport { KeyTypes } from '../../helpers/constants';\nimport { parseTime, validateTime, makeTimeOptions, amSuffix, pmSuffix, getHours, getMinutes, isWithinMinMax, getSeconds } from './TimePickerUtils';\nimport { HelperText, HelperTextItem } from '../HelperText';\nimport OutlinedClockIcon from '@patternfly/react-icons/dist/esm/icons/outlined-clock-icon';\nimport cssDatePickerFormControlWidth from '@patternfly/react-tokens/dist/esm/c_date_picker__input_c_form_control_Width';\nclass TimePicker extends React.Component {\n constructor(props) {\n super(props);\n this.baseComponentRef = React.createRef();\n this.toggleRef = React.createRef();\n this.inputRef = React.createRef();\n this.menuRef = React.createRef();\n this.onDocClick = (event) => {\n var _a, _b, _c, _d;\n const clickedOnToggle = (_b = (_a = this.toggleRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.contains(event.target);\n const clickedWithinMenu = (_d = (_c = this.menuRef) === null || _c === void 0 ? void 0 : _c.current) === null || _d === void 0 ? void 0 : _d.contains(event.target);\n if (this.state.isTimeOptionsOpen && !(clickedOnToggle || clickedWithinMenu)) {\n this.onToggle(false);\n }\n };\n this.handleGlobalKeys = (event) => {\n var _a, _b, _c, _d;\n const { isTimeOptionsOpen, focusedIndex, scrollIndex } = this.state;\n // keyboard pressed while focus on toggle\n if ((_b = (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.contains(event.target)) {\n if (!isTimeOptionsOpen && event.key !== KeyTypes.Tab && event.key !== KeyTypes.Escape) {\n this.onToggle(true);\n }\n else if (isTimeOptionsOpen) {\n if (event.key === KeyTypes.Escape || event.key === KeyTypes.Tab) {\n this.onToggle(false);\n }\n else if (event.key === KeyTypes.Enter) {\n if (focusedIndex !== null) {\n this.focusSelection(focusedIndex);\n event.stopPropagation();\n }\n else {\n this.onToggle(false);\n }\n }\n else if (event.key === KeyTypes.ArrowDown || event.key === KeyTypes.ArrowUp) {\n this.focusSelection(scrollIndex);\n this.updateFocusedIndex(0);\n event.preventDefault();\n }\n }\n // keyboard pressed while focus on menu item\n }\n else if ((_d = (_c = this.menuRef) === null || _c === void 0 ? void 0 : _c.current) === null || _d === void 0 ? void 0 : _d.contains(event.target)) {\n if (event.key === KeyTypes.ArrowDown) {\n this.updateFocusedIndex(1);\n event.preventDefault();\n }\n else if (event.key === KeyTypes.ArrowUp) {\n this.updateFocusedIndex(-1);\n event.preventDefault();\n }\n else if (event.key === KeyTypes.Escape || event.key === KeyTypes.Tab) {\n this.inputRef.current.focus();\n this.onToggle(false);\n }\n }\n };\n this.updateFocusedIndex = (increment) => {\n this.setState((prevState) => {\n const maxIndex = this.getOptions().length - 1;\n let nextIndex = prevState.focusedIndex !== null ? prevState.focusedIndex + increment : prevState.scrollIndex + increment;\n if (nextIndex < 0) {\n nextIndex = maxIndex;\n }\n else if (nextIndex > maxIndex) {\n nextIndex = 0;\n }\n this.scrollToIndex(nextIndex);\n return {\n focusedIndex: nextIndex\n };\n });\n };\n // fixes issue where menutAppendTo=\"inline\" results in the menu item that should be scrolled to being out of view; this will select the menu item that comes before the intended one, causing that before-item to be placed out of view instead\n this.getIndexToScroll = (index) => {\n if (this.props.menuAppendTo === 'inline') {\n return index > 0 ? index - 1 : 0;\n }\n return index;\n };\n this.scrollToIndex = (index) => {\n this.getOptions()[index].closest(`.${menuStyles.menuContent}`).scrollTop =\n this.getOptions()[this.getIndexToScroll(index)].offsetTop;\n };\n this.focusSelection = (index) => {\n var _a;\n const indexToFocus = index !== -1 ? index : 0;\n if ((_a = this.menuRef) === null || _a === void 0 ? void 0 : _a.current) {\n this.getOptions()[indexToFocus].querySelector(`.${menuStyles.menuItem}`).focus();\n }\n };\n this.scrollToSelection = (time) => {\n const { delimiter, is24Hour } = this.props;\n let splitTime = time.split(this.props.delimiter);\n let focusedIndex = null;\n // build out the rest of the time assuming hh:00 if it's a partial time\n if (splitTime.length < 2) {\n time = `${time}${delimiter}00`;\n splitTime = time.split(delimiter);\n // due to only the input including seconds when includeSeconds=true, we need to build a temporary time here without those seconds so that an exact or close match can be scrolled to within the menu (which does not include seconds in any of the options)\n }\n else if (splitTime.length > 2) {\n time = parseTime(time, this.state.timeRegex, delimiter, !is24Hour, false);\n splitTime = time.split(delimiter);\n }\n // for 12hr variant, autoscroll to pm if it's currently the afternoon, otherwise autoscroll to am\n if (!is24Hour && splitTime.length > 1 && splitTime[1].length < 2) {\n const minutes = splitTime[1].length === 0 ? '00' : splitTime[1] + '0';\n time = `${splitTime[0]}${delimiter}${minutes}${new Date().getHours() > 11 ? pmSuffix : amSuffix}`;\n }\n else if (!is24Hour &&\n splitTime.length > 1 &&\n splitTime[1].length === 2 &&\n !time.toUpperCase().includes(amSuffix.toUpperCase().trim()) &&\n !time.toUpperCase().includes(pmSuffix.toUpperCase().trim())) {\n time = `${time}${new Date().getHours() > 11 ? pmSuffix : amSuffix}`;\n }\n let scrollIndex = this.getOptions().findIndex((option) => option.textContent === time);\n // if we found an exact match, scroll to match and return index of match for focus\n if (scrollIndex !== -1) {\n this.scrollToIndex(scrollIndex);\n focusedIndex = scrollIndex;\n }\n else if (splitTime.length === 2) {\n // no exact match, scroll to closest hour but don't return index for focus\n let amPm = '';\n if (!is24Hour) {\n if (splitTime[1].toUpperCase().includes('P')) {\n amPm = pmSuffix;\n }\n else if (splitTime[1].toUpperCase().includes('A')) {\n amPm = amSuffix;\n }\n }\n time = `${splitTime[0]}${delimiter}00${amPm}`;\n scrollIndex = this.getOptions().findIndex((option) => option.textContent === time);\n if (scrollIndex !== -1) {\n this.scrollToIndex(scrollIndex);\n }\n }\n this.setState({\n focusedIndex,\n scrollIndex\n });\n };\n this.getRegExp = (includeSeconds = true) => {\n const { is24Hour, delimiter } = this.props;\n let baseRegex = `\\\\s*(\\\\d\\\\d?)${delimiter}([0-5]\\\\d)`;\n if (includeSeconds) {\n baseRegex += `${delimiter}?([0-5]\\\\d)?`;\n }\n return new RegExp(`^${baseRegex}${is24Hour ? '' : '\\\\s*([AaPp][Mm])?'}\\\\s*$`);\n };\n this.getOptions = () => {\n var _a;\n return (((_a = this.menuRef) === null || _a === void 0 ? void 0 : _a.current)\n ? Array.from(this.menuRef.current.querySelectorAll(`.${menuStyles.menuListItem}`))\n : []);\n };\n this.isValidFormat = (time) => {\n if (this.props.validateTime) {\n return this.props.validateTime(time);\n }\n const { delimiter, is24Hour, includeSeconds } = this.props;\n return validateTime(time, this.getRegExp(includeSeconds), delimiter, !is24Hour);\n };\n this.isValidTime = (time) => {\n const { delimiter, includeSeconds } = this.props;\n const { minTimeState, maxTimeState } = this.state;\n return isWithinMinMax(minTimeState, maxTimeState, time, delimiter, includeSeconds);\n };\n this.isValid = (time) => this.isValidFormat(time) && this.isValidTime(time);\n this.onToggle = (isOpen) => {\n // on close, parse and validate input\n this.setState((prevState) => {\n const { timeRegex, isInvalid, timeState } = prevState;\n const { delimiter, is24Hour, includeSeconds, onChange } = this.props;\n const time = parseTime(timeState, timeRegex, delimiter, !is24Hour, includeSeconds);\n // Call onChange when Enter is pressed in input and timeoption does not exist in menu\n if (onChange && !isOpen && time !== timeState) {\n onChange(null, time, getHours(time, timeRegex), getMinutes(time, timeRegex), getSeconds(time, timeRegex), this.isValid(time));\n }\n return {\n isTimeOptionsOpen: isOpen,\n timeState: time,\n isInvalid: isOpen ? isInvalid : !this.isValid(time)\n };\n });\n this.props.setIsOpen(isOpen);\n if (!isOpen) {\n this.inputRef.current.focus();\n }\n };\n this.onSelect = (e) => {\n const { timeRegex, timeState } = this.state;\n const { delimiter, is24Hour, includeSeconds, setIsOpen } = this.props;\n const time = parseTime(e.target.textContent, timeRegex, delimiter, !is24Hour, includeSeconds);\n if (time !== timeState) {\n this.onInputChange(e, time);\n }\n this.inputRef.current.focus();\n this.setState({\n isTimeOptionsOpen: false,\n isInvalid: false\n });\n setIsOpen(false);\n };\n this.onInputClick = (e) => {\n if (!this.state.isTimeOptionsOpen) {\n this.onToggle(true);\n }\n e.stopPropagation();\n };\n this.onInputChange = (event, newTime) => {\n const { onChange } = this.props;\n const { timeRegex } = this.state;\n if (onChange) {\n onChange(event, newTime, getHours(newTime, timeRegex), getMinutes(newTime, timeRegex), getSeconds(newTime, timeRegex), this.isValid(newTime));\n }\n this.scrollToSelection(newTime);\n this.setState({\n timeState: newTime\n });\n };\n const { is24Hour, delimiter, time, includeSeconds, isOpen } = this.props;\n let { minTime, maxTime } = this.props;\n if (minTime === '') {\n const minSeconds = includeSeconds ? `${delimiter}00` : '';\n minTime = is24Hour ? `00${delimiter}00${minSeconds}` : `12${delimiter}00${minSeconds} AM`;\n }\n if (maxTime === '') {\n const maxSeconds = includeSeconds ? `${delimiter}59` : '';\n maxTime = is24Hour ? `23${delimiter}59${maxSeconds}` : `11${delimiter}59${maxSeconds} PM`;\n }\n const timeRegex = this.getRegExp();\n this.state = {\n isInvalid: false,\n isTimeOptionsOpen: isOpen,\n timeState: parseTime(time, timeRegex, delimiter, !is24Hour, includeSeconds),\n focusedIndex: null,\n scrollIndex: 0,\n timeRegex,\n minTimeState: parseTime(minTime, timeRegex, delimiter, !is24Hour, includeSeconds),\n maxTimeState: parseTime(maxTime, timeRegex, delimiter, !is24Hour, includeSeconds)\n };\n }\n componentDidMount() {\n document.addEventListener('mousedown', this.onDocClick);\n document.addEventListener('touchstart', this.onDocClick);\n document.addEventListener('keydown', this.handleGlobalKeys);\n this.setState({ isInvalid: !this.isValid(this.state.timeState) });\n }\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.onDocClick);\n document.removeEventListener('touchstart', this.onDocClick);\n document.removeEventListener('keydown', this.handleGlobalKeys);\n }\n componentDidUpdate(prevProps, prevState) {\n const { timeState, isTimeOptionsOpen, isInvalid, timeRegex } = this.state;\n const { time, is24Hour, delimiter, includeSeconds, isOpen, minTime, maxTime } = this.props;\n if (prevProps.isOpen !== isOpen) {\n this.onToggle(isOpen);\n }\n if (isTimeOptionsOpen && !prevState.isTimeOptionsOpen && timeState && !isInvalid) {\n this.scrollToSelection(timeState);\n }\n if (delimiter !== prevProps.delimiter) {\n this.setState({\n timeRegex: this.getRegExp()\n });\n }\n if (time !== '' && time !== prevProps.time) {\n const parsedTime = parseTime(time, timeRegex, delimiter, !is24Hour, includeSeconds);\n this.setState({\n timeState: parsedTime,\n isInvalid: !this.isValid(parsedTime)\n });\n }\n if (minTime !== '' && minTime !== prevProps.minTime) {\n this.setState({\n minTimeState: parseTime(minTime, timeRegex, delimiter, !is24Hour, includeSeconds)\n });\n }\n if (maxTime !== '' && maxTime !== prevProps.maxTime) {\n this.setState({\n maxTimeState: parseTime(maxTime, timeRegex, delimiter, !is24Hour, includeSeconds)\n });\n }\n }\n render() {\n const _a = this.props, { 'aria-label': ariaLabel, isDisabled, className, placeholder, id, menuAppendTo, is24Hour, invalidFormatErrorMessage, invalidMinMaxErrorMessage, stepMinutes, width, delimiter, inputProps, \n /* eslint-disable @typescript-eslint/no-unused-vars */\n onChange, \n /* eslint-disable @typescript-eslint/no-unused-vars */\n setIsOpen, \n /* eslint-disable @typescript-eslint/no-unused-vars */\n isOpen, time, validateTime, minTime, maxTime, includeSeconds, zIndex } = _a, props = __rest(_a, ['aria-label', \"isDisabled\", \"className\", \"placeholder\", \"id\", \"menuAppendTo\", \"is24Hour\", \"invalidFormatErrorMessage\", \"invalidMinMaxErrorMessage\", \"stepMinutes\", \"width\", \"delimiter\", \"inputProps\", \"onChange\", \"setIsOpen\", \"isOpen\", \"time\", \"validateTime\", \"minTime\", \"maxTime\", \"includeSeconds\", \"zIndex\"]);\n const { timeState, isTimeOptionsOpen, isInvalid, minTimeState, maxTimeState } = this.state;\n const style = { [cssDatePickerFormControlWidth.name]: width };\n const options = makeTimeOptions(stepMinutes, !is24Hour, delimiter, minTimeState, maxTimeState, includeSeconds);\n const isValidFormat = this.isValidFormat(timeState);\n const randomId = id || getUniqueId('time-picker');\n const getParentElement = () => {\n if (this.baseComponentRef && this.baseComponentRef.current) {\n return this.baseComponentRef.current.parentElement;\n }\n return null;\n };\n const menuContainer = (React.createElement(Menu, { ref: this.menuRef, isScrollable: true },\n React.createElement(MenuContent, { maxMenuHeight: \"200px\" },\n React.createElement(MenuList, { \"aria-label\": ariaLabel }, options.map((option, index) => (React.createElement(MenuItem, { onClick: this.onSelect, key: option, id: `${randomId}-option-${index}` }, option)))))));\n const textInput = (React.createElement(TextInput, Object.assign({ \"aria-haspopup\": \"menu\", id: `${randomId}-input`, \"aria-label\": ariaLabel, validated: isInvalid ? 'error' : 'default', placeholder: placeholder, value: timeState || '', type: \"text\", customIcon: React.createElement(OutlinedClockIcon, null), onClick: this.onInputClick, onChange: this.onInputChange, autoComplete: \"off\", isDisabled: isDisabled, isExpanded: isTimeOptionsOpen, ref: this.inputRef }, inputProps)));\n let calculatedAppendTo;\n switch (menuAppendTo) {\n case 'inline':\n calculatedAppendTo = () => this.toggleRef.current;\n break;\n case 'parent':\n calculatedAppendTo = getParentElement;\n break;\n default:\n calculatedAppendTo = menuAppendTo;\n }\n return (React.createElement(\"div\", { ref: this.baseComponentRef, className: css(datePickerStyles.datePicker, className) },\n React.createElement(\"div\", Object.assign({ className: css(datePickerStyles.datePickerInput), style: style }, props),\n React.createElement(InputGroup, null,\n React.createElement(InputGroupItem, null,\n React.createElement(\"div\", { id: randomId },\n React.createElement(\"div\", { ref: this.toggleRef, style: { paddingLeft: '0' } },\n React.createElement(Popper, { appendTo: calculatedAppendTo, trigger: textInput, triggerRef: this.toggleRef, popper: menuContainer, popperRef: this.menuRef, isVisible: isTimeOptionsOpen, zIndex: zIndex }))))),\n isInvalid && (React.createElement(\"div\", { className: css(datePickerStyles.datePickerHelperText) },\n React.createElement(HelperText, null,\n React.createElement(HelperTextItem, { variant: \"error\" }, !isValidFormat ? invalidFormatErrorMessage : invalidMinMaxErrorMessage)))))));\n }\n}\nTimePicker.displayName = 'TimePicker';\nTimePicker.defaultProps = {\n className: '',\n isDisabled: false,\n time: '',\n is24Hour: false,\n invalidFormatErrorMessage: 'Invalid time format',\n invalidMinMaxErrorMessage: 'Invalid time entered',\n placeholder: 'hh:mm',\n delimiter: ':',\n 'aria-label': 'Time picker',\n width: '150px',\n menuAppendTo: 'inline',\n stepMinutes: 30,\n inputProps: {},\n minTime: '',\n maxTime: '',\n isOpen: false,\n setIsOpen: () => { },\n zIndex: 9999\n};\nexport { TimePicker };\n//# sourceMappingURL=TimePicker.js.map","import { createIcon } from '../createIcon';\n\nexport const CaretUpIconConfig = {\n name: 'CaretUpIcon',\n height: 512,\n width: 320,\n svgPath: 'M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z',\n yOffset: 0,\n xOffset: 0,\n};\n\nexport const CaretUpIcon = createIcon(CaretUpIconConfig);\n\nexport default CaretUpIcon;","import type UserRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userRepresentation\";\nimport type { UserQuery } from \"@keycloak/keycloak-admin-client/lib/resources/users\";\nimport {\n Button,\n Chip,\n ChipGroup,\n FormGroup,\n MenuToggle,\n Select,\n SelectList,\n SelectOption,\n TextInputGroup,\n TextInputGroupMain,\n TextInputGroupUtilities,\n} from \"@patternfly/react-core\";\nimport { debounce } from \"lodash-es\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { FormErrorText, HelpItem } from \"@keycloak/keycloak-ui-shared\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport useToggle from \"../../utils/useToggle\";\nimport type { ComponentProps } from \"../dynamic/components\";\nimport { TimesIcon } from \"@patternfly/react-icons\";\n\ntype UserSelectVariant = \"typeaheadMulti\" | \"typeahead\";\n\ntype UserSelectProps = ComponentProps & {\n variant?: UserSelectVariant;\n isRequired?: boolean;\n};\n\nexport const UserSelect = ({\n name,\n label,\n helpText,\n defaultValue,\n isRequired,\n variant = \"typeaheadMulti\",\n}: UserSelectProps) => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const {\n control,\n getValues,\n formState: { errors },\n } = useFormContext();\n const values: string[] | undefined = getValues(name!);\n\n const [open, toggleOpen, setOpen] = useToggle();\n const [users, setUsers] = useState<(UserRepresentation | undefined)[]>([]);\n const [inputValue, setInputValue] = useState(\"\");\n const [search, setSearch] = useState(\"\");\n const textInputRef = useRef();\n\n const debounceFn = useCallback(debounce(setSearch, 1000), []);\n\n useFetch(\n () => {\n const params: UserQuery = {\n max: 20,\n };\n if (search) {\n params.username = search;\n }\n\n if (values?.length && !search) {\n return Promise.all(\n values.map((id: string) => adminClient.users.findOne({ id })),\n );\n }\n return adminClient.users.find(params);\n },\n setUsers,\n [search],\n );\n\n const convert = (clients: (UserRepresentation | undefined)[]) =>\n clients\n .filter((c) => c !== undefined)\n .map((option) => (\n \n {option!.username}\n \n ));\n\n return (\n }\n fieldId={name!}\n >\n value.length > 0 }\n : { required: isRequired }\n }\n render={({ field }) => (\n (\n \n \n {\n setOpen(true);\n setInputValue(value);\n debounceFn(value);\n }}\n autoComplete=\"off\"\n innerRef={textInputRef}\n placeholderText={t(\"selectAUser\")}\n {...(field.value && {\n \"aria-activedescendant\": field.value,\n })}\n role=\"combobox\"\n isExpanded={open}\n aria-controls=\"select-create-typeahead-listbox\"\n >\n {variant === \"typeaheadMulti\" &&\n Array.isArray(field.value) && (\n \n {field.value.map(\n (selection: string, index: number) => (\n {\n ev.stopPropagation();\n field.onChange(\n field.value.filter(\n (item: string) => item !== selection,\n ),\n );\n }}\n >\n {\n users.find((u) => u?.id === selection)\n ?.username\n }\n \n ),\n )}\n \n )}\n \n \n {!!search && (\n {\n setInputValue(\"\");\n setSearch(\"\");\n field.onChange([]);\n textInputRef?.current?.focus();\n }}\n aria-label=\"Clear input value\"\n >\n \n \n )}\n \n \n \n )}\n isOpen={open}\n selected={field.value}\n onSelect={(_, v) => {\n const option = v?.toString();\n if (variant !== \"typeaheadMulti\") {\n const removed = field.value.includes(option);\n removed ? field.onChange([]) : field.onChange([option]);\n setInputValue(\n removed\n ? \"\"\n : users.find((u) => u?.id === option)?.username || \"\",\n );\n setOpen(false);\n } else {\n const changedValue = field.value.find(\n (v: string) => v === option,\n )\n ? field.value.filter((v: string) => v !== option)\n : [...field.value, option];\n field.onChange(changedValue);\n }\n }}\n aria-label={t(name!)}\n >\n {convert(users)} \n \n )}\n />\n {errors[name!] && }\n \n );\n};\n","import { FormGroup, Radio } from \"@patternfly/react-core\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { HelpItem } from \"@keycloak/keycloak-ui-shared\";\n\nconst DECISION_STRATEGY = [\"UNANIMOUS\", \"AFFIRMATIVE\", \"CONSENSUS\"] as const;\n\ntype DecisionStrategySelectProps = {\n helpLabel?: string;\n isDisabled?: boolean;\n isLimited?: boolean;\n};\n\nexport const DecisionStrategySelect = ({\n helpLabel,\n isDisabled = false,\n isLimited = false,\n}: DecisionStrategySelectProps) => {\n const { t } = useTranslation();\n const { control } = useFormContext();\n\n return (\n \n }\n fieldId=\"decisionStrategy\"\n hasNoPaddingTop\n >\n (\n <>\n {(isLimited\n ? DECISION_STRATEGY.slice(0, 2)\n : DECISION_STRATEGY\n ).map((strategy) => (\n field.onChange(strategy)}\n label={t(`decisionStrategies.${strategy}`)}\n className=\"pf-v5-u-mb-md\"\n />\n ))}\n >\n )}\n />\n \n );\n};\n","import PolicyProviderRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyProviderRepresentation\";\nimport type PolicyRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyRepresentation\";\nimport type ResourceRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/resourceRepresentation\";\nimport type {\n Clients,\n PolicyQuery,\n} from \"@keycloak/keycloak-admin-client/lib/resources/clients\";\nimport {\n Button,\n ButtonVariant,\n Chip,\n ChipGroup,\n SelectOption,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport {\n Controller,\n ControllerRenderProps,\n useFormContext,\n} from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport {\n KeycloakSelect,\n SelectVariant,\n Variant,\n} from \"@keycloak/keycloak-ui-shared\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport useToggle from \"../../utils/useToggle\";\nimport { toCreatePolicy } from \"../routes/NewPolicy\";\nimport { toPolicyDetails } from \"../routes/PolicyDetails\";\nimport { toResourceDetails } from \"../routes/Resource\";\nimport { NewPolicyDialog } from \"./NewPolicyDialog\";\n\ntype Type = \"resources\" | \"policies\";\n\ntype ResourcesPolicySelectProps = {\n name: Type;\n clientId: string;\n permissionId?: string;\n variant?: Variant;\n preSelected?: string;\n isRequired?: boolean;\n};\n\ntype Policies = {\n id?: string;\n name?: string;\n type?: string;\n};\n\ntype TypeMapping = {\n [key in Type]: {\n searchFunction: keyof Pick;\n fetchFunction: keyof Pick<\n Clients,\n \"getAssociatedPolicies\" | \"getAssociatedResources\"\n >;\n };\n};\n\nconst typeMapping: TypeMapping = {\n resources: {\n searchFunction: \"listResources\",\n fetchFunction: \"getAssociatedResources\",\n },\n policies: {\n searchFunction: \"listPolicies\",\n fetchFunction: \"getAssociatedPolicies\",\n },\n};\n\nexport const ResourcesPolicySelect = ({\n name,\n clientId,\n permissionId,\n variant = SelectVariant.typeaheadMulti,\n preSelected,\n isRequired = false,\n}: ResourcesPolicySelectProps) => {\n const { adminClient } = useAdminClient();\n\n const { realm } = useRealm();\n const { t } = useTranslation();\n const navigate = useNavigate();\n\n const {\n control,\n formState: { errors, isDirty },\n } = useFormContext();\n const [items, setItems] = useState([]);\n const [search, setSearch] = useState(\"\");\n const [open, setOpen] = useState(false);\n const [createPolicyDialog, toggleCreatePolicyDialog] = useToggle();\n const [policyProviders, setPolicyProviders] =\n useState();\n const [onUnsavedChangesConfirm, setOnUnsavedChangesConfirm] =\n useState<() => void>();\n\n const functions = typeMapping[name];\n\n const convert = (\n p: PolicyRepresentation | ResourceRepresentation,\n ): Policies => ({\n id: \"_id\" in p ? p._id : \"id\" in p ? p.id : undefined,\n name: p.name,\n type: p.type,\n });\n\n useFetch(\n async () => {\n const params: PolicyQuery = Object.assign(\n { id: clientId, first: 0, max: 10, permission: \"false\" },\n search === \"\" ? null : { name: search },\n );\n return await Promise.all([\n adminClient.clients.listPolicyProviders({ id: clientId }),\n adminClient.clients[functions.searchFunction](params),\n permissionId\n ? adminClient.clients[functions.fetchFunction]({\n id: clientId,\n permissionId,\n })\n : Promise.resolve([]),\n ]);\n },\n ([providers, ...policies]) => {\n setPolicyProviders(\n providers.filter((p) => p.type !== \"resource\" && p.type !== \"scope\"),\n );\n setItems(\n policies\n .flat()\n .filter(\n (r): r is PolicyRepresentation | ResourceRepresentation =>\n typeof r !== \"string\",\n )\n .map(convert)\n .filter(\n ({ id }, index, self) =>\n index === self.findIndex(({ id: otherId }) => id === otherId),\n ),\n );\n },\n [search],\n );\n\n const [toggleUnsavedChangesDialog, UnsavedChangesConfirm] = useConfirmDialog({\n titleKey: t(\"unsavedChangesTitle\"),\n messageKey: t(\"unsavedChangesConfirm\"),\n continueButtonLabel: t(\"continue\"),\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: () => onUnsavedChangesConfirm?.(),\n });\n\n const to = (policy: Policies) =>\n name === \"policies\"\n ? toPolicyDetails({\n realm: realm,\n id: clientId,\n policyId: policy.id!,\n policyType: policy.type!,\n })\n : toResourceDetails({\n realm,\n id: clientId,\n resourceId: policy.id!,\n });\n\n const toSelectOptions = () =>\n items.map((p) => (\n \n {p.name}\n \n ));\n\n const toChipGroupItems = (\n field: ControllerRenderProps,\n ) => {\n return (\n \n {field.value?.map((permissionId) => {\n const item = items.find(\n (permission) => permission.id === permissionId,\n );\n\n if (!item) return;\n\n const route = to(item);\n return (\n {\n field.onChange(field.value?.filter((id) => id !== item.id));\n }}\n >\n {\n if (isDirty) {\n event.preventDefault();\n setOnUnsavedChangesConfirm(() => () => navigate(route));\n toggleUnsavedChangesDialog();\n }\n }}\n >\n {item.name}\n \n \n );\n })}\n \n );\n };\n\n return (\n <>\n \n {createPolicyDialog && (\n {\n navigate(\n toCreatePolicy({ id: clientId, realm, policyType: p.type! }),\n );\n }}\n toggleDialog={toggleCreatePolicyDialog}\n />\n )}\n !isRequired || value!.length > 0 }}\n render={({ field }) => (\n setOpen(val)}\n onFilter={(filter) => {\n setSearch(filter);\n return toSelectOptions();\n }}\n onClear={() => {\n field.onChange([]);\n setSearch(\"\");\n }}\n selections={field.value}\n onSelect={(selectedValue) => {\n const option = selectedValue.toString();\n if (variant === SelectVariant.typeaheadMulti) {\n const changedValue = field.value?.find(\n (p: string) => p === option,\n )\n ? field.value.filter((p: string) => p !== option)\n : [...field.value!, option];\n field.onChange(changedValue);\n } else {\n field.onChange([option]);\n }\n\n setSearch(\"\");\n }}\n isOpen={open}\n aria-label={t(name)}\n isDisabled={!!preSelected}\n validated={errors[name] ? \"error\" : \"default\"}\n typeAheadAriaLabel={t(name)}\n chipGroupComponent={toChipGroupItems(field)}\n footer={\n name === \"policies\" ? (\n {\n if (isDirty) {\n setOpen(false);\n setOnUnsavedChangesConfirm(\n () => toggleCreatePolicyDialog,\n );\n toggleUnsavedChangesDialog();\n } else {\n toggleCreatePolicyDialog();\n }\n }}\n >\n {t(\"createPolicy\")}\n \n ) : undefined\n }\n >\n {toSelectOptions()}\n \n )}\n />\n >\n );\n};\n","import { FormGroup } from \"@patternfly/react-core\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { HelpItem } from \"@keycloak/keycloak-ui-shared\";\nimport { useParams } from \"../../../utils/useParams\";\nimport type { PolicyDetailsParams } from \"../../routes/PolicyDetails\";\nimport { DecisionStrategySelect } from \"../DecisionStrategySelect\";\nimport { ResourcesPolicySelect } from \"../ResourcesPolicySelect\";\n\nexport const Aggregate = () => {\n const { t } = useTranslation();\n const { id } = useParams();\n\n return (\n <>\n \n }\n >\n \n \n \n >\n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { ClientSelect } from \"../../../components/client/ClientSelect\";\n\nexport const Client = () => {\n const { t } = useTranslation();\n\n return (\n \n );\n};\n","import type ClientScopeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientScopeRepresentation\";\nimport { KeycloakSelect } from \"@keycloak/keycloak-ui-shared\";\nimport {\n Button,\n ButtonVariant,\n Dropdown,\n DropdownItem,\n DropdownList,\n MenuToggle,\n Modal,\n ModalVariant,\n SelectOption,\n} from \"@patternfly/react-core\";\nimport {\n CaretDownIcon,\n CaretUpIcon,\n FilterIcon,\n} from \"@patternfly/react-icons\";\nimport { useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n ClientScopeType,\n clientScopeTypesDropdown,\n} from \"../../components/client-scope/ClientScopeTypes\";\nimport { ListEmptyState } from \"../../components/list-empty-state/ListEmptyState\";\nimport { KeycloakDataTable } from \"../../components/table-toolbar/KeycloakDataTable\";\nimport useToggle from \"../../utils/useToggle\";\nimport { getProtocolName } from \"../utils\";\n\nimport \"./client-scopes.css\";\n\nexport type AddScopeDialogProps = {\n clientScopes: ClientScopeRepresentation[];\n clientName?: string;\n open: boolean;\n toggleDialog: () => void;\n onAdd: (\n scopes: { scope: ClientScopeRepresentation; type?: ClientScopeType }[],\n ) => void;\n isClientScopesConditionType?: boolean;\n};\n\nenum FilterType {\n Name = \"Name\",\n Protocol = \"Protocol\",\n}\n\nenum ProtocolType {\n All = \"All\",\n SAML = \"SAML\",\n OpenIDConnect = \"OpenID Connect\",\n}\n\nexport const AddScopeDialog = ({\n clientScopes: scopes,\n clientName,\n open,\n toggleDialog,\n onAdd,\n isClientScopesConditionType,\n}: AddScopeDialogProps) => {\n const { t } = useTranslation();\n const [addToggle, setAddToggle] = useState(false);\n const [rows, setRows] = useState([]);\n const [filterType, setFilterType] = useState(FilterType.Name);\n const [protocolType, setProtocolType] = useState(ProtocolType.All);\n\n const [isFilterTypeDropdownOpen, toggleIsFilterTypeDropdownOpen] =\n useToggle();\n\n const [isProtocolTypeDropdownOpen, toggleIsProtocolTypeDropdownOpen] =\n useToggle(false);\n\n const clientScopes = useMemo(() => {\n if (protocolType === ProtocolType.OpenIDConnect) {\n return scopes.filter((item) => item.protocol === \"openid-connect\");\n } else if (protocolType === ProtocolType.SAML) {\n return scopes.filter((item) => item.protocol === \"saml\");\n }\n return scopes;\n }, [scopes, filterType, protocolType]);\n\n const action = (scope: ClientScopeType) => {\n const scopes = rows.map((row) => {\n return { scope: row, type: scope };\n });\n onAdd(scopes);\n setAddToggle(false);\n toggleDialog();\n };\n\n const onFilterTypeDropdownSelect = (filterType: string) => {\n if (filterType === FilterType.Name) {\n setFilterType(FilterType.Protocol);\n } else if (filterType === FilterType.Protocol) {\n setFilterType(FilterType.Name);\n setProtocolType(ProtocolType.All);\n }\n\n toggleIsFilterTypeDropdownOpen();\n };\n\n const onProtocolTypeDropdownSelect = (protocolType: string) => {\n if (protocolType === ProtocolType.SAML) {\n setProtocolType(ProtocolType.SAML);\n } else if (protocolType === ProtocolType.OpenIDConnect) {\n setProtocolType(ProtocolType.OpenIDConnect);\n } else if (protocolType === ProtocolType.All) {\n setProtocolType(ProtocolType.All);\n }\n\n toggleIsProtocolTypeDropdownOpen();\n };\n\n const protocolTypeOptions = [\n \n {t(\"protocolTypes.saml\")}\n ,\n \n {t(\"protocolTypes.openid-connect\")}\n ,\n \n {t(\"protocolTypes.all\")}\n ,\n ];\n\n return (\n {\n const scopes = rows.map((scope) => ({ scope }));\n onAdd(scopes);\n toggleDialog();\n }}\n isDisabled={rows.length === 0}\n >\n {t(\"add\")}\n ,\n {\n setRows([]);\n toggleDialog();\n }}\n >\n {t(\"cancel\")}\n ,\n ]\n : [\n setAddToggle(isOpen)}\n className=\"keycloak__client-scopes-add__add-dropdown\"\n key=\"add-dropdown\"\n isOpen={addToggle}\n toggle={(ref) => (\n setAddToggle(!addToggle)}\n variant=\"primary\"\n id=\"add-dropdown\"\n statusIcon={ }\n >\n {t(\"add\")}\n \n )}\n >\n \n {clientScopeTypesDropdown(t, action)}\n \n ,\n {\n setRows([]);\n toggleDialog();\n }}\n >\n {t(\"cancel\")}\n ,\n ]\n }\n >\n {\n onFilterTypeDropdownSelect(filterType);\n }}\n onOpenChange={toggleIsFilterTypeDropdownOpen}\n toggle={(ref) => (\n }\n statusIcon={ }\n >\n {filterType}\n \n )}\n isOpen={isFilterTypeDropdownOpen}\n >\n \n \n {filterType === FilterType.Name ? t(\"protocol\") : t(\"name\")}\n \n \n \n }\n toolbarItem={\n filterType === FilterType.Protocol && (\n <>\n {\n onFilterTypeDropdownSelect(filterType);\n }}\n onOpenChange={toggleIsFilterTypeDropdownOpen}\n data-testid=\"filter-type-dropdown\"\n toggle={(ref) => (\n }\n icon={ }\n >\n {filterType}\n \n )}\n isOpen={isFilterTypeDropdownOpen}\n >\n \n \n {t(\"name\")}\n \n \n \n \n onProtocolTypeDropdownSelect(value.toString())\n }\n selections={protocolType}\n isOpen={isProtocolTypeDropdownOpen}\n >\n {protocolTypeOptions}\n \n >\n )\n }\n canSelectAll\n onSelect={(rows) => setRows(rows)}\n columns={[\n {\n name: \"name\",\n },\n {\n name: \"protocol\",\n displayKey: \"protocol\",\n cellRenderer: (client) =>\n getProtocolName(t, client.protocol ?? \"openid-connect\"),\n },\n {\n name: \"description\",\n },\n ]}\n emptyState={\n \n }\n />\n \n );\n};\n","import type ClientScopeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientScopeRepresentation\";\nimport { Button, Checkbox, FormGroup } from \"@patternfly/react-core\";\nimport { MinusCircleIcon } from \"@patternfly/react-icons\";\nimport { Table, Tbody, Td, Th, Thead, Tr } from \"@patternfly/react-table\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { FormErrorText, HelpItem } from \"@keycloak/keycloak-ui-shared\";\nimport { useAdminClient } from \"../../../admin-client\";\nimport { useFetch } from \"../../../utils/useFetch\";\nimport useLocaleSort, { mapByKey } from \"../../../utils/useLocaleSort\";\nimport { AddScopeDialog } from \"../../scopes/AddScopeDialog\";\n\nexport type RequiredIdValue = {\n id: string;\n required: boolean;\n};\n\nexport const ClientScope = () => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const {\n control,\n getValues,\n setValue,\n formState: { errors },\n } = useFormContext<{\n clientScopes: RequiredIdValue[];\n }>();\n\n const [open, setOpen] = useState(false);\n const [scopes, setScopes] = useState([]);\n const [selectedScopes, setSelectedScopes] = useState<\n ClientScopeRepresentation[]\n >([]);\n\n const localeSort = useLocaleSort();\n\n useFetch(\n () => adminClient.clientScopes.find(),\n (scopes) => {\n setSelectedScopes(\n getValues(\"clientScopes\").map(\n (s) => scopes.find((c) => c.id === s.id)!,\n ),\n );\n setScopes(localeSort(scopes, mapByKey(\"name\")));\n },\n [],\n );\n\n return (\n \n }\n fieldId=\"clientScopes\"\n isRequired\n >\n \n value.filter((c) => c.id).length > 0,\n }}\n render={({ field }) => (\n <>\n {open && (\n \n !field.value\n .map((c: RequiredIdValue) => c.id)\n .includes(scope.id!),\n )}\n isClientScopesConditionType\n open={open}\n toggleDialog={() => setOpen(!open)}\n onAdd={(scopes) => {\n setSelectedScopes([\n ...selectedScopes,\n ...scopes.map((s) => s.scope),\n ]);\n field.onChange([\n ...field.value,\n ...scopes\n .map((scope) => scope.scope)\n .map((item) => ({ id: item.id!, required: false })),\n ]);\n }}\n />\n )}\n {\n setOpen(true);\n }}\n >\n {t(\"addClientScopes\")}\n \n >\n )}\n />\n {selectedScopes.length > 0 && (\n \n \n \n {t(\"clientScopeTitle\")} \n {t(\"required\")} \n \n \n \n \n {selectedScopes.map((scope, index) => (\n \n {scope.name} \n \n (\n \n )}\n />\n \n \n }\n onClick={() => {\n setValue(\"clientScopes\", [\n ...getValues(\"clientScopes\").filter(\n (s) => s.id !== scope.id,\n ),\n ]);\n setSelectedScopes([\n ...selectedScopes.filter((s) => s.id !== scope.id),\n ]);\n }}\n />\n \n \n ))}\n \n
\n )}\n {errors.clientScopes && (\n \n )}\n \n );\n};\n","import type GroupRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/groupRepresentation\";\nimport {\n FormErrorText,\n HelpItem,\n TextControl,\n} from \"@keycloak/keycloak-ui-shared\";\nimport { Button, Checkbox, FormGroup } from \"@patternfly/react-core\";\nimport { MinusCircleIcon } from \"@patternfly/react-icons\";\nimport { Table, Tbody, Td, Th, Thead, Tr } from \"@patternfly/react-table\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAdminClient } from \"../../../admin-client\";\nimport { GroupPickerDialog } from \"../../../components/group/GroupPickerDialog\";\nimport { useFetch } from \"../../../utils/useFetch\";\n\ntype GroupForm = {\n groups?: GroupValue[];\n groupsClaim: string;\n};\n\nexport type GroupValue = {\n id: string;\n extendChildren: boolean;\n};\n\nexport const Group = () => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const {\n control,\n getValues,\n setValue,\n formState: { errors },\n } = useFormContext();\n const values = getValues(\"groups\");\n\n const [open, setOpen] = useState(false);\n const [selectedGroups, setSelectedGroups] = useState(\n [],\n );\n\n useFetch(\n () => {\n if (values && values.length > 0)\n return Promise.all(\n values.map((g) => adminClient.groups.findOne({ id: g.id })),\n );\n return Promise.resolve([]);\n },\n (groups) => {\n const filteredGroup = groups.filter((g) => g) as GroupRepresentation[];\n setSelectedGroups(filteredGroup);\n },\n [],\n );\n\n return (\n <>\n \n \n }\n fieldId=\"groups\"\n isRequired\n >\n \n value && value.filter(({ id }) => id).length > 0,\n }}\n render={({ field }) => (\n <>\n {open && (\n {\n field.onChange([\n ...(field.value || []),\n ...(groups || []).map(({ id }) => ({ id })),\n ]);\n setSelectedGroups([...selectedGroups, ...(groups || [])]);\n setOpen(false);\n }}\n onClose={() => {\n setOpen(false);\n }}\n filterGroups={selectedGroups}\n />\n )}\n {\n setOpen(true);\n }}\n >\n {t(\"addGroups\")}\n \n >\n )}\n />\n {selectedGroups.length > 0 && (\n \n \n \n {t(\"groups\")} \n {t(\"extendToChildren\")} \n \n \n \n \n {selectedGroups.map((group, index) => (\n \n {group.path} \n \n (\n \n )}\n />\n \n \n }\n onClick={() => {\n setValue(\"groups\", [\n ...(values || []).filter(({ id }) => id !== group.id),\n ]);\n setSelectedGroups([\n ...selectedGroups.filter(({ id }) => id !== group.id),\n ]);\n }}\n />\n \n \n ))}\n \n
\n )}\n {errors.groups && }\n \n >\n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { FormGroup } from \"@patternfly/react-core\";\nimport { CodeEditor, Language } from \"@patternfly/react-code-editor\";\n\nimport { HelpItem } from \"@keycloak/keycloak-ui-shared\";\n\nexport const JavaScript = () => {\n const { t } = useTranslation();\n const { control } = useFormContext();\n\n return (\n \n }\n fieldId=\"code\"\n isRequired\n >\n (\n \n )}\n />\n \n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { FormGroup, Radio } from \"@patternfly/react-core\";\n\nimport { HelpItem } from \"@keycloak/keycloak-ui-shared\";\n\nconst LOGIC_TYPES = [\"POSITIVE\", \"NEGATIVE\"] as const;\n\ntype LogicSelectorProps = {\n isDisabled: boolean;\n};\n\nexport const LogicSelector = ({ isDisabled }: LogicSelectorProps) => {\n const { t } = useTranslation();\n const { control } = useFormContext();\n\n return (\n }\n fieldId=\"logic\"\n hasNoPaddingTop\n >\n (\n <>\n {LOGIC_TYPES.map((type) => (\n field.onChange(type)}\n label={t(`logicType.${type.toLowerCase()}`)}\n className=\"pf-v5-u-mb-md\"\n isDisabled={isDisabled}\n />\n ))}\n >\n )}\n />\n \n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { TextAreaControl, TextControl } from \"@keycloak/keycloak-ui-shared\";\n\ntype NameDescriptionProps = {\n isDisabled: boolean;\n};\n\nexport const NameDescription = ({ isDisabled }: NameDescriptionProps) => {\n const { t } = useTranslation();\n\n return (\n <>\n \n \n >\n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { SwitchControl, TextControl } from \"@keycloak/keycloak-ui-shared\";\n\nexport const Regex = () => {\n const { t } = useTranslation();\n\n return (\n <>\n \n \n \n >\n );\n};\n","import { Button, Checkbox, FormGroup } from \"@patternfly/react-core\";\nimport { MinusCircleIcon } from \"@patternfly/react-icons\";\nimport { Table, Tbody, Td, Th, Thead, Tr } from \"@patternfly/react-table\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { FormErrorText, HelpItem } from \"@keycloak/keycloak-ui-shared\";\nimport { useAdminClient } from \"../../../admin-client\";\nimport { DefaultSwitchControl } from \"../../../components/SwitchControl\";\nimport { AddRoleMappingModal } from \"../../../components/role-mapping/AddRoleMappingModal\";\nimport { Row, ServiceRole } from \"../../../components/role-mapping/RoleMapping\";\nimport { useFetch } from \"../../../utils/useFetch\";\nimport type { RequiredIdValue } from \"./ClientScope\";\n\nexport const Role = () => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const {\n control,\n getValues,\n setValue,\n formState: { errors },\n } = useFormContext<{\n roles?: RequiredIdValue[];\n fetchRoles?: boolean;\n }>();\n const values = getValues(\"roles\");\n\n const [open, setOpen] = useState(false);\n const [selectedRoles, setSelectedRoles] = useState([]);\n\n useFetch(\n async () => {\n if (values && values.length > 0) {\n const roles = await Promise.all(\n values.map((r) => adminClient.roles.findOneById({ id: r.id })),\n );\n return Promise.all(\n roles.map(async (role) => ({\n role: role!,\n client: role!.clientRole\n ? await adminClient.clients.findOne({\n id: role?.containerId!,\n })\n : undefined,\n })),\n );\n }\n return Promise.resolve([]);\n },\n setSelectedRoles,\n [],\n );\n\n return (\n <>\n \n }\n fieldId=\"roles\"\n isRequired\n >\n \n value && value.filter((c) => c.id).length > 0,\n }}\n render={({ field }) => (\n <>\n {open && (\n {\n field.onChange([\n ...(field.value || []),\n ...rows.map((row) => ({ id: row.role.id })),\n ]);\n setSelectedRoles([...selectedRoles, ...rows]);\n setOpen(false);\n }}\n onClose={() => {\n setOpen(false);\n }}\n isLDAPmapper\n />\n )}\n {\n setOpen(true);\n }}\n >\n {t(\"addRoles\")}\n \n >\n )}\n />\n {selectedRoles.length > 0 && (\n \n \n \n {t(\"roles\")} \n {t(\"required\")} \n \n \n \n \n {selectedRoles.map((row, index) => (\n \n \n \n \n \n (\n \n )}\n />\n \n \n }\n onClick={() => {\n setValue(\"roles\", [\n ...(values || []).filter((s) => s.id !== row.role.id),\n ]);\n setSelectedRoles([\n ...selectedRoles.filter(\n (s) => s.role.id !== row.role.id,\n ),\n ]);\n }}\n />\n \n \n ))}\n \n
\n )}\n {errors.roles && }\n \n \n >\n );\n};\n","import {\n DatePicker,\n Flex,\n FlexItem,\n FormGroup,\n NumberInput,\n Radio,\n Split,\n SplitItem,\n TimePicker,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { FormErrorText, HelpItem } from \"@keycloak/keycloak-ui-shared\";\nimport { useTranslation } from \"react-i18next\";\nimport { Controller, useFormContext } from \"react-hook-form\";\n\nconst DATE_TIME_FORMAT = /(\\d\\d\\d\\d-\\d\\d-\\d\\d)? (\\d\\d?):(\\d\\d?)/;\nconst padDateSegment = (value: number) => value.toString().padStart(2, \"0\");\n\nconst DateTime = ({ name }: { name: string }) => {\n const { control } = useFormContext();\n\n const parseDate = (value: string, date?: Date): string => {\n if (!date) {\n return value;\n }\n\n const parts = value.match(DATE_TIME_FORMAT);\n const parsedDate = [\n date.getFullYear(),\n padDateSegment(date.getMonth() + 1),\n padDateSegment(date.getDate()),\n ].join(\"-\");\n\n return `${parsedDate} ${parts ? parts[2] : \"00\"}:${\n parts ? parts[3] : \"00\"\n }:00`;\n };\n\n const parseTime = (\n value: string,\n hour?: number | null,\n minute?: number | null,\n ): string => {\n const parts = value.match(DATE_TIME_FORMAT);\n if (minute !== undefined && minute !== null) {\n return `${parts ? parts[1] : \"\"} ${hour}:${\n minute < 10 ? `0${minute}` : minute\n }:00`;\n }\n return value;\n };\n\n return (\n {\n const dateTime = field.value.match(DATE_TIME_FORMAT) || [\n \"\",\n \"\",\n \"0\",\n \"00\",\n ];\n return (\n \n \n {\n field.onChange(parseDate(field.value, date));\n }}\n />\n \n \n \n field.onChange(parseTime(field.value, hour, minute))\n }\n is24Hour\n />\n \n \n );\n }}\n />\n );\n};\n\ntype NumberControlProps = {\n name: string;\n min: number;\n max: number;\n};\n\nconst NumberControl = ({ name, min, max }: NumberControlProps) => {\n const { control } = useFormContext();\n const setValue = (newValue: number) => Math.min(newValue, max);\n\n return (\n (\n field.onChange(Number(field.value) + 1)}\n onMinus={() => field.onChange(Number(field.value) - 1)}\n onChange={(event) => {\n const newValue = Number(event.currentTarget.value);\n field.onChange(setValue(!isNaN(newValue) ? newValue : 0));\n }}\n />\n )}\n />\n );\n};\n\nconst FromTo = ({ name, ...rest }: NumberControlProps) => {\n const { t } = useTranslation();\n\n return (\n }\n >\n \n \n \n \n {t(\"to\")} \n \n \n \n \n \n );\n};\n\nexport const Time = () => {\n const { t } = useTranslation();\n const {\n getValues,\n formState: { errors },\n } = useFormContext();\n const [repeat, setRepeat] = useState(getValues(\"month\"));\n return (\n <>\n \n }\n >\n \n \n setRepeat(false)}\n label={t(\"notRepeat\")}\n className=\"pf-v5-u-mb-md\"\n />\n \n \n setRepeat(true)}\n label={t(\"repeat\")}\n className=\"pf-v5-u-mb-md\"\n />\n \n \n \n {repeat && (\n <>\n \n \n \n \n >\n )}\n \n }\n isRequired\n >\n \n {errors.notBefore && }\n \n \n }\n isRequired\n >\n \n {errors.notOnOrAfter && }\n \n >\n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { UserSelect } from \"../../../components/users/UserSelect\";\n\nexport const User = () => {\n const { t } = useTranslation();\n return (\n \n );\n};\n","import type PolicyRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyRepresentation\";\nimport {\n ActionGroup,\n AlertVariant,\n Button,\n ButtonVariant,\n DropdownItem,\n PageSection,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } from \"../../../admin-client\";\nimport { useAlerts } from \"../../../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../../../components/confirm-dialog/ConfirmDialog\";\nimport { FormAccess } from \"../../../components/form/FormAccess\";\nimport { KeycloakSpinner } from \"../../../components/keycloak-spinner/KeycloakSpinner\";\nimport { ViewHeader } from \"../../../components/view-header/ViewHeader\";\nimport { useFetch } from \"../../../utils/useFetch\";\nimport { useParams } from \"../../../utils/useParams\";\nimport { toAuthorizationTab } from \"../../routes/AuthenticationTab\";\nimport {\n PolicyDetailsParams,\n toPolicyDetails,\n} from \"../../routes/PolicyDetails\";\nimport { Aggregate } from \"./Aggregate\";\nimport { Client } from \"./Client\";\nimport { ClientScope, RequiredIdValue } from \"./ClientScope\";\nimport { Group, GroupValue } from \"./Group\";\nimport { JavaScript } from \"./JavaScript\";\nimport { LogicSelector } from \"./LogicSelector\";\nimport { NameDescription } from \"./NameDescription\";\nimport { Regex } from \"./Regex\";\nimport { Role } from \"./Role\";\nimport { Time } from \"./Time\";\nimport { User } from \"./User\";\n\nimport \"./policy-details.css\";\n\ntype Policy = Omit & {\n groups?: GroupValue[];\n clientScopes?: RequiredIdValue[];\n roles?: RequiredIdValue[];\n};\n\nconst COMPONENTS: {\n [index: string]: () => JSX.Element;\n} = {\n aggregate: Aggregate,\n client: Client,\n user: User,\n \"client-scope\": ClientScope,\n group: Group,\n regex: Regex,\n role: Role,\n time: Time,\n js: JavaScript,\n} as const;\n\nexport const isValidComponentType = (value: string) => value in COMPONENTS;\n\nexport default function PolicyDetails() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const { id, realm, policyId, policyType } = useParams();\n const navigate = useNavigate();\n const form = useForm();\n const { reset, handleSubmit } = form;\n\n const { addAlert, addError } = useAlerts();\n\n const [policy, setPolicy] = useState();\n const isDisabled = policyType === \"js\";\n\n useFetch(\n async () => {\n if (policyId) {\n const result = await Promise.all([\n adminClient.clients.findOnePolicy({\n id,\n type: policyType,\n policyId,\n }) as PolicyRepresentation | undefined,\n adminClient.clients.getAssociatedPolicies({\n id,\n permissionId: policyId,\n }),\n ]);\n\n if (!result[0]) {\n throw new Error(t(\"notFound\"));\n }\n\n return {\n policy: result[0],\n policies: result[1].map((p) => p.id),\n };\n }\n return {};\n },\n ({ policy, policies }) => {\n reset({ ...policy, policies });\n setPolicy(policy);\n },\n [id, policyType, policyId],\n );\n\n const onSubmit = async (policy: Policy) => {\n // remove entries that only have the boolean set and no id\n policy.groups = policy.groups?.filter((g) => g.id);\n policy.clientScopes = policy.clientScopes?.filter((c) => c.id);\n policy.roles = policy.roles\n ?.filter((r) => r.id)\n .map((r) => ({ ...r, required: r.required || false }));\n\n try {\n if (policyId) {\n await adminClient.clients.updatePolicy(\n { id, type: policyType, policyId },\n policy,\n );\n } else {\n const result = await adminClient.clients.createPolicy(\n { id, type: policyType },\n policy,\n );\n navigate(\n toPolicyDetails({\n realm,\n id,\n policyType,\n policyId: result.id!,\n }),\n );\n }\n addAlert(\n t((policyId ? \"update\" : \"create\") + \"PolicySuccess\"),\n AlertVariant.success,\n );\n } catch (error) {\n addError(\"policySaveError\", error);\n }\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"deletePolicy\",\n messageKey: \"deletePolicyConfirm\",\n continueButtonLabel: \"confirm\",\n onConfirm: async () => {\n try {\n await adminClient.clients.delPolicy({\n id,\n policyId,\n });\n addAlert(t(\"policyDeletedSuccess\"), AlertVariant.success);\n navigate(toAuthorizationTab({ realm, clientId: id, tab: \"policies\" }));\n } catch (error) {\n addError(\"policyDeletedError\", error);\n }\n },\n });\n\n if (policyId && !policy) {\n return ;\n }\n\n function getComponentType() {\n return isValidComponentType(policyType)\n ? COMPONENTS[policyType]\n : COMPONENTS[\"js\"];\n }\n\n const ComponentType = getComponentType();\n\n return (\n <>\n \n toggleDeleteDialog()}\n >\n {t(\"delete\")}\n ,\n ]\n : undefined\n }\n />\n \n \n \n \n \n \n \n \n \n \n {t(\"save\")}\n \n\n (\n \n )}\n >\n {t(\"cancel\")}\n \n
\n \n \n \n >\n );\n}\n","import { useTranslation } from \"react-i18next\";\nimport {\n Modal,\n ModalVariant,\n TextContent,\n Text,\n TextVariants,\n} from \"@patternfly/react-core\";\nimport { Table, Tbody, Td, Th, Thead, Tr } from \"@patternfly/react-table\";\n\nimport type PolicyProviderRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyProviderRepresentation\";\nimport { isValidComponentType } from \"./policy/PolicyDetails\";\nimport { useMemo } from \"react\";\nimport useLocaleSort, { mapByKey } from \"../../utils/useLocaleSort\";\n\ntype NewPolicyDialogProps = {\n policyProviders?: PolicyProviderRepresentation[];\n toggleDialog: () => void;\n onSelect: (provider: PolicyProviderRepresentation) => void;\n};\n\nexport const NewPolicyDialog = ({\n policyProviders,\n onSelect,\n toggleDialog,\n}: NewPolicyDialogProps) => {\n const { t } = useTranslation();\n const localeSort = useLocaleSort();\n\n const sortedPolicies = useMemo(\n () =>\n policyProviders ? localeSort(policyProviders, mapByKey(\"name\")) : [],\n [policyProviders],\n );\n\n return (\n \n {t(\"chooseAPolicyType\")} \n {t(\"chooseAPolicyTypeInstructions\")} \n \n }\n isOpen\n onClose={toggleDialog}\n >\n \n \n \n {t(\"name\")} \n {t(\"description\")} \n \n \n \n {sortedPolicies.map((provider) => (\n onSelect(provider)}\n isClickable\n >\n {provider.name} \n \n {isValidComponentType(provider.type!) &&\n t(`policyProvider.${provider.type}`)}\n \n \n ))}\n \n
\n \n );\n};\n"],"names":["amSuffix","pmSuffix","makeTimeOptions","stepMinutes","hour12","delimiter","minTime","maxTime","includeSeconds","res","iter","iterDay","hour","suffix","minutes","timeOption","isWithinMinMax","parseTime","time","timeRegex","is12Hour","date","hours","seconds","secondsWithDelimiter","ampm","validateTime","uppercaseSuffix","validHours","getHours","parts","getMinutes","getSeconds","_a","min24HourTime","convertTo24Hour","selected24HourTime","max24HourTime","regMatches","OutlinedClockIconConfig","OutlinedClockIcon","createIcon","c_date_picker__input_c_form_control_Width","TimePicker","React","props","event","_b","_c","_d","clickedOnToggle","clickedWithinMenu","isTimeOptionsOpen","focusedIndex","scrollIndex","KeyTypes","increment","prevState","maxIndex","nextIndex","index","menuStyles","indexToFocus","is24Hour","splitTime","option","amPm","baseRegex","minTimeState","maxTimeState","isOpen","isInvalid","timeState","onChange","e","setIsOpen","newTime","minSeconds","maxSeconds","prevProps","parsedTime","ariaLabel","isDisabled","className","placeholder","id","menuAppendTo","invalidFormatErrorMessage","invalidMinMaxErrorMessage","width","inputProps","zIndex","__rest","style","cssDatePickerFormControlWidth","options","isValidFormat","randomId","getUniqueId","getParentElement","menuContainer","Menu","MenuContent","MenuList","MenuItem","textInput","TextInput","calculatedAppendTo","css","datePickerStyles","InputGroup","InputGroupItem","Popper","HelperText","HelperTextItem","CaretUpIconConfig","CaretUpIcon","UserSelect","name","label","helpText","defaultValue","isRequired","variant","adminClient","useAdminClient","t","useTranslation","control","getValues","errors","useFormContext","values","open","toggleOpen","setOpen","useToggle","users","setUsers","useState","inputValue","setInputValue","search","setSearch","textInputRef","useRef","debounceFn","useCallback","debounce","useFetch","params","convert","clients","c","jsx","SelectOption","jsxs","FormGroup","HelpItem","Controller","value","field","Select","ref","MenuToggle","TextInputGroup","TextInputGroupMain","_","ChipGroup","selection","Chip","ev","item","u","TextInputGroupUtilities","Button","TimesIcon","v","removed","changedValue","SelectList","FormErrorText","DECISION_STRATEGY","DecisionStrategySelect","helpLabel","isLimited","Fragment","strategy","Radio","typeMapping","ResourcesPolicySelect","clientId","permissionId","SelectVariant","preSelected","realm","useRealm","navigate","useNavigate","isDirty","items","setItems","createPolicyDialog","toggleCreatePolicyDialog","policyProviders","setPolicyProviders","onUnsavedChangesConfirm","setOnUnsavedChangesConfirm","functions","p","providers","policies","r","self","otherId","toggleUnsavedChangesDialog","UnsavedChangesConfirm","useConfirmDialog","ButtonVariant","to","policy","toPolicyDetails","toResourceDetails","toSelectOptions","toChipGroupItems","permission","route","Link","NewPolicyDialog","toCreatePolicy","KeycloakSelect","val","filter","selectedValue","Aggregate","useParams","Client","ClientSelect","AddScopeDialog","scopes","clientName","toggleDialog","onAdd","isClientScopesConditionType","addToggle","setAddToggle","rows","setRows","filterType","setFilterType","protocolType","setProtocolType","isFilterTypeDropdownOpen","toggleIsFilterTypeDropdownOpen","isProtocolTypeDropdownOpen","toggleIsProtocolTypeDropdownOpen","clientScopes","useMemo","action","scope","row","onFilterTypeDropdownSelect","onProtocolTypeDropdownSelect","protocolTypeOptions","Modal","ModalVariant","Dropdown","DropdownList","clientScopeTypesDropdown","KeycloakDataTable","FilterIcon","CaretDownIcon","DropdownItem","client","getProtocolName","ListEmptyState","ClientScope","setValue","setScopes","selectedScopes","setSelectedScopes","localeSort","useLocaleSort","s","mapByKey","Table","Thead","Tr","Th","Tbody","Td","Checkbox","MinusCircleIcon","Group","selectedGroups","setSelectedGroups","g","groups","filteredGroup","TextControl","GroupPickerDialog","group","JavaScript","CodeEditor","Language","LOGIC_TYPES","LogicSelector","type","NameDescription","TextAreaControl","Regex","SwitchControl","Role","selectedRoles","setSelectedRoles","roles","role","AddRoleMappingModal","ServiceRole","DefaultSwitchControl","DATE_TIME_FORMAT","padDateSegment","DateTime","parseDate","minute","dateTime","Split","SplitItem","DatePicker","NumberControl","min","max","newValue","NumberInput","FromTo","rest","Time","repeat","setRepeat","Flex","FlexItem","User","COMPONENTS","isValidComponentType","PolicyDetails","policyId","policyType","form","useForm","reset","handleSubmit","addAlert","addError","useAlerts","setPolicy","result","onSubmit","AlertVariant","error","toggleDeleteDialog","DeleteConfirm","toAuthorizationTab","KeycloakSpinner","getComponentType","ComponentType","ViewHeader","PageSection","FormAccess","FormProvider","ActionGroup","onSelect","sortedPolicies","TextContent","Text","TextVariants","provider"],"mappings":"ovDAAO,MAAMA,EAAW,MACXC,EAAW,MACXC,GAAkB,CAACC,EAAaC,EAAQC,EAAWC,EAASC,EAASC,IAAmB,CACjG,MAAMC,EAAM,CAAA,EACNC,EAAO,IAAI,KAAK,IAAI,KAAM,EAAC,SAAS,EAAG,EAAG,EAAG,CAAC,CAAC,EAC/CC,EAAUD,EAAK,SACrB,KAAOA,EAAK,OAAQ,IAAKC,GAAS,CAC9B,IAAIC,EAAOF,EAAK,WACZG,EAASb,EACTI,IACIQ,IAAS,EACTA,EAAO,GAEFA,GAAQ,KACbC,EAASZ,GAETW,EAAO,KACPA,GAAQ,KAGhBA,EAAOR,EAASQ,EAAK,WAAaA,EAAK,SAAQ,EAAG,SAAS,EAAG,GAAG,EACjE,MAAME,EAAUJ,EAAK,WAAY,EAAC,SAAQ,EAAG,SAAS,EAAG,GAAG,EACtDK,EAAa,GAAGH,CAAI,GAAGP,CAAS,GAAGS,CAAO,GAAGV,EAASS,EAAS,EAAE,GAEnEG,GAAeV,EAASC,EAASQ,EAAYV,EAAWG,CAAc,GACtEC,EAAI,KAAKM,CAAU,EAEvBL,EAAK,WAAWA,EAAK,WAAY,EAAGP,CAAW,CAClD,CACD,OAAOM,CACX,EACaQ,EAAY,CAACC,EAAMC,EAAWd,EAAWe,EAAUZ,IAAmB,CAC/E,MAAMa,EAAO,IAAI,KAAKH,CAAI,EAE1B,GAAI,CAAC,MAAMG,EAAK,SAAS,IAAMH,aAAgB,MAAQA,EAAK,SAAS,GAAG,GAAI,CACxE,MAAMI,EAAQF,EACR,GAAGC,EAAK,SAAU,EAAG,GAAKA,EAAK,SAAQ,EAAK,GAAKA,EAAK,SAAU,CAAA,GAChE,GAAGA,EAAK,SAAU,CAAA,GAAG,SAAS,EAAG,GAAG,EACpCP,EAAU,GAAGO,EAAK,WAAU,CAAE,GAAG,SAAS,EAAG,GAAG,EAChDE,EAAUf,EAAiB,GAAGa,EAAK,WAAU,CAAE,GAAG,SAAS,EAAG,GAAG,EAAI,GACrEG,EAAuBD,EAAU,GAAGlB,CAAS,GAAGkB,CAAO,GAAK,GAClE,IAAIE,EAAO,GACX,OAAIL,GAAYC,EAAK,SAAQ,EAAK,GAC9BI,EAAOxB,EAEFmB,IACLK,EAAOzB,GAEJ,GAAGsB,CAAK,GAAGjB,CAAS,GAAGS,CAAO,GAAGU,CAAoB,GAAGC,CAAI,EACtE,SACQ,OAAOP,GAAS,WACrBA,EAAOA,EAAK,OACRA,IAAS,IAAMQ,GAAaR,EAAMC,EAAWd,EAAWe,CAAQ,GAAG,CACnE,KAAM,CAAG,CAAAE,EAAOR,EAASS,EAASV,EAAS,EAAE,EAAIM,EAAU,KAAKD,CAAI,EAC9DM,EAAuBhB,EAAiB,GAAGH,CAAS,GAAGkB,GAAmD,IAAI,GAAK,GACzH,IAAIE,EAAO,GAEX,GAAIL,EAAU,CACV,MAAMO,EAAkBd,EAAO,cAC3Bc,IAAoB3B,EAAS,YAAa,EAAC,KAAI,EAC/CyB,EAAOzB,EAEF2B,IAAoB1B,EAAS,YAAa,EAAC,KAAI,EACpDwB,EAAOxB,EAKPwB,EAAO,IAAI,OAAO,SAAU,EAAG,GAAKxB,EAAWD,CAEtD,CACD,MAAO,GAAGsB,CAAK,GAAGjB,CAAS,GAAGS,CAAO,GAAGU,CAAoB,GAAGC,CAAI,EACtE,CAEL,OAAOP,EAAK,UAChB,EACaQ,GAAe,CAACR,EAAMC,EAAWd,EAAWe,IAAa,CAElE,MAAMC,EAAO,IAAI,KAAKH,CAAI,EAC1B,GAAI,CAAC,MAAMG,EAAK,QAAO,CAAE,GAAKH,EAAK,SAAS,GAAG,EAC3C,MAAO,GAGX,MAAMI,EAAQ,SAASJ,EAAK,MAAMb,CAAS,EAAE,CAAC,CAAC,EACzCuB,EAAaN,IAAUF,EAAW,EAAI,IAAME,IAAUF,EAAW,GAAK,IAG5E,OAAOF,IAAS,IAAOC,EAAU,KAAKD,CAAI,GAAKU,CACnD,EACaC,GAAW,CAACX,EAAMC,IAAc,CACzC,MAAMW,EAAQZ,EAAK,MAAMC,CAAS,EAClC,OAAIW,GAASA,EAAM,OACX,MAAM,KAAKA,EAAM,CAAC,CAAC,EACZ,SAASA,EAAM,CAAC,CAAC,IAAM,GAAK,SAASA,EAAM,CAAC,CAAC,EAAI,SAASA,EAAM,CAAC,CAAC,EAAI,GAE7E,MAAM,KAAKA,EAAM,CAAC,CAAC,GACZ,SAASA,EAAM,CAAC,CAAC,IAAM,GAAK,EAEhC,SAASA,EAAM,CAAC,CAAC,EAErB,IACX,EACaC,GAAa,CAACb,EAAMC,IAAc,CAC3C,MAAMW,EAAQZ,EAAK,MAAMC,CAAS,EAClC,OAAOW,GAASA,EAAM,OAAS,SAASA,EAAM,CAAC,CAAC,EAAI,IACxD,EACaE,GAAa,CAACd,EAAMC,IAAc,CAC3C,IAAIc,EACJ,MAAMV,GAAWU,EAAKf,EAAK,MAAMC,CAAS,KAAO,MAAQc,IAAO,OAAS,OAASA,EAAG,CAAC,EACtF,OAAOV,EAAU,SAASA,CAAO,EAAI,IACzC,EACaP,GAAiB,CAACV,EAASC,EAASW,EAAMb,EAAWG,IAAmB,CAEjF,GAAIU,EAAK,KAAM,IAAK,GAChB,MAAO,GAGX,MAAMgB,EAAgBC,GAAgB7B,EAASD,EAAWG,CAAc,EAClE4B,EAAqBD,GAAgBjB,EAAMb,EAAWG,CAAc,EACpE6B,EAAgBF,GAAgB5B,EAASF,EAAWG,CAAc,EAExE,OAAO0B,GAAiBE,GAAsBA,GAAsBC,CACxE,EACMF,GAAkB,CAACjB,EAAMb,EAAWG,IAAmB,CAEzD,MAAM8B,EADU,IAAI,OAAO,iBAAiBjC,CAAS,aAAaA,CAAS,oCAAoC,EACpF,KAAKa,CAAI,EACpC,GAAI,CAACoB,GAAc,CAACA,EAAW,OAC3B,OAEJ,IAAIhB,EAAQgB,EAAW,CAAC,EAAE,SAAS,EAAG,GAAG,EACzC,MAAMxB,EAAUwB,EAAW,CAAC,EAC5B,IAAIf,EAAUe,EAAW,CAAC,EAAI,GAAGjC,CAAS,GAAGiC,EAAW,CAAC,CAAC,GAAK,GAE3D,CAACf,GAAWf,IACZe,EAAU,GAAGlB,CAAS,MAE1B,MAAMQ,EAASyB,EAAW,CAAC,GAAK,GAChC,OAAIzB,EAAO,YAAW,IAAO,MAAQS,IAAU,KAC3CA,EAAQ,GAAG,SAASA,CAAK,EAAI,EAAE,GAE1BT,EAAO,YAAW,IAAO,MAAQS,IAAU,OAChDA,EAAQ,MAEL,GAAGA,CAAK,GAAGjB,CAAS,GAAGS,CAAO,GAAGS,CAAO,EACnD,EC9IagB,GAA0B,CACrC,KAAM,oBACN,OAAQ,IACR,MAAO,IACP,QAAS,uUACT,QAAS,EACT,QAAS,CACX,EAEaC,GAAoBC,GAAWF,EAAuB,ECXtDG,GAA4C,CACvD,KAAQ,sDACR,MAAS,uCACT,IAAO,0DACT,ECWA,MAAMC,WAAmBC,EAAM,SAAU,CACrC,YAAYC,EAAO,CACf,MAAMA,CAAK,EACX,KAAK,iBAAmBD,EAAM,YAC9B,KAAK,UAAYA,EAAM,YACvB,KAAK,SAAWA,EAAM,YACtB,KAAK,QAAUA,EAAM,YACrB,KAAK,WAAcE,GAAU,CACzB,IAAIb,EAAIc,EAAIC,EAAIC,EAChB,MAAMC,GAAmBH,GAAMd,EAAK,KAAK,aAAe,MAAQA,IAAO,OAAS,OAASA,EAAG,WAAa,MAAQc,IAAO,OAAS,OAASA,EAAG,SAASD,EAAM,MAAM,EAC5JK,GAAqBF,GAAMD,EAAK,KAAK,WAAa,MAAQA,IAAO,OAAS,OAASA,EAAG,WAAa,MAAQC,IAAO,OAAS,OAASA,EAAG,SAASH,EAAM,MAAM,EAC9J,KAAK,MAAM,mBAAqB,EAAEI,GAAmBC,IACrD,KAAK,SAAS,EAAK,CAEnC,EACQ,KAAK,iBAAoBL,GAAU,CAC/B,IAAIb,EAAIc,EAAIC,EAAIC,EAChB,KAAM,CAAE,kBAAAG,EAAmB,aAAAC,EAAc,YAAAC,CAAW,EAAK,KAAK,MAEzD,GAAAP,GAAMd,EAAK,KAAK,YAAc,MAAQA,IAAO,OAAS,OAASA,EAAG,WAAa,MAAQc,IAAO,SAAkBA,EAAG,SAASD,EAAM,MAAM,EACrI,CAACM,GAAqBN,EAAM,MAAQS,EAAS,KAAOT,EAAM,MAAQS,EAAS,OAC3E,KAAK,SAAS,EAAI,EAEbH,IACDN,EAAM,MAAQS,EAAS,QAAUT,EAAM,MAAQS,EAAS,IACxD,KAAK,SAAS,EAAK,EAEdT,EAAM,MAAQS,EAAS,MACxBF,IAAiB,MACjB,KAAK,eAAeA,CAAY,EAChCP,EAAM,gBAAe,GAGrB,KAAK,SAAS,EAAK,GAGlBA,EAAM,MAAQS,EAAS,WAAaT,EAAM,MAAQS,EAAS,WAChE,KAAK,eAAeD,CAAW,EAC/B,KAAK,mBAAmB,CAAC,EACzBR,EAAM,eAAc,IAKtB,GAAAG,GAAMD,EAAK,KAAK,WAAa,MAAQA,IAAO,OAAS,OAASA,EAAG,WAAa,MAAQC,IAAO,SAAkBA,EAAG,SAASH,EAAM,MAAM,IACzIA,EAAM,MAAQS,EAAS,WACvB,KAAK,mBAAmB,CAAC,EACzBT,EAAM,eAAc,GAEfA,EAAM,MAAQS,EAAS,SAC5B,KAAK,mBAAmB,EAAE,EAC1BT,EAAM,eAAc,IAEfA,EAAM,MAAQS,EAAS,QAAUT,EAAM,MAAQS,EAAS,OAC7D,KAAK,SAAS,QAAQ,QACtB,KAAK,SAAS,EAAK,GAGvC,EACQ,KAAK,mBAAsBC,GAAc,CACrC,KAAK,SAAUC,GAAc,CACzB,MAAMC,EAAW,KAAK,WAAU,EAAG,OAAS,EAC5C,IAAIC,EAAYF,EAAU,eAAiB,KAAOA,EAAU,aAAeD,EAAYC,EAAU,YAAcD,EAC/G,OAAIG,EAAY,EACZA,EAAYD,EAEPC,EAAYD,IACjBC,EAAY,GAEhB,KAAK,cAAcA,CAAS,EACrB,CACH,aAAcA,CAClC,CACA,CAAa,CACb,EAEQ,KAAK,iBAAoBC,GACjB,KAAK,MAAM,eAAiB,SACrBA,EAAQ,EAAIA,EAAQ,EAAI,EAE5BA,EAEX,KAAK,cAAiBA,GAAU,CAC5B,KAAK,WAAU,EAAGA,CAAK,EAAE,QAAQ,IAAIC,GAAW,WAAW,EAAE,EAAE,UAC3D,KAAK,WAAU,EAAG,KAAK,iBAAiBD,CAAK,CAAC,EAAE,SAChE,EACQ,KAAK,eAAkBA,GAAU,CAC7B,IAAI3B,EACJ,MAAM6B,EAAeF,IAAU,GAAKA,EAAQ,EACvC,GAAA3B,EAAK,KAAK,WAAa,MAAQA,IAAO,SAAkBA,EAAG,SAC5D,KAAK,WAAU,EAAG6B,CAAY,EAAE,cAAc,IAAID,GAAW,QAAQ,EAAE,EAAE,MAAK,CAE9F,EACQ,KAAK,kBAAqB3C,GAAS,CAC/B,KAAM,CAAE,UAAAb,EAAW,SAAA0D,GAAa,KAAK,MACrC,IAAIC,EAAY9C,EAAK,MAAM,KAAK,MAAM,SAAS,EAC3CmC,EAAe,KAYnB,GAVIW,EAAU,OAAS,GACnB9C,EAAO,GAAGA,CAAI,GAAGb,CAAS,KAC1B2D,EAAY9C,EAAK,MAAMb,CAAS,GAG3B2D,EAAU,OAAS,IACxB9C,EAAOD,EAAUC,EAAM,KAAK,MAAM,UAAWb,EAAW,CAAC0D,EAAU,EAAK,EACxEC,EAAY9C,EAAK,MAAMb,CAAS,GAGhC,CAAC0D,GAAYC,EAAU,OAAS,GAAKA,EAAU,CAAC,EAAE,OAAS,EAAG,CAC9D,MAAMlD,EAAUkD,EAAU,CAAC,EAAE,SAAW,EAAI,KAAOA,EAAU,CAAC,EAAI,IAClE9C,EAAO,GAAG8C,EAAU,CAAC,CAAC,GAAG3D,CAAS,GAAGS,CAAO,GAAG,IAAI,KAAI,EAAG,SAAU,EAAG,GAAKb,EAAWD,CAAQ,EAClG,KACQ,CAAC+D,GACNC,EAAU,OAAS,GACnBA,EAAU,CAAC,EAAE,SAAW,GACxB,CAAC9C,EAAK,cAAc,SAASlB,EAAS,YAAW,EAAG,MAAM,GAC1D,CAACkB,EAAK,YAAW,EAAG,SAASjB,EAAS,YAAa,EAAC,KAAI,CAAE,IAC1DiB,EAAO,GAAGA,CAAI,GAAG,IAAI,KAAI,EAAG,SAAQ,EAAK,GAAKjB,EAAWD,CAAQ,IAErE,IAAIsD,EAAc,KAAK,aAAa,UAAWW,GAAWA,EAAO,cAAgB/C,CAAI,EAErF,GAAIoC,IAAgB,GAChB,KAAK,cAAcA,CAAW,EAC9BD,EAAeC,UAEVU,EAAU,SAAW,EAAG,CAE7B,IAAIE,EAAO,GACNH,IACGC,EAAU,CAAC,EAAE,YAAW,EAAG,SAAS,GAAG,EACvCE,EAAOjE,EAEF+D,EAAU,CAAC,EAAE,YAAW,EAAG,SAAS,GAAG,IAC5CE,EAAOlE,IAGfkB,EAAO,GAAG8C,EAAU,CAAC,CAAC,GAAG3D,CAAS,KAAK6D,CAAI,GAC3CZ,EAAc,KAAK,WAAU,EAAG,UAAWW,GAAWA,EAAO,cAAgB/C,CAAI,EAC7EoC,IAAgB,IAChB,KAAK,cAAcA,CAAW,CAErC,CACD,KAAK,SAAS,CACV,aAAAD,EACA,YAAAC,CAChB,CAAa,CACb,EACQ,KAAK,UAAY,CAAC9C,EAAiB,KAAS,CACxC,KAAM,CAAE,SAAAuD,EAAU,UAAA1D,GAAc,KAAK,MACrC,IAAI8D,EAAY,gBAAgB9D,CAAS,aACzC,OAAIG,IACA2D,GAAa,GAAG9D,CAAS,gBAEtB,IAAI,OAAO,IAAI8D,CAAS,GAAGJ,EAAW,GAAK,mBAAmB,OAAO,CACxF,EACQ,KAAK,WAAa,IAAM,CACpB,IAAI9B,EACJ,MAAU,GAAAA,EAAK,KAAK,WAAa,MAAQA,IAAO,SAAkBA,EAAG,QAC/D,MAAM,KAAK,KAAK,QAAQ,QAAQ,iBAAiB,IAAI4B,GAAW,YAAY,EAAE,CAAC,EAC/E,EAClB,EACQ,KAAK,cAAiB3C,GAAS,CAC3B,GAAI,KAAK,MAAM,aACX,OAAO,KAAK,MAAM,aAAaA,CAAI,EAEvC,KAAM,CAAE,UAAAb,EAAW,SAAA0D,EAAU,eAAAvD,CAAc,EAAK,KAAK,MACrD,OAAOkB,GAAaR,EAAM,KAAK,UAAUV,CAAc,EAAGH,EAAW,CAAC0D,CAAQ,CAC1F,EACQ,KAAK,YAAe7C,GAAS,CACzB,KAAM,CAAE,UAAAb,EAAW,eAAAG,GAAmB,KAAK,MACrC,CAAE,aAAA4D,EAAc,aAAAC,GAAiB,KAAK,MAC5C,OAAOrD,GAAeoD,EAAcC,EAAcnD,EAAMb,EAAWG,CAAc,CAC7F,EACQ,KAAK,QAAWU,GAAS,KAAK,cAAcA,CAAI,GAAK,KAAK,YAAYA,CAAI,EAC1E,KAAK,SAAYoD,GAAW,CAExB,KAAK,SAAUb,GAAc,CACzB,KAAM,CAAE,UAAAtC,EAAW,UAAAoD,EAAW,UAAAC,CAAS,EAAKf,EACtC,CAAE,UAAApD,EAAW,SAAA0D,EAAU,eAAAvD,EAAgB,SAAAiE,CAAU,EAAG,KAAK,MACzDvD,EAAOD,EAAUuD,EAAWrD,EAAWd,EAAW,CAAC0D,EAAUvD,CAAc,EAEjF,OAAIiE,GAAY,CAACH,GAAUpD,IAASsD,GAChCC,EAAS,KAAMvD,EAAMW,GAASX,EAAMC,CAAS,EAAGY,GAAWb,EAAMC,CAAS,EAAGa,GAAWd,EAAMC,CAAS,EAAG,KAAK,QAAQD,CAAI,CAAC,EAEzH,CACH,kBAAmBoD,EACnB,UAAWpD,EACX,UAAWoD,EAASC,EAAY,CAAC,KAAK,QAAQrD,CAAI,CACtE,CACA,CAAa,EACD,KAAK,MAAM,UAAUoD,CAAM,EACtBA,GACD,KAAK,SAAS,QAAQ,OAEtC,EACQ,KAAK,SAAYI,GAAM,CACnB,KAAM,CAAE,UAAAvD,EAAW,UAAAqD,GAAc,KAAK,MAChC,CAAE,UAAAnE,EAAW,SAAA0D,EAAU,eAAAvD,EAAgB,UAAAmE,CAAW,EAAG,KAAK,MAC1DzD,EAAOD,EAAUyD,EAAE,OAAO,YAAavD,EAAWd,EAAW,CAAC0D,EAAUvD,CAAc,EACxFU,IAASsD,GACT,KAAK,cAAcE,EAAGxD,CAAI,EAE9B,KAAK,SAAS,QAAQ,QACtB,KAAK,SAAS,CACV,kBAAmB,GACnB,UAAW,EAC3B,CAAa,EACDyD,EAAU,EAAK,CAC3B,EACQ,KAAK,aAAgBD,GAAM,CAClB,KAAK,MAAM,mBACZ,KAAK,SAAS,EAAI,EAEtBA,EAAE,gBAAe,CAC7B,EACQ,KAAK,cAAgB,CAAC5B,EAAO8B,IAAY,CACrC,KAAM,CAAE,SAAAH,CAAQ,EAAK,KAAK,MACpB,CAAE,UAAAtD,CAAS,EAAK,KAAK,MACvBsD,GACAA,EAAS3B,EAAO8B,EAAS/C,GAAS+C,EAASzD,CAAS,EAAGY,GAAW6C,EAASzD,CAAS,EAAGa,GAAW4C,EAASzD,CAAS,EAAG,KAAK,QAAQyD,CAAO,CAAC,EAEhJ,KAAK,kBAAkBA,CAAO,EAC9B,KAAK,SAAS,CACV,UAAWA,CAC3B,CAAa,CACb,EACQ,KAAM,CAAE,SAAAb,EAAU,UAAA1D,EAAW,KAAAa,EAAM,eAAAV,EAAgB,OAAA8D,CAAQ,EAAG,KAAK,MACnE,GAAI,CAAE,QAAAhE,EAAS,QAAAC,GAAY,KAAK,MAChC,GAAID,IAAY,GAAI,CAChB,MAAMuE,EAAarE,EAAiB,GAAGH,CAAS,KAAO,GACvDC,EAAUyD,EAAW,KAAK1D,CAAS,KAAKwE,CAAU,GAAK,KAAKxE,CAAS,KAAKwE,CAAU,KACvF,CACD,GAAItE,IAAY,GAAI,CAChB,MAAMuE,EAAatE,EAAiB,GAAGH,CAAS,KAAO,GACvDE,EAAUwD,EAAW,KAAK1D,CAAS,KAAKyE,CAAU,GAAK,KAAKzE,CAAS,KAAKyE,CAAU,KACvF,CACD,MAAM3D,EAAY,KAAK,YACvB,KAAK,MAAQ,CACT,UAAW,GACX,kBAAmBmD,EACnB,UAAWrD,EAAUC,EAAMC,EAAWd,EAAW,CAAC0D,EAAUvD,CAAc,EAC1E,aAAc,KACd,YAAa,EACb,UAAAW,EACA,aAAcF,EAAUX,EAASa,EAAWd,EAAW,CAAC0D,EAAUvD,CAAc,EAChF,aAAcS,EAAUV,EAASY,EAAWd,EAAW,CAAC0D,EAAUvD,CAAc,CAC5F,CACK,CACD,mBAAoB,CAChB,SAAS,iBAAiB,YAAa,KAAK,UAAU,EACtD,SAAS,iBAAiB,aAAc,KAAK,UAAU,EACvD,SAAS,iBAAiB,UAAW,KAAK,gBAAgB,EAC1D,KAAK,SAAS,CAAE,UAAW,CAAC,KAAK,QAAQ,KAAK,MAAM,SAAS,CAAC,CAAE,CACnE,CACD,sBAAuB,CACnB,SAAS,oBAAoB,YAAa,KAAK,UAAU,EACzD,SAAS,oBAAoB,aAAc,KAAK,UAAU,EAC1D,SAAS,oBAAoB,UAAW,KAAK,gBAAgB,CAChE,CACD,mBAAmBuE,EAAWtB,EAAW,CACrC,KAAM,CAAE,UAAAe,EAAW,kBAAApB,EAAmB,UAAAmB,EAAW,UAAApD,CAAW,EAAG,KAAK,MAC9D,CAAE,KAAAD,EAAM,SAAA6C,EAAU,UAAA1D,EAAW,eAAAG,EAAgB,OAAA8D,EAAQ,QAAAhE,EAAS,QAAAC,CAAO,EAAK,KAAK,MAYrF,GAXIwE,EAAU,SAAWT,GACrB,KAAK,SAASA,CAAM,EAEpBlB,GAAqB,CAACK,EAAU,mBAAqBe,GAAa,CAACD,GACnE,KAAK,kBAAkBC,CAAS,EAEhCnE,IAAc0E,EAAU,WACxB,KAAK,SAAS,CACV,UAAW,KAAK,UAAW,CAC3C,CAAa,EAED7D,IAAS,IAAMA,IAAS6D,EAAU,KAAM,CACxC,MAAMC,EAAa/D,EAAUC,EAAMC,EAAWd,EAAW,CAAC0D,EAAUvD,CAAc,EAClF,KAAK,SAAS,CACV,UAAWwE,EACX,UAAW,CAAC,KAAK,QAAQA,CAAU,CACnD,CAAa,CACJ,CACG1E,IAAY,IAAMA,IAAYyE,EAAU,SACxC,KAAK,SAAS,CACV,aAAc9D,EAAUX,EAASa,EAAWd,EAAW,CAAC0D,EAAUvD,CAAc,CAChG,CAAa,EAEDD,IAAY,IAAMA,IAAYwE,EAAU,SACxC,KAAK,SAAS,CACV,aAAc9D,EAAUV,EAASY,EAAWd,EAAW,CAAC0D,EAAUvD,CAAc,CAChG,CAAa,CAER,CACD,QAAS,CACL,MAAMyB,EAAK,KAAK,MAAO,CAAE,aAAcgD,EAAW,WAAAC,EAAY,UAAAC,EAAW,YAAAC,EAAa,GAAAC,EAAI,aAAAC,EAAc,SAAAvB,EAAU,0BAAAwB,EAA2B,0BAAAC,EAA2B,YAAArF,EAAa,MAAAsF,EAAO,UAAApF,EAAW,WAAAqF,EAEvM,SAAAjB,EAEA,UAAAE,EAEA,OAAAL,EAAQ,KAAApD,EAAM,aAAAQ,EAAc,QAAApB,EAAS,QAAAC,EAAS,eAAAC,EAAgB,OAAAmF,GAAW1D,EAAIY,EAAQ+C,GAAO3D,EAAI,CAAC,aAAc,aAAc,YAAa,cAAe,KAAM,eAAgB,WAAY,4BAA6B,4BAA6B,cAAe,QAAS,YAAa,aAAc,WAAY,YAAa,SAAU,OAAQ,eAAgB,UAAW,UAAW,iBAAkB,QAAQ,CAAC,EAC9Y,CAAE,UAAAuC,EAAW,kBAAApB,EAAmB,UAAAmB,EAAW,aAAAH,EAAc,aAAAC,CAAc,EAAG,KAAK,MAC/EwB,GAAQ,CAAE,CAACC,GAA8B,IAAI,EAAGL,CAAK,EACrDM,GAAU7F,GAAgBC,EAAa,CAAC4D,EAAU1D,EAAW+D,EAAcC,EAAc7D,CAAc,EACvGwF,EAAgB,KAAK,cAAcxB,CAAS,EAC5CyB,EAAWZ,GAAMa,GAAY,aAAa,EAC1CC,EAAmB,IACjB,KAAK,kBAAoB,KAAK,iBAAiB,QACxC,KAAK,iBAAiB,QAAQ,cAElC,KAELC,EAAiBxD,EAAM,cAAcyD,GAAM,CAAE,IAAK,KAAK,QAAS,aAAc,EAAM,EACtFzD,EAAM,cAAc0D,GAAa,CAAE,cAAe,OAAS,EACvD1D,EAAM,cAAc2D,GAAU,CAAE,aAActB,CAAS,EAAIc,GAAQ,IAAI,CAAC9B,GAAQL,KAAWhB,EAAM,cAAc4D,GAAU,CAAE,QAAS,KAAK,SAAU,IAAKvC,GAAQ,GAAI,GAAGgC,CAAQ,WAAWrC,EAAK,EAAI,EAAEK,EAAM,CAAE,CAAC,CAAC,CAAC,EAClNwC,EAAa7D,EAAM,cAAc8D,GAAW,OAAO,OAAO,CAAE,gBAAiB,OAAQ,GAAI,GAAGT,CAAQ,SAAU,aAAchB,EAAW,UAAWV,EAAY,QAAU,UAAW,YAAaa,EAAa,MAAOZ,GAAa,GAAI,KAAM,OAAQ,WAAY5B,EAAM,cAAcJ,GAAmB,IAAI,EAAG,QAAS,KAAK,aAAc,SAAU,KAAK,cAAe,aAAc,MAAO,WAAY0C,EAAY,WAAY9B,EAAmB,IAAK,KAAK,QAAQ,EAAIsC,CAAU,CAAC,EAC1d,IAAIiB,EACJ,OAAQrB,EAAY,CAChB,IAAK,SACDqB,EAAqB,IAAM,KAAK,UAAU,QAC1C,MACJ,IAAK,SACDA,EAAqBR,EACrB,MACJ,QACIQ,EAAqBrB,CAC5B,CACD,OAAQ1C,EAAM,cAAc,MAAO,CAAE,IAAK,KAAK,iBAAkB,UAAWgE,GAAIC,GAAiB,WAAY1B,CAAS,CAAG,EACrHvC,EAAM,cAAc,MAAO,OAAO,OAAO,CAAE,UAAWgE,GAAIC,GAAiB,eAAe,EAAG,MAAOhB,EAAK,EAAIhD,CAAK,EAC9GD,EAAM,cAAckE,GAAY,KAC5BlE,EAAM,cAAcmE,GAAgB,KAChCnE,EAAM,cAAc,MAAO,CAAE,GAAIqD,CAAU,EACvCrD,EAAM,cAAc,MAAO,CAAE,IAAK,KAAK,UAAW,MAAO,CAAE,YAAa,IAAO,EAC3EA,EAAM,cAAcoE,GAAQ,CAAE,SAAUL,EAAoB,QAASF,EAAW,WAAY,KAAK,UAAW,OAAQL,EAAe,UAAW,KAAK,QAAS,UAAWhD,EAAmB,OAAQuC,CAAM,CAAE,CAAC,CAAC,CAAC,CAAC,EAC9NpB,GAAc3B,EAAM,cAAc,MAAO,CAAE,UAAWgE,GAAIC,GAAiB,oBAAoB,CAAG,EAC9FjE,EAAM,cAAcqE,GAAY,KAC5BrE,EAAM,cAAcsE,GAAgB,CAAE,QAAS,OAAS,EAAGlB,EAA4CR,EAA5BD,CAAqD,CAAC,CAAC,CAAE,CAAC,CACxJ,CACL,CACA5C,GAAW,YAAc,aACzBA,GAAW,aAAe,CACtB,UAAW,GACX,WAAY,GACZ,KAAM,GACN,SAAU,GACV,0BAA2B,sBAC3B,0BAA2B,uBAC3B,YAAa,QACb,UAAW,IACX,aAAc,cACd,MAAO,QACP,aAAc,SACd,YAAa,GACb,WAAY,CAAE,EACd,QAAS,GACT,QAAS,GACT,OAAQ,GACR,UAAW,IAAM,CAAG,EACpB,OAAQ,IACZ,EClXO,MAAMwE,GAAoB,CAC/B,KAAM,cACN,OAAQ,IACR,MAAO,IACP,QAAS,mKACT,QAAS,EACT,QAAS,CACX,EAEaC,GAAc3E,GAAW0E,EAAiB,ECsB1CE,GAAa,CAAC,CACzB,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,aAAAC,EACA,WAAAC,EACA,QAAAC,EAAU,gBACZ,IAAuB,CACf,KAAA,CAAE,YAAAC,GAAgBC,KAElB,CAAE,EAAAC,GAAMC,IACR,CACJ,QAAAC,EACA,UAAAC,EACA,UAAW,CAAE,OAAAC,CAAO,GAClBC,EAAe,EACbC,EAA+BH,EAAUX,CAAK,EAE9C,CAACe,EAAMC,EAAYC,CAAO,EAAIC,GAAU,EACxC,CAACC,EAAOC,CAAQ,EAAIC,EAA6C,CAAE,CAAA,EACnE,CAACC,EAAYC,CAAa,EAAIF,EAAS,EAAE,EACzC,CAACG,EAAQC,CAAS,EAAIJ,EAAS,EAAE,EACjCK,EAAeC,KAEfC,EAAaC,GAAYC,GAASL,EAAW,GAAI,EAAG,CAAA,CAAE,EAE5DM,GACE,IAAM,CACJ,MAAMC,EAAoB,CACxB,IAAK,EAAA,EAMH,OAJAR,IACFQ,EAAO,SAAWR,GAGhBV,GAAQ,QAAU,CAACU,EACd,QAAQ,IACbV,EAAO,IAAK/C,GAAeuC,EAAY,MAAM,QAAQ,CAAE,GAAAvC,CAAG,CAAC,CAAC,CAAA,EAGzDuC,EAAY,MAAM,KAAK0B,CAAM,CACtC,EACAZ,EACA,CAACI,CAAM,CAAA,EAGT,MAAMS,EAAWC,GACfA,EACG,OAAQC,GAAMA,IAAM,MAAS,EAC7B,IAAKxF,GACJyF,EAACC,GAAA,CAEC,MAAO1F,EAAQ,GACf,SAAUmE,GAAQ,SAASnE,EAAQ,EAAG,EAErC,SAAQA,EAAA,QAAA,EAJJA,EAAQ,EAAA,CAMhB,EAGH,OAAA2F,EAACC,EAAA,CACC,MAAO/B,EAAEP,CAAM,EACf,WAAAG,EACA,UAAWgC,EAACI,EAAS,CAAA,SAAAtC,EAAqB,aAAcD,EAAQ,EAChE,QAASD,EAET,SAAA,CAAAoC,EAACK,EAAA,CACC,KAAAzC,EACA,aAAAG,EACA,QAAAO,EACA,MACEN,GAAcC,IAAY,iBACtB,CAAE,SAAWqC,GAAUA,EAAM,OAAS,CACtC,EAAA,CAAE,SAAUtC,CAAW,EAE7B,OAAQ,CAAC,CAAE,MAAAuC,CAAA,IACTP,EAACQ,GAAA,CACC,GAAI5C,EACJ,aAAcgB,EACd,OAAS6B,GACPT,EAACU,GAAA,CACC,cAAa9C,EACb,IAAA6C,EACA,QAAQ,YACR,QAAS7B,EACT,WAAYD,EACZ,YAAW,GACX,OAAQH,EAAOZ,CAAK,EAAI,SAAW,OAEnC,SAAAsC,EAACS,GAAe,CAAA,QAAO,GACrB,SAAA,CAAAX,EAACY,GAAA,CACC,MAAO1B,EACP,QAASN,EACT,SAAU,CAACiC,EAAGP,IAAU,CACtBzB,EAAQ,EAAI,EACZM,EAAcmB,CAAK,EACnBd,EAAWc,CAAK,CAClB,EACA,aAAa,MACb,SAAUhB,EACV,gBAAiBlB,EAAE,aAAa,EAC/B,GAAImC,EAAM,OAAS,CAClB,wBAAyBA,EAAM,KACjC,EACA,KAAK,WACL,WAAY5B,EACZ,gBAAc,kCAEb,SAAYV,IAAA,kBACX,MAAM,QAAQsC,EAAM,KAAK,GACvBP,EAACc,GAAU,CAAA,aAAW,qBACnB,SAAAP,EAAM,MAAM,IACX,CAACQ,EAAmB7G,IAClB8F,EAACgB,GAAA,CAEC,QAAUC,GAAO,CACfA,EAAG,gBAAgB,EACbV,EAAA,SACJA,EAAM,MAAM,OACTW,GAAiBA,IAASH,CAC7B,CAAA,CAEJ,EAGE,WAAM,KAAMI,GAAMA,GAAG,KAAOJ,CAAS,GACjC,QAAA,EAZD7G,CAcP,CAAA,EAGN,CAAA,CAEN,EACC8F,EAAAoB,GAAA,CACE,SAAC,CAAA,CAAChC,GACDY,EAACqB,EAAA,CACC,QAAQ,QACR,QAAS,IAAM,CACblC,EAAc,EAAE,EAChBE,EAAU,EAAE,EACNkB,EAAA,SAAS,CAAA,CAAE,EACjBjB,GAAc,SAAS,OACzB,EACA,aAAW,oBAEX,SAAAU,EAACsB,GAAU,CAAA,cAAW,EAAC,CAAA,CAAA,CAAA,EAG7B,CAAA,EACF,CAAA,CACF,EAEF,OAAQ3C,EACR,SAAU4B,EAAM,MAChB,SAAU,CAACM,EAAGU,IAAM,CACZ,MAAAhH,EAASgH,GAAG,WAClB,GAAItD,IAAY,iBAAkB,CAChC,MAAMuD,EAAUjB,EAAM,MAAM,SAAShG,CAAM,EACjCiH,EAAAjB,EAAM,SAAS,CAAE,CAAA,EAAIA,EAAM,SAAS,CAAChG,CAAM,CAAC,EACtD4E,EACEqC,EACI,GACAzC,EAAM,KAAMoC,GAAMA,GAAG,KAAO5G,CAAM,GAAG,UAAY,EAAA,EAEvDsE,EAAQ,EAAK,CAAA,KACR,CACC,MAAA4C,EAAelB,EAAM,MAAM,KAC9BgB,GAAcA,IAAMhH,CAEnB,EAAAgG,EAAM,MAAM,OAAQgB,GAAcA,IAAMhH,CAAM,EAC9C,CAAC,GAAGgG,EAAM,MAAOhG,CAAM,EAC3BgG,EAAM,SAASkB,CAAY,CAC7B,CACF,EACA,aAAYrD,EAAER,CAAK,EAEnB,SAACoC,EAAA0B,GAAA,CAAY,SAAQ7B,EAAAd,CAAK,EAAE,CAAA,CAC9B,CAAA,CAEJ,EACCP,EAAOZ,CAAK,GAAKoC,EAAC2B,IAAc,QAASvD,EAAE,UAAU,EAAG,CAAA,CAAA,CAAA,CAG/D,ECnNMwD,GAAoB,CAAC,YAAa,cAAe,WAAW,EAQrDC,GAAyB,CAAC,CACrC,UAAAC,EACA,WAAAtG,EAAa,GACb,UAAAuG,EAAY,EACd,IAAmC,CAC3B,KAAA,CAAE,EAAA3D,GAAMC,IACR,CAAE,QAAAC,GAAYG,IAGlB,OAAAuB,EAACG,EAAA,CACC,MAAO/B,EAAE,kBAAkB,EAC3B,UACE4B,EAACI,EAAA,CACC,SAAUhC,EAAE0D,GAAa,sBAAsB,EAC/C,aAAa,kBAAA,CACf,EAEF,QAAQ,mBACR,gBAAe,GAEf,SAAA9B,EAACK,EAAA,CACC,KAAK,mBACL,cAAY,mBACZ,aAAcuB,GAAkB,CAAC,EACjC,QAAAtD,EACA,OAAQ,CAAC,CAAE,MAAAiC,KAELP,EAAAgC,EAAA,CAAA,UAAAD,EACEH,GAAkB,MAAM,EAAG,CAAC,EAC5BA,IACF,IAAKK,GACLjC,EAACkC,GAAA,CACC,GAAID,EAEJ,cAAaA,EACb,UAAW1B,EAAM,QAAU0B,EAC3B,WAAAzG,EACA,KAAK,mBACL,SAAU,IAAM+E,EAAM,SAAS0B,CAAQ,EACvC,MAAO7D,EAAE,sBAAsB6D,CAAQ,EAAE,EACzC,UAAU,eAAA,EAPLA,CASR,CAAA,EACH,CAAA,CAEJ,CAAA,CAAA,CAGN,ECEME,GAA2B,CAC/B,UAAW,CACT,eAAgB,gBAChB,cAAe,wBACjB,EACA,SAAU,CACR,eAAgB,eAChB,cAAe,uBACjB,CACF,EAEaC,GAAwB,CAAC,CACpC,KAAAxE,EACA,SAAAyE,EACA,aAAAC,EACA,QAAArE,EAAUsE,GAAc,eACxB,YAAAC,EACA,WAAAxE,EAAa,EACf,IAAkC,CAC1B,KAAA,CAAE,YAAAE,GAAgBC,KAElB,CAAE,MAAAsE,GAAUC,KACZ,CAAE,EAAAtE,GAAMC,IACRsE,EAAWC,KAEX,CACJ,QAAAtE,EACA,UAAW,CAAE,OAAAE,EAAQ,QAAAqE,CAAQ,GAC3BpE,EAAqC,EACnC,CAACqE,EAAOC,CAAQ,EAAI9D,EAAqB,CAAE,CAAA,EAC3C,CAACG,EAAQC,CAAS,EAAIJ,EAAS,EAAE,EACjC,CAACN,EAAME,CAAO,EAAII,EAAS,EAAK,EAChC,CAAC+D,EAAoBC,CAAwB,EAAInE,GAAU,EAC3D,CAACoE,EAAiBC,CAAkB,EACxClE,EAAyC,EACrC,CAACmE,EAAyBC,CAA0B,EACxDpE,EAAqB,EAEjBqE,EAAYnB,GAAYvE,CAAI,EAE5BiC,EACJ0D,IACc,CACd,GAAI,QAASA,EAAIA,EAAE,IAAM,OAAQA,EAAIA,EAAE,GAAK,OAC5C,KAAMA,EAAE,KACR,KAAMA,EAAE,IAAA,GAGV5D,GACE,SAAY,CACV,MAAMC,EAAsB,OAAO,OACjC,CAAE,GAAIyC,EAAU,MAAO,EAAG,IAAK,GAAI,WAAY,OAAQ,EACvDjD,IAAW,GAAK,KAAO,CAAE,KAAMA,CAAO,CAAA,EAEjC,OAAA,MAAM,QAAQ,IAAI,CACvBlB,EAAY,QAAQ,oBAAoB,CAAE,GAAImE,EAAU,EACxDnE,EAAY,QAAQoF,EAAU,cAAc,EAAE1D,CAAM,EACpD0C,EACIpE,EAAY,QAAQoF,EAAU,aAAa,EAAE,CAC3C,GAAIjB,EACJ,aAAAC,CAAA,CACD,EACD,QAAQ,QAAQ,EAAE,CAAA,CACvB,CACH,EACA,CAAC,CAACkB,EAAc,GAAAC,CAAQ,IAAM,CAC5BN,EACEK,EAAU,OAAQD,GAAMA,EAAE,OAAS,YAAcA,EAAE,OAAS,OAAO,CAAA,EAErER,EACEU,EACG,OACA,OACEC,GACC,OAAOA,GAAM,QAAA,EAEhB,IAAI7D,CAAO,EACX,OACC,CAAC,CAAE,GAAAlE,CAAG,EAAGzB,EAAOyJ,IACdzJ,IAAUyJ,EAAK,UAAU,CAAC,CAAE,GAAIC,CAAQ,IAAMjI,IAAOiI,CAAO,CAChE,CAAA,CAEN,EACA,CAACxE,CAAM,CAAA,EAGT,KAAM,CAACyE,EAA4BC,CAAqB,EAAIC,GAAiB,CAC3E,SAAU3F,EAAE,qBAAqB,EACjC,WAAYA,EAAE,uBAAuB,EACrC,oBAAqBA,EAAE,UAAU,EACjC,sBAAuB4F,GAAc,OACrC,UAAW,IAAMZ,IAA0B,CAAA,CAC5C,EAEKa,EAAMC,GACVtG,IAAS,WACLuG,GAAgB,CACd,MAAA1B,EACA,GAAIJ,EACJ,SAAU6B,EAAO,GACjB,WAAYA,EAAO,IACpB,CAAA,EACDE,GAAkB,CAChB,MAAA3B,EACA,GAAIJ,EACJ,WAAY6B,EAAO,EAAA,CACpB,EAEDG,GAAkB,IACtBvB,EAAM,IAAKS,GACTvD,EAACC,GAAwB,CAAA,MAAOsD,EAAE,GAC/B,SAAAA,EAAE,IADc,EAAAA,EAAE,EAErB,CACD,EAEGe,GACJ/D,KAGGO,GACE,CAAA,SAAAP,EAAM,OAAO,IAAK+B,GAAiB,CAClC,MAAMpB,EAAO4B,EAAM,KAChByB,GAAeA,EAAW,KAAOjC,CAAA,EAGpC,GAAI,CAACpB,EAAM,OAEL,MAAAsD,EAAQP,EAAG/C,CAAI,EAEnB,OAAAlB,EAACgB,GAAA,CAEC,QAAS,IAAM,CACPT,EAAA,SAASA,EAAM,OAAO,OAAQ5E,GAAOA,IAAOuF,EAAK,EAAE,CAAC,CAC5D,EAEA,SAAAlB,EAACyE,GAAA,CACC,GAAID,EACJ,QAAUpL,GAAU,CACdyJ,IACFzJ,EAAM,eAAe,EACrBiK,EAA2B,IAAM,IAAMV,EAAS6B,CAAK,CAAC,EAC3BX,IAE/B,EAEC,SAAK3C,EAAA,IAAA,CACR,CAAA,EAhBKA,EAAK,EAAA,CAmBf,CAAA,CACH,CAAA,EAIJ,OAEIhB,EAAA8B,EAAA,CAAA,SAAA,CAAAhC,EAAC8D,EAAsB,EAAA,EACtBd,GACChD,EAAC0E,GAAA,CACC,gBAAAxB,EACA,SAAWK,GAAM,CACfZ,EACEgC,GAAe,CAAE,GAAItC,EAAU,MAAAI,EAAO,WAAYc,EAAE,KAAO,CAAA,CAE/D,EACA,aAAcN,CAAA,CAChB,EAEFjD,EAACK,EAAA,CACC,KAAAzC,EACA,aAAc4E,EAAc,CAACA,CAAW,EAAI,CAAC,EAC7C,QAAAlE,EACA,MAAO,CAAE,SAAWgC,GAAU,CAACtC,GAAcsC,EAAO,OAAS,CAAE,EAC/D,OAAQ,CAAC,CAAE,MAAAC,CAAA,IACTP,EAAC4E,GAAA,CACC,SAAUhH,EACV,QAAAK,EACA,SAAW4G,GAAQhG,EAAQgG,CAAG,EAC9B,SAAWC,IACTzF,EAAUyF,CAAM,EACTT,GAAgB,GAEzB,QAAS,IAAM,CACP9D,EAAA,SAAS,CAAA,CAAE,EACjBlB,EAAU,EAAE,CACd,EACA,WAAYkB,EAAM,MAClB,SAAWwE,GAAkB,CACrB,MAAAxK,EAASwK,EAAc,WACzB,GAAA9G,IAAYsE,GAAc,eAAgB,CACtC,MAAAd,EAAelB,EAAM,OAAO,KAC/BgD,GAAcA,IAAMhJ,CAEnB,EAAAgG,EAAM,MAAM,OAAQgD,GAAcA,IAAMhJ,CAAM,EAC9C,CAAC,GAAGgG,EAAM,MAAQhG,CAAM,EAC5BgG,EAAM,SAASkB,CAAY,CAAA,MAErBlB,EAAA,SAAS,CAAChG,CAAM,CAAC,EAGzB8E,EAAU,EAAE,CACd,EACA,OAAQV,EACR,aAAYP,EAAER,CAAI,EAClB,WAAY,CAAC,CAAC4E,EACd,UAAWhE,EAAOZ,CAAI,EAAI,QAAU,UACpC,mBAAoBQ,EAAER,CAAI,EAC1B,mBAAoB0G,GAAiB/D,CAAK,EAC1C,OACE3C,IAAS,WACPoC,EAACqB,EAAA,CACC,QAAQ,OACR,SAAQ,GACR,QAAS,IAAM,CACTwB,GACFhE,EAAQ,EAAK,EACbwE,EACE,IAAMJ,CAAA,EAEmBY,KAEFZ,GAE7B,EAEC,WAAE,cAAc,CAAA,CAEjB,EAAA,OAGL,SAAgBoB,GAAA,CAAA,CACnB,CAAA,CAEJ,CACF,CAAA,CAAA,CAEJ,ECnSaW,GAAY,IAAM,CACvB,KAAA,CAAE,GAAM3G,IACR,CAAE,GAAA1C,GAAOsJ,KAEf,OAEI/E,EAAA8B,EAAA,CAAA,SAAA,CAAAhC,EAACG,EAAA,CACC,MAAO,EAAE,aAAa,EACtB,QAAQ,WACR,YACGC,EAAS,CAAA,SAAU,EAAE,iBAAiB,EAAG,aAAa,WAAW,EAGpE,SAACJ,EAAAoC,GAAA,CAAsB,KAAK,WAAW,SAAUzG,EAAI,CAAA,CACvD,EACAqE,EAAC6B,GAAuB,CAAA,UAAU,sBAAuB,CAAA,CAC3D,CAAA,CAAA,CAEJ,ECxBaqD,GAAS,IAAM,CACpB,KAAA,CAAE,GAAM7G,IAGZ,OAAA2B,EAACmF,GAAA,CACC,KAAK,UACL,MAAO,EAAE,SAAS,EAClB,SAAU,EAAE,kBAAkB,EAC9B,SAAQ,GACR,aAAc,CAAC,EACf,QAAQ,gBAAA,CAAA,CAGd,ECqCaC,GAAiB,CAAC,CAC7B,aAAcC,EACd,WAAAC,EACA,KAAA3G,EACA,aAAA4G,EACA,MAAAC,EACA,4BAAAC,CACF,IAA2B,CACnB,KAAA,CAAE,EAAArH,GAAMC,IACR,CAACqH,EAAWC,CAAY,EAAI1G,EAAS,EAAK,EAC1C,CAAC2G,EAAMC,CAAO,EAAI5G,EAAsC,CAAE,CAAA,EAC1D,CAAC6G,EAAYC,CAAa,EAAI9G,EAAS,MAAe,EACtD,CAAC+G,EAAcC,CAAe,EAAIhH,EAAS,KAAgB,EAE3D,CAACiH,EAA0BC,CAA8B,EAC7DrH,GAAU,EAEN,CAACsH,EAA4BC,CAAgC,EACjEvH,GAAU,EAAK,EAEXwH,EAAeC,GAAQ,IACvBP,IAAiB,iBACZX,EAAO,OAAQnE,GAASA,EAAK,WAAa,gBAAgB,EACxD8E,IAAiB,OACnBX,EAAO,OAAQnE,GAASA,EAAK,WAAa,MAAM,EAElDmE,EACN,CAACA,EAAQS,EAAYE,CAAY,CAAC,EAE/BQ,EAAUC,GAA2B,CACzC,MAAMpB,EAASO,EAAK,IAAKc,IAChB,CAAE,MAAOA,EAAK,KAAMD,CAAM,EAClC,EACDjB,EAAMH,CAAM,EACZM,EAAa,EAAK,EACLJ,GAAA,EAGToB,EAA8Bb,GAAuB,CACrDA,IAAe,OACjBC,EAAc,UAAmB,EACxBD,IAAe,aACxBC,EAAc,MAAe,EAC7BE,EAAgB,KAAgB,GAGHE,GAAA,EAG3BS,EAAgCZ,GAAyB,CACzDA,IAAiB,OACnBC,EAAgB,MAAiB,EACxBD,IAAiB,iBAC1BC,EAAgB,gBAA0B,EACjCD,IAAiB,OAC1BC,EAAgB,KAAgB,EAGDI,GAAA,EAG7BQ,EAAsB,GACzB5G,GAAqB,CAAA,MAAO,OAC1B,SAAE7B,EAAA,oBAAoB,GADN,CAEnB,IACC6B,GAAqB,CAAA,MAAO,iBAC1B,SAAE7B,EAAA,8BAA8B,GADhB,CAEnB,IACC6B,GAAqB,CAAA,MAAO,MAC1B,SAAE7B,EAAA,mBAAmB,GADL,CAEnB,CAAA,EAIA,OAAA4B,EAAC8G,GAAA,CACC,QAASC,GAAa,OACtB,MACEtB,EACIrH,EAAE,gBAAgB,EAClBA,EAAE,oBAAqB,CAAE,WAAAkH,EAAY,EAE3C,OAAQ3G,EACR,QAAS4G,EACT,QACEE,EACI,CACEzF,EAACqB,EAAA,CACC,GAAG,YACH,cAAY,UAEZ,QAAS2C,GAAc,QACvB,QAAS,IAAM,CACb,MAAMqB,EAASO,EAAK,IAAKa,IAAW,CAAE,MAAAA,CAAQ,EAAA,EAC9CjB,EAAMH,CAAM,EACCE,GACf,EACA,WAAYK,EAAK,SAAW,EAE3B,WAAE,KAAK,CAAA,EATJ,KAUN,EACA5F,EAACqB,EAAA,CACC,GAAG,eACH,cAAY,SAEZ,QAAS2C,GAAc,KACvB,QAAS,IAAM,CACb6B,EAAQ,CAAE,CAAA,EACGN,GACf,EAEC,WAAE,QAAQ,CAAA,EAPP,QAQN,CAAA,EAEF,CACEvF,EAACgH,GAAA,CACC,YAAa,CACX,UAAW,IACb,EACA,aAAepM,GAAW+K,EAAa/K,CAAM,EAC7C,UAAU,4CAEV,OAAQ8K,EACR,OAASjF,GACPT,EAACU,GAAA,CACC,IAAAD,EACA,WAAYmF,EAAK,SAAW,EAC5B,QAAS,IAAMD,EAAa,CAACD,CAAS,EACtC,QAAQ,UACR,GAAG,eACH,aAAahI,GAAY,EAAA,EAExB,WAAE,KAAK,CAAA,CACV,EAGF,SAACsC,EAAAiH,GAAA,CACE,SAAyBC,GAAA9I,EAAGoI,CAAM,EACrC,CAAA,EAjBI,cAkBN,EACAxG,EAACqB,EAAA,CACC,GAAG,eAEH,QAAS2C,GAAc,KACvB,QAAS,IAAM,CACb6B,EAAQ,CAAE,CAAA,EACGN,GACf,EAEC,WAAE,QAAQ,CAAA,EAPP,QAQN,CACF,EAGN,SAAAvF,EAACmH,GAAA,CACC,OAAQb,EACR,aAAa,oBACb,qBACER,IAAe,OAAkB,uBAAyB,OAE5D,YAAaA,IAAe,OAC5B,oBACE9F,EAACgH,GAAA,CACC,SAAU,IAAM,CACdL,EAA2Bb,CAAU,CACvC,EACA,aAAcK,EACd,OAAS1F,GACPT,EAACU,GAAA,CACC,IAAAD,EACA,cAAY,uBACZ,GAAG,cACH,QAAS0F,EACT,OAAOiB,GAAW,EAAA,EAClB,aAAaC,GAAc,EAAA,EAE1B,SAAAvB,CAAA,CACH,EAEF,OAAQI,EAER,WAACe,GACC,CAAA,SAAAjH,EAACsH,GAAA,CACC,cAAY,4BAGX,SAAiClJ,MAAlB,OAAoB,WAAgB,MAAN,CAAY,EAFtD,aAAA,EAIR,CAAA,CACF,EAEF,YACE0H,IAAe,YAEX5F,EAAA8B,EAAA,CAAA,SAAA,CAAAhC,EAACgH,GAAA,CACC,SAAU,IAAM,CACdL,EAA2Bb,CAAU,CACvC,EACA,aAAcK,EACd,cAAY,uBACZ,OAAS1F,GACPT,EAACU,GAAA,CACC,IAAAD,EACA,GAAG,cACH,QAAS0F,EACT,aAAakB,GAAc,EAAA,EAC3B,OAAOD,GAAW,EAAA,EAEjB,SAAAtB,CAAA,CACH,EAEF,OAAQI,EAER,WAACe,GACC,CAAA,SAAAjH,EAACsH,GAAA,CACC,cAAY,4BAGX,WAAE,MAAM,CAAA,EAFL,aAAA,EAIR,CAAA,CACF,EACAtH,EAAC4E,GAAA,CACC,UAAU,yBACV,aAAYxG,EAAE,WAAW,EACzB,SAAUiI,EACV,SAAW/F,GACTsG,EAA6BtG,EAAM,UAAU,EAE/C,WAAY0F,EACZ,OAAQI,EAEP,SAAAS,CAAA,CACH,CAAA,EACF,EAGJ,aAAY,GACZ,SAAWjB,GAASC,EAAQD,CAAI,EAChC,QAAS,CACP,CACE,KAAM,MACR,EACA,CACE,KAAM,WACN,WAAY,WACZ,aAAe2B,GACbC,GAAgBpJ,EAAGmJ,EAAO,UAAY,gBAAgB,CAC1D,EACA,CACE,KAAM,aACR,CACF,EACA,WACEvH,EAACyH,GAAA,CACC,QAASrJ,EAAE,sBAAsB,EACjC,aAAcA,EAAE,kCAAkC,CAAA,CACpD,CAAA,CAEJ,CAAA,CAAA,CAGN,ECxSasJ,GAAc,IAAM,CACzB,KAAA,CAAE,YAAAxJ,GAAgBC,KAElB,CAAE,EAAAC,GAAMC,IACR,CACJ,QAAAC,EACA,UAAAC,EACA,SAAAoJ,EACA,UAAW,CAAE,OAAAnJ,CAAO,GAClBC,EAED,EAEG,CAACE,EAAME,CAAO,EAAII,EAAS,EAAK,EAChC,CAACoG,EAAQuC,CAAS,EAAI3I,EAAsC,CAAE,CAAA,EAC9D,CAAC4I,EAAgBC,CAAiB,EAAI7I,EAE1C,CAAE,CAAA,EAEE8I,EAAaC,KAEnB,OAAArI,GACE,IAAMzB,EAAY,aAAa,KAAK,EACnCmH,GAAW,CACVyC,EACEvJ,EAAU,cAAc,EAAE,IACvB0J,GAAM5C,EAAO,KAAMtF,GAAMA,EAAE,KAAOkI,EAAE,EAAE,CACzC,CAAA,EAEFL,EAAUG,EAAW1C,EAAQ6C,GAAS,MAAM,CAAC,CAAC,CAChD,EACA,CAAC,CAAA,EAIDhI,EAACC,EAAA,CACC,MAAO/B,EAAE,cAAc,EACvB,UACE4B,EAACI,EAAA,CACC,SAAUhC,EAAE,yBAAyB,EACrC,aAAa,cAAA,CACf,EAEF,QAAQ,eACR,WAAU,GAEV,SAAA,CAAA4B,EAACK,EAAA,CACC,KAAK,eACL,QAAA/B,EACA,aAAc,CAAC,EACf,MAAO,CACL,SAAWgC,GACTA,EAAM,OAAQP,GAAMA,EAAE,EAAE,EAAE,OAAS,CACvC,EACA,OAAQ,CAAC,CAAE,MAAAQ,CAAA,IAENL,EAAA8B,EAAA,CAAA,SAAA,CACCrD,GAAAqB,EAACoF,GAAA,CACC,aAAcC,EAAO,OAClBoB,GACC,CAAClG,EAAM,MACJ,IAAKR,GAAuBA,EAAE,EAAE,EAChC,SAAS0G,EAAM,EAAG,CACzB,EACA,4BAA2B,GAC3B,KAAA9H,EACA,aAAc,IAAME,EAAQ,CAACF,CAAI,EACjC,MAAQ0G,GAAW,CACCyC,EAAA,CAChB,GAAGD,EACH,GAAGxC,EAAO,IAAK4C,GAAMA,EAAE,KAAK,CAAA,CAC7B,EACD1H,EAAM,SAAS,CACb,GAAGA,EAAM,MACT,GAAG8E,EACA,IAAKoB,GAAUA,EAAM,KAAK,EAC1B,IAAKvF,IAAU,CAAE,GAAIA,EAAK,GAAK,SAAU,IAAQ,CAAA,CACrD,CACH,CAAA,CACF,EAEFlB,EAACqB,EAAA,CACC,cAAY,sBACZ,QAAQ,YACR,QAAS,IAAM,CACbxC,EAAQ,EAAI,CACd,EAEC,WAAE,iBAAiB,CAAA,CACtB,CAAA,EACF,CAAA,CAEJ,EACCgJ,EAAe,OAAS,GACtB3H,EAAAiI,GAAA,CAAM,QAAQ,UACb,SAAA,CAACnI,EAAAoI,GAAA,CACC,WAACC,EACC,CAAA,SAAA,CAACrI,EAAAsI,EAAA,CAAI,SAAElK,EAAA,kBAAkB,CAAE,CAAA,EAC1B4B,EAAAsI,EAAA,CAAI,SAAElK,EAAA,UAAU,CAAE,CAAA,EACnB4B,EAACsI,EAAG,CAAA,cAAY,MAAO,CAAA,CAAA,CAAA,CACzB,CACF,CAAA,EACAtI,EAACuI,IACE,SAAeV,EAAA,IAAI,CAACpB,EAAOvM,MACzBmO,EACC,CAAA,SAAA,CAACrI,EAAAwI,EAAA,CAAI,WAAM,IAAK,CAAA,IACfA,EACC,CAAA,SAAAxI,EAACK,EAAA,CACC,KAAM,gBAAgBnG,CAAK,YAC3B,aAAc,GACd,QAAAoE,EACA,OAAQ,CAAC,CAAE,MAAAiC,CAAA,IACTP,EAACyI,GAAA,CACC,GAAG,WACH,cAAY,WACZ,KAAK,WACL,UAAWlI,EAAM,MACjB,SAAUA,EAAM,QAAA,CAClB,CAAA,CAAA,EAGN,IACCiI,EACC,CAAA,SAAAxI,EAACqB,EAAA,CACC,QAAQ,OACR,UAAU,oDACV,OAAOqH,GAAgB,EAAA,EACvB,QAAS,IAAM,CACbf,EAAS,eAAgB,CACvB,GAAGpJ,EAAU,cAAc,EAAE,OAC1B0J,GAAMA,EAAE,KAAOxB,EAAM,EACxB,CAAA,CACD,EACiBqB,EAAA,CAChB,GAAGD,EAAe,OAAQI,GAAMA,EAAE,KAAOxB,EAAM,EAAE,CAAA,CAClD,CACH,CAAA,CAAA,EAEJ,CAlCO,CAAA,EAAAA,EAAM,EAmCf,CACD,EACH,CAAA,EACF,EAEDjI,EAAO,cACNwB,EAAC2B,IAAc,QAASvD,EAAE,qBAAqB,EAAG,CAAA,CAAA,CAAA,CAI1D,EC7IauK,GAAQ,IAAM,CACnB,KAAA,CAAE,YAAAzK,GAAgBC,KAElB,CAAE,EAAAC,GAAMC,IACR,CACJ,QAAAC,EACA,UAAAC,EACA,SAAAoJ,EACA,UAAW,CAAE,OAAAnJ,CAAO,GAClBC,EAA0B,EACxBC,EAASH,EAAU,QAAQ,EAE3B,CAACI,EAAME,CAAO,EAAII,EAAS,EAAK,EAChC,CAAC2J,EAAgBC,CAAiB,EAAI5J,EAC1C,CAAC,CAAA,EAGH,OAAAU,GACE,IACMjB,GAAUA,EAAO,OAAS,EACrB,QAAQ,IACbA,EAAO,IAAKoK,GAAM5K,EAAY,OAAO,QAAQ,CAAE,GAAI4K,EAAE,EAAI,CAAA,CAAC,CAAA,EAEvD,QAAQ,QAAQ,CAAA,CAAE,EAE1BC,GAAW,CACV,MAAMC,EAAgBD,EAAO,OAAQD,GAAMA,CAAC,EAC5CD,EAAkBG,CAAa,CACjC,EACA,CAAC,CAAA,EAKC9I,EAAA8B,EAAA,CAAA,SAAA,CAAAhC,EAACiJ,GAAA,CACC,KAAK,cACL,MAAO7K,EAAE,aAAa,EACtB,UAAWA,EAAE,iBAAiB,CAAA,CAChC,EACA8B,EAACC,EAAA,CACC,MAAO/B,EAAE,QAAQ,EACjB,YACGgC,EAAS,CAAA,SAAUhC,EAAE,kBAAkB,EAAG,aAAa,SAAS,EAEnE,QAAQ,SACR,WAAU,GAEV,SAAA,CAAA4B,EAACK,EAAA,CACC,KAAK,SACL,QAAA/B,EACA,aAAc,CAAC,EACf,MAAO,CACL,SAAWgC,GACTA,GAASA,EAAM,OAAO,CAAC,CAAE,GAAA3E,CAAG,IAAMA,CAAE,EAAE,OAAS,CACnD,EACA,OAAQ,CAAC,CAAE,MAAA4E,CAAA,IAENL,EAAA8B,EAAA,CAAA,SAAA,CACCrD,GAAAqB,EAACkJ,GAAA,CACC,KAAK,aACL,KAAM,CACJ,MAAO,yBACP,GAAI,KACN,EACA,UAAYH,GAAW,CACrBxI,EAAM,SAAS,CACb,GAAIA,EAAM,OAAS,CAAC,EACpB,IAAIwI,GAAU,CAAA,GAAI,IAAI,CAAC,CAAE,GAAApN,CAAG,KAAO,CAAE,GAAAA,CAAA,EAAK,CAAA,CAC3C,EACDkN,EAAkB,CAAC,GAAGD,EAAgB,GAAIG,GAAU,CAAA,CAAG,CAAC,EACxDlK,EAAQ,EAAK,CACf,EACA,QAAS,IAAM,CACbA,EAAQ,EAAK,CACf,EACA,aAAc+J,CAAA,CAChB,EAEF5I,EAACqB,EAAA,CACC,cAAY,sBACZ,QAAQ,YACR,QAAS,IAAM,CACbxC,EAAQ,EAAI,CACd,EAEC,WAAE,WAAW,CAAA,CAChB,CAAA,EACF,CAAA,CAEJ,EACC+J,EAAe,OAAS,GACtB1I,EAAAiI,GAAA,CAAM,QAAQ,UACb,SAAA,CAACnI,EAAAoI,GAAA,CACC,WAACC,EACC,CAAA,SAAA,CAACrI,EAAAsI,EAAA,CAAI,SAAElK,EAAA,QAAQ,CAAE,CAAA,EAChB4B,EAAAsI,EAAA,CAAI,SAAElK,EAAA,kBAAkB,CAAE,CAAA,EAC3B4B,EAACsI,EAAG,CAAA,cAAY,MAAO,CAAA,CAAA,CAAA,CACzB,CACF,CAAA,EACAtI,EAACuI,IACE,SAAeK,EAAA,IAAI,CAACO,EAAOjP,MACzBmO,EACC,CAAA,SAAA,CAACrI,EAAAwI,EAAA,CAAI,WAAM,IAAK,CAAA,IACfA,EACC,CAAA,SAAAxI,EAACK,EAAA,CACC,KAAM,UAAUnG,CAAK,kBACrB,aAAc,GACd,QAAAoE,EACA,OAAQ,CAAC,CAAE,MAAAiC,CAAA,IACTP,EAACyI,GAAA,CACC,GAAG,iBACH,cAAY,WACZ,KAAK,iBACL,UAAWlI,EAAM,MACjB,SAAUA,EAAM,SAChB,WAAY4I,EAAM,gBAAkB,CAAA,CACtC,CAAA,CAAA,EAGN,IACCX,EACC,CAAA,SAAAxI,EAACqB,EAAA,CACC,QAAQ,OACR,UAAU,oDACV,OAAOqH,GAAgB,EAAA,EACvB,QAAS,IAAM,CACbf,EAAS,SAAU,CACjB,IAAIjJ,GAAU,CAAI,GAAA,OAAO,CAAC,CAAE,GAAA/C,KAASA,IAAOwN,EAAM,EAAE,CAAA,CACrD,EACiBN,EAAA,CAChB,GAAGD,EAAe,OAAO,CAAC,CAAE,GAAAjN,CAAG,IAAMA,IAAOwN,EAAM,EAAE,CAAA,CACrD,CACH,CAAA,CAAA,EAEJ,CAjCO,CAAA,EAAAA,EAAM,EAkCf,CACD,EACH,CAAA,EACF,EAED3K,EAAO,QAAUwB,EAAC2B,IAAc,QAASvD,EAAE,gBAAgB,EAAG,CAAA,CAAA,CACjE,CACF,CAAA,CAAA,CAEJ,ECnKagL,GAAa,IAAM,CACxB,KAAA,CAAE,GAAM/K,IACR,CAAE,QAAAC,GAAYG,IAGlB,OAAAuB,EAACG,EAAA,CACC,MAAO,EAAE,MAAM,EACf,YACGC,EAAS,CAAA,SAAU,EAAE,gBAAgB,EAAG,aAAa,OAAO,EAE/D,QAAQ,OACR,WAAU,GAEV,SAAAJ,EAACK,EAAA,CACC,KAAK,OACL,aAAa,GACb,QAAA/B,EACA,OAAQ,CAAC,CAAE,MAAAiC,CAAA,IACTP,EAACqJ,GAAA,CACC,GAAG,OACH,cAAY,OACZ,SAAU9I,EAAM,SAChB,KAAMA,EAAM,MACZ,OAAO,QACP,SAAU+I,GAAS,WACnB,WAAY,EAAA,CACd,CAAA,CAEJ,CAAA,CAAA,CAGN,EChCMC,GAAc,CAAC,WAAY,UAAU,EAM9BC,GAAgB,CAAC,CAAE,WAAAhO,KAAqC,CAC7D,KAAA,CAAE,EAAA4C,GAAMC,IACR,CAAE,QAAAC,GAAYG,IAGlB,OAAAuB,EAACG,EAAA,CACC,MAAO/B,EAAE,OAAO,EAChB,YAAYgC,EAAS,CAAA,SAAUhC,EAAE,WAAW,EAAG,aAAa,QAAQ,EACpE,QAAQ,QACR,gBAAe,GAEf,SAAA4B,EAACK,EAAA,CACC,KAAK,QACL,cAAY,QACZ,aAAckJ,GAAY,CAAC,EAC3B,QAAAjL,EACA,OAAQ,CAAC,CAAE,MAAAiC,KAENP,EAAAgC,EAAA,CAAA,SAAAuH,GAAY,IAAKE,GAChBzJ,EAACkC,GAAA,CACC,GAAIuH,EAEJ,cAAaA,EACb,UAAWlJ,EAAM,QAAUkJ,EAC3B,KAAK,QACL,SAAU,IAAMlJ,EAAM,SAASkJ,CAAI,EACnC,MAAOrL,EAAE,aAAaqL,EAAK,YAAa,CAAA,EAAE,EAC1C,UAAU,gBACV,WAAAjO,CAAA,EAPKiO,CASR,CAAA,EACH,CAAA,CAEJ,CAAA,CAAA,CAGN,ECzCaC,GAAkB,CAAC,CAAE,WAAAlO,KAAuC,CACjE,KAAA,CAAE,EAAA4C,GAAMC,IAEd,OAEI6B,EAAA8B,EAAA,CAAA,SAAA,CAAAhC,EAACiJ,GAAA,CACC,KAAK,OACL,MAAO7K,EAAE,MAAM,EACf,MAAO,CAAE,SAAUA,EAAE,UAAU,CAAE,EACjC,WAAA5C,CAAA,CACF,EACAwE,EAAC2J,GAAA,CACC,KAAK,cACL,MAAOvL,EAAE,aAAa,EACtB,MAAO,CACL,UAAW,CAAE,QAASA,EAAE,YAAa,CAAE,OAAQ,GAAK,CAAA,EAAG,MAAO,GAAI,CACpE,EACA,WAAA5C,CAAA,CACF,CACF,CAAA,CAAA,CAEJ,ECzBaoO,GAAQ,IAAM,CACnB,KAAA,CAAE,GAAMvL,IAEd,OAEI6B,EAAA8B,EAAA,CAAA,SAAA,CAAAhC,EAACiJ,GAAA,CACC,KAAK,cACL,MAAO,EAAE,aAAa,EACtB,UAAW,EAAE,iBAAiB,EAC9B,MAAO,CAAE,SAAU,EAAE,UAAU,CAAE,CAAA,CACnC,EACAjJ,EAACiJ,GAAA,CACC,KAAK,UACL,MAAO,EAAE,cAAc,EACvB,UAAW,EAAE,kBAAkB,EAC/B,MAAO,CAAE,SAAU,EAAE,UAAU,CAAE,CAAA,CACnC,EACAjJ,EAAC6J,GAAA,CACC,KAAK,0BACL,MAAO,EAAE,yBAAyB,EAClC,UAAW,EAAE,6BAA6B,EAC1C,QAAS,EAAE,KAAK,EAChB,SAAU,EAAE,IAAI,CAAA,CAClB,CACF,CAAA,CAAA,CAEJ,ECfaC,GAAO,IAAM,CAClB,KAAA,CAAE,YAAA5L,GAAgBC,KAElB,CAAE,EAAAC,GAAMC,IACR,CACJ,QAAAC,EACA,UAAAC,EACA,SAAAoJ,EACA,UAAW,CAAE,OAAAnJ,CAAO,GAClBC,EAGD,EACGC,EAASH,EAAU,OAAO,EAE1B,CAACI,EAAME,CAAO,EAAII,EAAS,EAAK,EAChC,CAAC8K,EAAeC,CAAgB,EAAI/K,EAAgB,CAAE,CAAA,EAE5D,OAAAU,GACE,SAAY,CACN,GAAAjB,GAAUA,EAAO,OAAS,EAAG,CACzB,MAAAuL,EAAQ,MAAM,QAAQ,IAC1BvL,EAAO,IAAK,GAAMR,EAAY,MAAM,YAAY,CAAE,GAAI,EAAE,EAAI,CAAA,CAAC,CAAA,EAE/D,OAAO,QAAQ,IACb+L,EAAM,IAAI,MAAOC,IAAU,CACzB,KAAAA,EACA,OAAQA,EAAM,WACV,MAAMhM,EAAY,QAAQ,QAAQ,CAChC,GAAIgM,GAAM,WACX,CAAA,EACD,MAAA,EACJ,CAAA,CAEN,CACO,OAAA,QAAQ,QAAQ,CAAA,CAAE,CAC3B,EACAF,EACA,CAAC,CAAA,EAKC9J,EAAA8B,EAAA,CAAA,SAAA,CAAA9B,EAACC,EAAA,CACC,MAAO/B,EAAE,OAAO,EAChB,YACGgC,EAAS,CAAA,SAAUhC,EAAE,iBAAiB,EAAG,aAAa,QAAQ,EAEjE,QAAQ,QACR,WAAU,GAEV,SAAA,CAAA4B,EAACK,EAAA,CACC,KAAK,QACL,QAAA/B,EACA,aAAc,CAAC,EACf,MAAO,CACL,SAAWgC,GACTA,GAASA,EAAM,OAAQP,GAAMA,EAAE,EAAE,EAAE,OAAS,CAChD,EACA,OAAQ,CAAC,CAAE,MAAAQ,CAAA,IAENL,EAAA8B,EAAA,CAAA,SAAA,CACCrD,GAAAqB,EAACmK,GAAA,CACC,GAAG,OACH,KAAK,QACL,SAAWvE,GAAS,CAClBrF,EAAM,SAAS,CACb,GAAIA,EAAM,OAAS,CAAC,EACpB,GAAGqF,EAAK,IAAKc,IAAS,CAAE,GAAIA,EAAI,KAAK,EAAA,EAAK,CAAA,CAC3C,EACDsD,EAAiB,CAAC,GAAGD,EAAe,GAAGnE,CAAI,CAAC,EAC5C/G,EAAQ,EAAK,CACf,EACA,QAAS,IAAM,CACbA,EAAQ,EAAK,CACf,EACA,aAAY,EAAA,CACd,EAEFmB,EAACqB,EAAA,CACC,cAAY,qBACZ,QAAQ,YACR,QAAS,IAAM,CACbxC,EAAQ,EAAI,CACd,EAEC,WAAE,UAAU,CAAA,CACf,CAAA,EACF,CAAA,CAEJ,EACCkL,EAAc,OAAS,GACrB7J,EAAAiI,GAAA,CAAM,QAAQ,UACb,SAAA,CAACnI,EAAAoI,GAAA,CACC,WAACC,EACC,CAAA,SAAA,CAACrI,EAAAsI,EAAA,CAAI,SAAElK,EAAA,OAAO,CAAE,CAAA,EACf4B,EAAAsI,EAAA,CAAI,SAAElK,EAAA,UAAU,CAAE,CAAA,EACnB4B,EAACsI,EAAG,CAAA,cAAY,MAAO,CAAA,CAAA,CAAA,CACzB,CACF,CAAA,EACAtI,EAACuI,IACE,SAAcwB,EAAA,IAAI,CAACrD,EAAKxM,MACtBmO,EACC,CAAA,SAAA,CAACrI,EAAAwI,EAAA,CACC,WAAC4B,GAAY,CAAA,KAAM1D,EAAI,KAAM,OAAQA,EAAI,MAAA,CAAQ,CACnD,CAAA,IACC8B,EACC,CAAA,SAAAxI,EAACK,EAAA,CACC,KAAM,SAASnG,CAAK,YACpB,aAAc,GACd,QAAAoE,EACA,OAAQ,CAAC,CAAE,MAAAiC,CAAA,IACTP,EAACyI,GAAA,CACC,GAAG,WACH,cAAY,WACZ,KAAK,WACL,UAAWlI,EAAM,MACjB,SAAUA,EAAM,QAAA,CAClB,CAAA,CAAA,EAGN,IACCiI,EACC,CAAA,SAAAxI,EAACqB,EAAA,CACC,QAAQ,OACR,UAAU,oDACV,OAAOqH,GAAgB,EAAA,EACvB,QAAS,IAAM,CACbf,EAAS,QAAS,CAChB,IAAIjJ,GAAU,IAAI,OAAQuJ,GAAMA,EAAE,KAAOvB,EAAI,KAAK,EAAE,CAAA,CACrD,EACgBsD,EAAA,CACf,GAAGD,EAAc,OACd9B,GAAMA,EAAE,KAAK,KAAOvB,EAAI,KAAK,EAChC,CAAA,CACD,CACH,CAAA,CAAA,EAEJ,CAAA,CAAA,EApCOA,EAAI,KAAK,EAqClB,CACD,CACH,CAAA,CAAA,EACF,EAEDlI,EAAO,OAASwB,EAAC2B,IAAc,QAASvD,EAAE,eAAe,EAAG,CAAA,CAAA,CAC/D,EACA4B,EAACqK,GAAA,CACC,KAAK,aACL,MAAOjM,EAAE,YAAY,EACrB,UAAWA,EAAE,gBAAgB,CAAA,CAC/B,CACF,CAAA,CAAA,CAEJ,ECvJMkM,GAAmB,wCACnBC,GAAkBjK,GAAkBA,EAAM,SAAW,EAAA,SAAS,EAAG,GAAG,EAEpEkK,GAAW,CAAC,CAAE,KAAA5M,KAA6B,CACzC,KAAA,CAAE,QAAAU,GAAYG,IAEdgM,EAAY,CAACnK,EAAe3I,IAAwB,CACxD,GAAI,CAACA,EACI,OAAA2I,EAGH,MAAAlI,EAAQkI,EAAM,MAAMgK,EAAgB,EAO1C,MAAO,GANY,CACjB3S,EAAK,YAAY,EACjB4S,GAAe5S,EAAK,SAAS,EAAI,CAAC,EAClC4S,GAAe5S,EAAK,SAAS,CAAA,EAC7B,KAAK,GAAG,CAEU,IAAIS,EAAQA,EAAM,CAAC,EAAI,IAAI,IAC7CA,EAAQA,EAAM,CAAC,EAAI,IACrB,KAAA,EAGIb,EAAY,CAChB+I,EACApJ,EACAwT,IACW,CACL,MAAAtS,EAAQkI,EAAM,MAAMgK,EAAgB,EACtC,OAAwBI,GAAW,KAC9B,GAAGtS,EAAQA,EAAM,CAAC,EAAI,EAAE,IAAIlB,CAAI,IACrCwT,EAAS,GAAK,IAAIA,CAAM,GAAKA,CAC/B,MAEKpK,CAAA,EAIP,OAAAN,EAACK,EAAA,CACC,KAAAzC,EACA,aAAa,GACb,QAAAU,EACA,MAAO,CAAE,SAAU,EAAK,EACxB,OAAQ,CAAC,CAAE,MAAAiC,KAAY,CACrB,MAAMoK,EAAWpK,EAAM,MAAM,MAAM+J,EAAgB,GAAK,CACtD,GACA,GACA,IACA,IAAA,EAEF,OACGpK,EAAA0K,GAAA,CAAM,UAAS,GAAC,GAAIhN,EACnB,SAAA,CAAAoC,EAAC6K,GACC,CAAA,SAAA7K,EAAC8K,GAAA,CACC,MAAOH,EAAS,CAAC,EACjB,SAAU,CAACvR,EAAOkH,EAAO3I,IAAS,CAChC4I,EAAM,SAASkK,EAAUlK,EAAM,MAAO5I,CAAI,CAAC,CAC7C,CAAA,CAAA,EAEJ,IACCkT,GACC,CAAA,SAAA7K,EAAC/G,GAAA,CACC,KAAM,GAAG0R,EAAS,CAAC,CAAC,IAAIA,EAAS,CAAC,CAAC,GACnC,SAAU,CAACvR,EAAO5B,EAAMN,EAAMwT,IAC5BnK,EAAM,SAAShJ,EAAUgJ,EAAM,MAAOrJ,EAAMwT,CAAM,CAAC,EAErD,SAAQ,EAAA,CAAA,EAEZ,CACF,CAAA,CAAA,CAEJ,CAAA,CAAA,CAGN,EAQMK,GAAgB,CAAC,CAAE,KAAAnN,EAAM,IAAAoN,EAAK,IAAAC,KAA8B,CAC1D,KAAA,CAAE,QAAA3M,GAAYG,IACdkJ,EAAYuD,GAAqB,KAAK,IAAIA,EAAUD,CAAG,EAG3D,OAAAjL,EAACK,EAAA,CACC,KAAAzC,EACA,aAAa,GACb,QAAAU,EACA,OAAQ,CAAC,CAAE,MAAAiC,CAAA,IACTP,EAACmL,GAAA,CACC,GAAIvN,EACJ,MAAO2C,EAAM,MACb,IAAAyK,EACA,IAAAC,EACA,OAAQ,IAAM1K,EAAM,SAAS,OAAOA,EAAM,KAAK,EAAI,CAAC,EACpD,QAAS,IAAMA,EAAM,SAAS,OAAOA,EAAM,KAAK,EAAI,CAAC,EACrD,SAAWnH,GAAU,CACnB,MAAM8R,EAAW,OAAO9R,EAAM,cAAc,KAAK,EAC3CmH,EAAA,SAASoH,EAAU,MAAMuD,CAAQ,EAAe,EAAXA,CAAY,CAAC,CAC1D,CAAA,CACF,CAAA,CAAA,CAIR,EAEME,GAAS,CAAC,CAAE,KAAAxN,EAAM,GAAGyN,KAA+B,CAClD,KAAA,CAAE,EAAAjN,GAAMC,IAGZ,OAAA2B,EAACG,EAAA,CACC,MAAO/B,EAAER,CAAI,EACb,QAASA,EACT,UAAYoC,EAAAI,EAAA,CAAS,SAAUhC,EAAE,GAAGR,CAAI,MAAM,EAAG,aAAcA,CAAM,CAAA,EAErE,SAAAsC,EAAC0K,GAAM,CAAA,UAAS,GACd,SAAA,CAAA5K,EAAC6K,IACC,SAAC7K,EAAA+K,GAAA,CAAc,KAAAnN,EAAa,GAAGyN,CAAM,CAAA,EACvC,EACCrL,EAAA6K,GAAA,CAAW,SAAEzM,EAAA,IAAI,CAAE,CAAA,EACpB4B,EAAC6K,GACC,CAAA,SAAA7K,EAAC+K,GAAc,CAAA,KAAM,GAAGnN,CAAI,MAAQ,GAAGyN,CAAA,CAAM,CAC/C,CAAA,CAAA,EACF,CAAA,CAAA,CAGN,EAEaC,GAAO,IAAM,CAClB,KAAA,CAAE,GAAMjN,IACR,CACJ,UAAAE,EACA,UAAW,CAAE,OAAAC,CAAO,GAClBC,EAAe,EACb,CAAC8M,EAAQC,CAAS,EAAIvM,EAASV,EAAU,OAAO,CAAC,EACvD,OAEI2B,EAAA8B,EAAA,CAAA,SAAA,CAAAhC,EAACG,EAAA,CACC,MAAO,EAAE,QAAQ,EACjB,QAAQ,SACR,YACGC,EAAS,CAAA,SAAU,EAAE,YAAY,EAAG,aAAa,SAAS,EAG7D,WAACqL,GACC,CAAA,SAAA,CAAAzL,EAAC0L,GACC,CAAA,SAAA1L,EAACkC,GAAA,CACC,GAAG,YACH,cAAY,YACZ,UAAW,CAACqJ,EACZ,KAAK,SACL,SAAU,IAAMC,EAAU,EAAK,EAC/B,MAAO,EAAE,WAAW,EACpB,UAAU,eAAA,CAAA,EAEd,IACCE,GACC,CAAA,SAAA1L,EAACkC,GAAA,CACC,GAAG,SACH,cAAY,SACZ,UAAWqJ,EACX,KAAK,SACL,SAAU,IAAMC,EAAU,EAAI,EAC9B,MAAO,EAAE,QAAQ,EACjB,UAAU,eAAA,CAAA,EAEd,CAAA,EACF,CAAA,CACF,EACCD,GAEGrL,EAAA8B,EAAA,CAAA,SAAA,CAAAhC,EAACoL,IAAO,KAAK,QAAQ,IAAK,EAAG,IAAK,GAAI,IACrCA,GAAO,CAAA,KAAK,WAAW,IAAK,EAAG,IAAK,GAAI,IACxCA,GAAO,CAAA,KAAK,OAAO,IAAK,EAAG,IAAK,GAAI,IACpCA,GAAO,CAAA,KAAK,SAAS,IAAK,EAAG,IAAK,GAAI,CAAA,EACzC,EAEFlL,EAACC,EAAA,CACC,MAAO,EAAE,WAAW,EACpB,QAAQ,YACR,YACGC,EAAS,CAAA,SAAU,EAAE,eAAe,EAAG,aAAa,YAAY,EAEnE,WAAU,GAEV,SAAA,CAACJ,EAAAwK,GAAA,CAAS,KAAK,WAAY,CAAA,EAC1BhM,EAAO,WAAawB,EAAC2B,IAAc,QAAS,EAAE,UAAU,EAAG,CAAA,CAAA,CAC9D,EACAzB,EAACC,EAAA,CACC,MAAO,EAAE,YAAY,EACrB,QAAQ,eACR,YACGC,EAAS,CAAA,SAAU,EAAE,gBAAgB,EAAG,aAAa,aAAa,EAErE,WAAU,GAEV,SAAA,CAACJ,EAAAwK,GAAA,CAAS,KAAK,cAAe,CAAA,EAC7BhM,EAAO,cAAgBwB,EAAC2B,IAAc,QAAS,EAAE,UAAU,EAAG,CAAA,CAAA,CACjE,CACF,CAAA,CAAA,CAEJ,ECzNagK,GAAO,IAAM,CAClB,KAAA,CAAE,GAAMtN,IAEZ,OAAA2B,EAACrC,GAAA,CACC,KAAK,QACL,MAAM,QACN,SAAU,EAAE,aAAa,EACzB,aAAc,CAAC,EACf,QAAQ,iBACR,WAAU,EAAA,CAAA,CAGhB,EC+BMiO,GAEF,CACF,UAAW5G,GACX,OAAQE,GACR,KAAMyG,GACN,eAAgBjE,GAChB,MAAOiB,GACP,MAAOiB,GACP,KAAME,GACN,KAAMwB,GACN,GAAIlC,EACN,EAEayC,GAAwBvL,GAAkBA,KAASsL,GAEhE,SAAwBE,IAAgB,CAChC,KAAA,CAAE,YAAA5N,GAAgBC,KAElB,CAAE,EAAAC,GAAMC,IACR,CAAE,GAAA1C,EAAI,MAAA8G,EAAO,SAAAsJ,EAAU,WAAAC,CAAA,EAAe/G,KACtCtC,EAAWC,KACXqJ,EAAOC,KACP,CAAE,MAAAC,EAAO,aAAAC,CAAiB,EAAAH,EAE1B,CAAE,SAAAI,EAAU,SAAAC,CAAS,EAAIC,GAAU,EAEnC,CAACrI,EAAQsI,CAAS,EAAIvN,EAA+B,EACrDzD,EAAawQ,IAAe,KAElCrM,GACE,SAAY,CACV,GAAIoM,EAAU,CACN,MAAAU,EAAS,MAAM,QAAQ,IAAI,CAC/BvO,EAAY,QAAQ,cAAc,CAChC,GAAAvC,EACA,KAAMqQ,EACN,SAAAD,CAAA,CACD,EACD7N,EAAY,QAAQ,sBAAsB,CACxC,GAAAvC,EACA,aAAcoQ,CAAA,CACf,CAAA,CACF,EAEG,GAAA,CAACU,EAAO,CAAC,EACX,MAAM,IAAI,MAAMrO,EAAE,UAAU,CAAC,EAGxB,MAAA,CACL,OAAQqO,EAAO,CAAC,EAChB,SAAUA,EAAO,CAAC,EAAE,IAAKlJ,GAAMA,EAAE,EAAE,CAAA,CAEvC,CACA,MAAO,EACT,EACA,CAAC,CAAE,OAAAW,EAAQ,SAAAT,KAAe,CACxB0I,EAAM,CAAE,GAAGjI,EAAQ,SAAAT,CAAU,CAAA,EAC7B+I,EAAUtI,CAAM,CAClB,EACA,CAACvI,EAAIqQ,EAAYD,CAAQ,CAAA,EAGrB,MAAAW,EAAW,MAAOxI,GAAmB,CAEzCA,EAAO,OAASA,EAAO,QAAQ,OAAQ4E,GAAMA,EAAE,EAAE,EACjD5E,EAAO,aAAeA,EAAO,cAAc,OAAQnE,GAAMA,EAAE,EAAE,EAC7DmE,EAAO,MAAQA,EAAO,OAClB,OAAQR,GAAMA,EAAE,EAAE,EACnB,IAAKA,IAAO,CAAE,GAAGA,EAAG,SAAUA,EAAE,UAAY,EAAQ,EAAA,EAEnD,GAAA,CACF,GAAIqI,EACF,MAAM7N,EAAY,QAAQ,aACxB,CAAE,GAAAvC,EAAI,KAAMqQ,EAAY,SAAAD,CAAS,EACjC7H,CAAA,MAEG,CACC,MAAAuI,EAAS,MAAMvO,EAAY,QAAQ,aACvC,CAAE,GAAAvC,EAAI,KAAMqQ,CAAW,EACvB9H,CAAA,EAEFvB,EACEwB,GAAgB,CACd,MAAA1B,EACA,GAAA9G,EACA,WAAAqQ,EACA,SAAUS,EAAO,EAAA,CAClB,CAAA,CAEL,CACAJ,EACEjO,GAAG2N,EAAW,SAAW,UAAY,eAAe,EACpDY,GAAa,OAAA,QAERC,EAAO,CACdN,EAAS,kBAAmBM,CAAK,CACnC,CAAA,EAGI,CAACC,EAAoBC,CAAa,EAAI/I,GAAiB,CAC3D,SAAU,eACV,WAAY,sBACZ,oBAAqB,UACrB,UAAW,SAAY,CACjB,GAAA,CACI,MAAA7F,EAAY,QAAQ,UAAU,CAClC,GAAAvC,EACA,SAAAoQ,CAAA,CACD,EACDM,EAASjO,EAAE,sBAAsB,EAAGuO,GAAa,OAAO,EAC/ChK,EAAAoK,GAAmB,CAAE,MAAAtK,EAAO,SAAU9G,EAAI,IAAK,UAAY,CAAA,CAAC,QAC9DiR,EAAO,CACdN,EAAS,qBAAsBM,CAAK,CACtC,CACF,CAAA,CACD,EAEG,GAAAb,GAAY,CAAC7H,EACf,SAAQ8I,GAAgB,CAAA,CAAA,EAG1B,SAASC,GAAmB,CAC1B,OAAOpB,GAAqBG,CAAU,EAClCJ,GAAWI,CAAU,EACrBJ,GAAW,EACjB,CAEA,MAAMsB,EAAgBD,IAEtB,OAEI/M,EAAA8B,EAAA,CAAA,SAAA,CAAAhC,EAAC8M,EAAc,EAAA,EACf9M,EAACmN,GAAA,CACC,SACEpB,EAAW7H,GAAQ,KAAQ9F,EAAE,qBAAsB,CAAE,WAAA4N,EAAY,EAEnE,cACED,EACI,CACE/L,EAACsH,GAAA,CAEC,cAAY,gBACZ,QAAS,IAAMuF,EAAmB,EAEjC,WAAE,QAAQ,CAAA,EAJP,QAKN,CAEF,EAAA,MAAA,CAER,EACA7M,EAACoN,GAAY,CAAA,QAAQ,QACnB,SAAAlN,EAACmN,GAAA,CACC,aAAY,GACZ,SAAUjB,EAAaM,CAAQ,EAC/B,KAAK,SAEL,SAAA,CAACxM,EAAAoN,GAAA,CAAc,GAAGrB,EAChB,SAAA,CAAAjM,EAAC0J,IAAgB,WAAAlO,EAAwB,IACxC0R,EAAc,EAAA,EACflN,EAACwJ,IAAc,WAAAhO,EAAwB,CAAA,EACzC,EACCwE,EAAAuN,GAAA,CACC,SAACrN,EAAA,MAAA,CAAI,UAAU,gBACb,SAAA,CAAAF,EAACqB,EAAA,CACC,WAAA7F,EACA,QAASwI,GAAc,QACvB,UAAU,gBACV,KAAK,SACL,cAAY,OAEX,WAAE,MAAM,CAAA,CACX,EAEAhE,EAACqB,EAAA,CACC,QAAQ,OACR,cAAY,SACZ,UAAYlI,GACV6G,EAACyE,GAAA,CACE,GAAGtL,EACJ,GAAI4T,GAAmB,CACrB,MAAAtK,EACA,SAAU9G,EACV,IAAK,UAAA,CACN,CAAA,CACH,EAGD,WAAE,QAAQ,CAAA,CACb,CAAA,CAAA,CACF,CACF,CAAA,CAAA,CAAA,CAAA,EAEJ,CACF,CAAA,CAAA,CAEJ,wIC7Na+I,GAAkB,CAAC,CAC9B,gBAAAxB,EACA,SAAAsK,EACA,aAAAjI,CACF,IAA4B,CACpB,KAAA,CAAE,EAAAnH,GAAMC,IACR0J,EAAaC,KAEbyF,EAAiBlH,GACrB,IACErD,EAAkB6E,EAAW7E,EAAiBgF,GAAS,MAAM,CAAC,EAAI,CAAC,EACrE,CAAChF,CAAe,CAAA,EAIhB,OAAAlD,EAAC8G,GAAA,CACC,aAAY1I,EAAE,cAAc,EAC5B,QAAS2I,GAAa,OACtB,SACG2G,GACC,CAAA,SAAA,CAAA1N,EAAC2N,IAAK,UAAWC,GAAa,GAAK,SAAAxP,EAAE,mBAAmB,EAAE,EACzD4B,EAAA2N,GAAA,CAAM,SAAEvP,EAAA,+BAA+B,CAAE,CAAA,CAAA,EAC5C,EAEF,OAAM,GACN,QAASmH,EAET,WAAC4C,GAAM,CAAA,aAAY/J,EAAE,UAAU,EAAG,QAAQ,UACxC,SAAA,CAAC4B,EAAAoI,GAAA,CACC,WAACC,EACC,CAAA,SAAA,CAACrI,EAAAsI,EAAA,CAAI,SAAElK,EAAA,MAAM,CAAE,CAAA,EACd4B,EAAAsI,EAAA,CAAI,SAAElK,EAAA,aAAa,CAAE,CAAA,CAAA,CAAA,CACxB,CACF,CAAA,EACC4B,EAAAuI,GAAA,CACE,SAAekF,EAAA,IAAKI,GACnB3N,EAACmI,EAAA,CAEC,cAAawF,EAAS,KACtB,WAAY,IAAML,EAASK,CAAQ,EACnC,YAAW,GAEX,SAAA,CAAC7N,EAAAwI,EAAA,CAAI,WAAS,IAAK,CAAA,EACnBxI,EAACwI,EACE,CAAA,SAAAqD,GAAqBgC,EAAS,IAAK,GAClCzP,EAAE,kBAAkByP,EAAS,IAAI,EAAE,CACvC,CAAA,CAAA,CAAA,EATKA,EAAS,IAWjB,CAAA,EACH,CAAA,EACF,CAAA,CAAA,CAGN","x_google_ignoreList":[0,1,2,3,4]}