{"version":3,"file":"5U7TNDxQ.js","sources":["../../../../node_modules/quasar/src/components/drawer/QDrawer.js"],"sourcesContent":["import { h, withDirectives, ref, computed, watch, onMounted, onBeforeUnmount, nextTick, inject, getCurrentInstance } from 'vue'\n\nimport useHistory from '../../composables/private.use-history/use-history.js'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from '../../composables/private.use-model-toggle/use-model-toggle.js'\nimport usePreventScroll from '../../composables/private.use-prevent-scroll/use-prevent-scroll.js'\nimport useTimeout from '../../composables/use-timeout/use-timeout.js'\nimport useDark, { useDarkProps } from '../../composables/private.use-dark/use-dark.js'\n\nimport TouchPan from '../../directives/touch-pan/TouchPan.js'\n\nimport { createComponent } from '../../utils/private.create/create.js'\nimport { between } from '../../utils/format/format.js'\nimport { hSlot, hDir } from '../../utils/private.render/render.js'\nimport { layoutKey, emptyRenderFn } from '../../utils/private.symbols/symbols.js'\n\nconst duration = 150\n\nexport default createComponent({\n name: 'QDrawer',\n\n inheritAttrs: false,\n\n props: {\n ...useModelToggleProps,\n ...useDarkProps,\n\n side: {\n type: String,\n default: 'left',\n validator: v => [ 'left', 'right' ].includes(v)\n },\n\n width: {\n type: Number,\n default: 300\n },\n\n mini: Boolean,\n miniToOverlay: Boolean,\n miniWidth: {\n type: Number,\n default: 57\n },\n noMiniAnimation: Boolean,\n\n breakpoint: {\n type: Number,\n default: 1023\n },\n showIfAbove: Boolean,\n\n behavior: {\n type: String,\n validator: v => [ 'default', 'desktop', 'mobile' ].includes(v),\n default: 'default'\n },\n\n bordered: Boolean,\n elevated: Boolean,\n\n overlay: Boolean,\n persistent: Boolean,\n noSwipeOpen: Boolean,\n noSwipeClose: Boolean,\n noSwipeBackdrop: Boolean\n },\n\n emits: [\n ...useModelToggleEmits,\n 'onLayout', 'miniState'\n ],\n\n setup (props, { slots, emit, attrs }) {\n const vm = getCurrentInstance()\n const { proxy: { $q } } = vm\n\n const isDark = useDark(props, $q)\n const { preventBodyScroll } = usePreventScroll()\n const { registerTimeout, removeTimeout } = useTimeout()\n\n const $layout = inject(layoutKey, emptyRenderFn)\n if ($layout === emptyRenderFn) {\n console.error('QDrawer needs to be child of QLayout')\n return emptyRenderFn\n }\n\n let lastDesktopState, timerMini = null, layoutTotalWidthWatcher\n\n const belowBreakpoint = ref(\n props.behavior === 'mobile'\n || (props.behavior !== 'desktop' && $layout.totalWidth.value <= props.breakpoint)\n )\n\n const isMini = computed(() =>\n props.mini === true && belowBreakpoint.value !== true\n )\n\n const size = computed(() => (\n isMini.value === true\n ? props.miniWidth\n : props.width\n ))\n\n const showing = ref(\n props.showIfAbove === true && belowBreakpoint.value === false\n ? true\n : props.modelValue === true\n )\n\n const hideOnRouteChange = computed(() =>\n props.persistent !== true\n && (belowBreakpoint.value === true || onScreenOverlay.value === true)\n )\n\n function handleShow (evt, noEvent) {\n addToHistory()\n\n evt !== false && $layout.animate()\n applyPosition(0)\n\n if (belowBreakpoint.value === true) {\n const otherInstance = $layout.instances[ otherSide.value ]\n if (otherInstance !== void 0 && otherInstance.belowBreakpoint === true) {\n otherInstance.hide(false)\n }\n\n applyBackdrop(1)\n $layout.isContainer.value !== true && preventBodyScroll(true)\n }\n else {\n applyBackdrop(0)\n evt !== false && setScrollable(false)\n }\n\n registerTimeout(() => {\n evt !== false && setScrollable(true)\n noEvent !== true && emit('show', evt)\n }, duration)\n }\n\n function handleHide (evt, noEvent) {\n removeFromHistory()\n\n evt !== false && $layout.animate()\n\n applyBackdrop(0)\n applyPosition(stateDirection.value * size.value)\n\n cleanup()\n\n if (noEvent !== true) {\n registerTimeout(() => { emit('hide', evt) }, duration)\n }\n else {\n removeTimeout()\n }\n }\n\n const { show, hide } = useModelToggle({\n showing,\n hideOnRouteChange,\n handleShow,\n handleHide\n })\n\n const { addToHistory, removeFromHistory } = useHistory(showing, hide, hideOnRouteChange)\n\n const instance = {\n belowBreakpoint,\n hide\n }\n\n const rightSide = computed(() => props.side === 'right')\n\n const stateDirection = computed(() =>\n ($q.lang.rtl === true ? -1 : 1) * (rightSide.value === true ? 1 : -1)\n )\n\n const flagBackdropBg = ref(0)\n const flagPanning = ref(false)\n const flagMiniAnimate = ref(false)\n const flagContentPosition = ref( // starting with \"hidden\" for SSR\n size.value * stateDirection.value\n )\n\n const otherSide = computed(() => (rightSide.value === true ? 'left' : 'right'))\n const offset = computed(() => (\n showing.value === true && belowBreakpoint.value === false && props.overlay === false\n ? (props.miniToOverlay === true ? props.miniWidth : size.value)\n : 0\n ))\n\n const fixed = computed(() =>\n props.overlay === true\n || props.miniToOverlay === true\n || $layout.view.value.indexOf(rightSide.value ? 'R' : 'L') !== -1\n || ($q.platform.is.ios === true && $layout.isContainer.value === true)\n )\n\n const onLayout = computed(() =>\n props.overlay === false\n && showing.value === true\n && belowBreakpoint.value === false\n )\n\n const onScreenOverlay = computed(() =>\n props.overlay === true\n && showing.value === true\n && belowBreakpoint.value === false\n )\n\n const backdropClass = computed(() =>\n 'fullscreen q-drawer__backdrop'\n + (showing.value === false && flagPanning.value === false ? ' hidden' : '')\n )\n\n const backdropStyle = computed(() => ({\n backgroundColor: `rgba(0,0,0,${ flagBackdropBg.value * 0.4 })`\n }))\n\n const headerSlot = computed(() => (\n rightSide.value === true\n ? $layout.rows.value.top[ 2 ] === 'r'\n : $layout.rows.value.top[ 0 ] === 'l'\n ))\n\n const footerSlot = computed(() => (\n rightSide.value === true\n ? $layout.rows.value.bottom[ 2 ] === 'r'\n : $layout.rows.value.bottom[ 0 ] === 'l'\n ))\n\n const aboveStyle = computed(() => {\n const css = {}\n\n if ($layout.header.space === true && headerSlot.value === false) {\n if (fixed.value === true) {\n css.top = `${ $layout.header.offset }px`\n }\n else if ($layout.header.space === true) {\n css.top = `${ $layout.header.size }px`\n }\n }\n\n if ($layout.footer.space === true && footerSlot.value === false) {\n if (fixed.value === true) {\n css.bottom = `${ $layout.footer.offset }px`\n }\n else if ($layout.footer.space === true) {\n css.bottom = `${ $layout.footer.size }px`\n }\n }\n\n return css\n })\n\n const style = computed(() => {\n const style = {\n width: `${ size.value }px`,\n transform: `translateX(${ flagContentPosition.value }px)`\n }\n\n return belowBreakpoint.value === true\n ? style\n : Object.assign(style, aboveStyle.value)\n })\n\n const contentClass = computed(() =>\n 'q-drawer__content fit '\n + ($layout.isContainer.value !== true ? 'scroll' : 'overflow-auto')\n )\n\n const classes = computed(() =>\n `q-drawer q-drawer--${ props.side }`\n + (flagMiniAnimate.value === true ? ' q-drawer--mini-animate' : '')\n + (props.bordered === true ? ' q-drawer--bordered' : '')\n + (isDark.value === true ? ' q-drawer--dark q-dark' : '')\n + (\n flagPanning.value === true\n ? ' no-transition'\n : (showing.value === true ? '' : ' q-layout--prevent-focus')\n )\n + (\n belowBreakpoint.value === true\n ? ' fixed q-drawer--on-top q-drawer--mobile q-drawer--top-padding'\n : ` q-drawer--${ isMini.value === true ? 'mini' : 'standard' }`\n + (fixed.value === true || onLayout.value !== true ? ' fixed' : '')\n + (props.overlay === true || props.miniToOverlay === true ? ' q-drawer--on-top' : '')\n + (headerSlot.value === true ? ' q-drawer--top-padding' : '')\n )\n )\n\n const openDirective = computed(() => {\n // if props.noSwipeOpen !== true\n const dir = $q.lang.rtl === true ? props.side : otherSide.value\n\n return [ [\n TouchPan,\n onOpenPan,\n void 0,\n {\n [ dir ]: true,\n mouse: true\n }\n ] ]\n })\n\n const contentCloseDirective = computed(() => {\n // if belowBreakpoint.value === true && props.noSwipeClose !== true\n const dir = $q.lang.rtl === true ? otherSide.value : props.side\n\n return [ [\n TouchPan,\n onClosePan,\n void 0,\n {\n [ dir ]: true,\n mouse: true\n }\n ] ]\n })\n\n const backdropCloseDirective = computed(() => {\n // if showing.value === true && props.noSwipeBackdrop !== true\n const dir = $q.lang.rtl === true ? otherSide.value : props.side\n\n return [ [\n TouchPan,\n onClosePan,\n void 0,\n {\n [ dir ]: true,\n mouse: true,\n mouseAllDir: true\n }\n ] ]\n })\n\n function updateBelowBreakpoint () {\n updateLocal(belowBreakpoint, (\n props.behavior === 'mobile'\n || (props.behavior !== 'desktop' && $layout.totalWidth.value <= props.breakpoint)\n ))\n }\n\n watch(belowBreakpoint, val => {\n if (val === true) { // from lg to xs\n lastDesktopState = showing.value\n showing.value === true && hide(false)\n }\n else if (\n props.overlay === false\n && props.behavior !== 'mobile'\n && lastDesktopState !== false\n ) { // from xs to lg\n if (showing.value === true) {\n applyPosition(0)\n applyBackdrop(0)\n cleanup()\n }\n else {\n show(false)\n }\n }\n })\n\n watch(() => props.side, (newSide, oldSide) => {\n if ($layout.instances[ oldSide ] === instance) {\n $layout.instances[ oldSide ] = void 0\n $layout[ oldSide ].space = false\n $layout[ oldSide ].offset = 0\n }\n\n $layout.instances[ newSide ] = instance\n $layout[ newSide ].size = size.value\n $layout[ newSide ].space = onLayout.value\n $layout[ newSide ].offset = offset.value\n })\n\n watch($layout.totalWidth, () => {\n if ($layout.isContainer.value === true || document.qScrollPrevented !== true) {\n updateBelowBreakpoint()\n }\n })\n\n watch(\n () => props.behavior + props.breakpoint,\n updateBelowBreakpoint\n )\n\n watch($layout.isContainer, val => {\n showing.value === true && preventBodyScroll(val !== true)\n val === true && updateBelowBreakpoint()\n })\n\n watch($layout.scrollbarWidth, () => {\n applyPosition(showing.value === true ? 0 : void 0)\n })\n\n watch(offset, val => { updateLayout('offset', val) })\n\n watch(onLayout, val => {\n emit('onLayout', val)\n updateLayout('space', val)\n })\n\n watch(rightSide, () => { applyPosition() })\n\n watch(size, val => {\n applyPosition()\n updateSizeOnLayout(props.miniToOverlay, val)\n })\n\n watch(() => props.miniToOverlay, val => {\n updateSizeOnLayout(val, size.value)\n })\n\n watch(() => $q.lang.rtl, () => { applyPosition() })\n\n watch(() => props.mini, () => {\n if (props.noMiniAnimation) return\n if (props.modelValue === true) {\n animateMini()\n $layout.animate()\n }\n })\n\n watch(isMini, val => { emit('miniState', val) })\n\n function applyPosition (position) {\n if (position === void 0) {\n nextTick(() => {\n position = showing.value === true ? 0 : size.value\n applyPosition(stateDirection.value * position)\n })\n }\n else {\n if (\n $layout.isContainer.value === true\n && rightSide.value === true\n && (belowBreakpoint.value === true || Math.abs(position) === size.value)\n ) {\n position += stateDirection.value * $layout.scrollbarWidth.value\n }\n\n flagContentPosition.value = position\n }\n }\n\n function applyBackdrop (x) {\n flagBackdropBg.value = x\n }\n\n function setScrollable (v) {\n const action = v === true\n ? 'remove'\n : ($layout.isContainer.value !== true ? 'add' : '')\n\n action !== '' && document.body.classList[ action ]('q-body--drawer-toggle')\n }\n\n function animateMini () {\n timerMini !== null && clearTimeout(timerMini)\n\n if (vm.proxy && vm.proxy.$el) {\n // need to speed it up and apply it immediately,\n // even faster than Vue's nextTick!\n vm.proxy.$el.classList.add('q-drawer--mini-animate')\n }\n\n flagMiniAnimate.value = true\n timerMini = setTimeout(() => {\n timerMini = null\n flagMiniAnimate.value = false\n if (vm && vm.proxy && vm.proxy.$el) {\n vm.proxy.$el.classList.remove('q-drawer--mini-animate')\n }\n }, 150)\n }\n\n function onOpenPan (evt) {\n if (showing.value !== false) {\n // some browsers might capture and trigger this\n // even if Drawer has just been opened (but animation is still pending)\n return\n }\n\n const\n width = size.value,\n position = between(evt.distance.x, 0, width)\n\n if (evt.isFinal === true) {\n const opened = position >= Math.min(75, width)\n\n if (opened === true) {\n show()\n }\n else {\n $layout.animate()\n applyBackdrop(0)\n applyPosition(stateDirection.value * width)\n }\n\n flagPanning.value = false\n return\n }\n\n applyPosition(\n ($q.lang.rtl === true ? rightSide.value !== true : rightSide.value)\n ? Math.max(width - position, 0)\n : Math.min(0, position - width)\n )\n applyBackdrop(\n between(position / width, 0, 1)\n )\n\n if (evt.isFirst === true) {\n flagPanning.value = true\n }\n }\n\n function onClosePan (evt) {\n if (showing.value !== true) {\n // some browsers might capture and trigger this\n // even if Drawer has just been closed (but animation is still pending)\n return\n }\n\n const\n width = size.value,\n dir = evt.direction === props.side,\n position = ($q.lang.rtl === true ? dir !== true : dir)\n ? between(evt.distance.x, 0, width)\n : 0\n\n if (evt.isFinal === true) {\n const opened = Math.abs(position) < Math.min(75, width)\n\n if (opened === true) {\n $layout.animate()\n applyBackdrop(1)\n applyPosition(0)\n }\n else {\n hide()\n }\n\n flagPanning.value = false\n return\n }\n\n applyPosition(stateDirection.value * position)\n applyBackdrop(between(1 - position / width, 0, 1))\n\n if (evt.isFirst === true) {\n flagPanning.value = true\n }\n }\n\n function cleanup () {\n preventBodyScroll(false)\n setScrollable(true)\n }\n\n function updateLayout (prop, val) {\n $layout.update(props.side, prop, val)\n }\n\n function updateLocal (prop, val) {\n if (prop.value !== val) {\n prop.value = val\n }\n }\n\n function updateSizeOnLayout (miniToOverlay, size) {\n updateLayout('size', miniToOverlay === true ? props.miniWidth : size)\n }\n\n $layout.instances[ props.side ] = instance\n updateSizeOnLayout(props.miniToOverlay, size.value)\n updateLayout('space', onLayout.value)\n updateLayout('offset', offset.value)\n\n if (\n props.showIfAbove === true\n && props.modelValue !== true\n && showing.value === true\n && props[ 'onUpdate:modelValue' ] !== void 0\n ) {\n emit('update:modelValue', true)\n }\n\n onMounted(() => {\n emit('onLayout', onLayout.value)\n emit('miniState', isMini.value)\n\n lastDesktopState = props.showIfAbove === true\n\n const fn = () => {\n const action = showing.value === true ? handleShow : handleHide\n action(false, true)\n }\n\n if ($layout.totalWidth.value !== 0) {\n // make sure that all computed properties\n // have been updated before calling handleShow/handleHide()\n nextTick(fn)\n return\n }\n\n layoutTotalWidthWatcher = watch($layout.totalWidth, () => {\n layoutTotalWidthWatcher()\n layoutTotalWidthWatcher = void 0\n\n if (showing.value === false && props.showIfAbove === true && belowBreakpoint.value === false) {\n show(false)\n }\n else {\n fn()\n }\n })\n })\n\n onBeforeUnmount(() => {\n layoutTotalWidthWatcher !== void 0 && layoutTotalWidthWatcher()\n\n if (timerMini !== null) {\n clearTimeout(timerMini)\n timerMini = null\n }\n\n showing.value === true && cleanup()\n\n if ($layout.instances[ props.side ] === instance) {\n $layout.instances[ props.side ] = void 0\n updateLayout('size', 0)\n updateLayout('offset', 0)\n updateLayout('space', false)\n }\n })\n\n return () => {\n const child = []\n\n if (belowBreakpoint.value === true) {\n props.noSwipeOpen === false && child.push(\n withDirectives(\n h('div', {\n key: 'open',\n class: `q-drawer__opener fixed-${ props.side }`,\n 'aria-hidden': 'true'\n }),\n openDirective.value\n )\n )\n\n child.push(\n hDir(\n 'div',\n {\n ref: 'backdrop',\n class: backdropClass.value,\n style: backdropStyle.value,\n 'aria-hidden': 'true',\n onClick: hide\n },\n void 0,\n 'backdrop',\n props.noSwipeBackdrop !== true && showing.value === true,\n () => backdropCloseDirective.value\n )\n )\n }\n\n const mini = isMini.value === true && slots.mini !== void 0\n const content = [\n h('div', {\n ...attrs,\n key: '' + mini, // required otherwise Vue will not diff correctly\n class: [\n contentClass.value,\n attrs.class\n ]\n }, mini === true\n ? slots.mini()\n : hSlot(slots.default)\n )\n ]\n\n if (props.elevated === true && showing.value === true) {\n content.push(\n h('div', {\n class: 'q-layout__shadow absolute-full overflow-hidden no-pointer-events'\n })\n )\n }\n\n child.push(\n hDir(\n 'aside',\n { ref: 'content', class: classes.value, style: style.value },\n content,\n 'contentclose',\n props.noSwipeClose !== true && belowBreakpoint.value === true,\n () => contentCloseDirective.value\n )\n )\n\n return h('div', { class: 'q-drawer-container' }, child)\n }\n }\n})\n"],"names":["duration","__nuxt_component_8","createComponent","useModelToggleProps","useDarkProps","v","useModelToggleEmits","props","slots","emit","attrs","vm","getCurrentInstance","$q","isDark","useDark","preventBodyScroll","usePreventScroll","registerTimeout","removeTimeout","useTimeout","$layout","inject","layoutKey","emptyRenderFn","lastDesktopState","timerMini","layoutTotalWidthWatcher","belowBreakpoint","ref","isMini","computed","size","showing","hideOnRouteChange","onScreenOverlay","handleShow","evt","noEvent","addToHistory","applyPosition","otherInstance","otherSide","applyBackdrop","setScrollable","handleHide","removeFromHistory","stateDirection","cleanup","show","hide","useModelToggle","useHistory","instance","rightSide","flagBackdropBg","flagPanning","flagMiniAnimate","flagContentPosition","offset","fixed","onLayout","backdropClass","backdropStyle","headerSlot","footerSlot","aboveStyle","css","style","contentClass","classes","openDirective","dir","TouchPan","onOpenPan","contentCloseDirective","onClosePan","backdropCloseDirective","updateBelowBreakpoint","updateLocal","watch","val","newSide","oldSide","updateLayout","updateSizeOnLayout","animateMini","position","nextTick","x","action","width","between","prop","miniToOverlay","onMounted","fn","onBeforeUnmount","child","withDirectives","h","hDir","mini","content","hSlot"],"mappings":"+RAeA,MAAMA,GAAW,IAEjBC,GAAeC,GAAgB,CAC7B,KAAM,UAEN,aAAc,GAEd,MAAO,CACL,GAAGC,GACH,GAAGC,GAEH,KAAM,CACJ,KAAM,OACN,QAAS,OACT,UAAWC,GAAK,CAAE,OAAQ,OAAS,EAAC,SAASA,CAAC,CAC/C,EAED,MAAO,CACL,KAAM,OACN,QAAS,GACV,EAED,KAAM,QACN,cAAe,QACf,UAAW,CACT,KAAM,OACN,QAAS,EACV,EACD,gBAAiB,QAEjB,WAAY,CACV,KAAM,OACN,QAAS,IACV,EACD,YAAa,QAEb,SAAU,CACR,KAAM,OACN,UAAWA,GAAK,CAAE,UAAW,UAAW,QAAU,EAAC,SAASA,CAAC,EAC7D,QAAS,SACV,EAED,SAAU,QACV,SAAU,QAEV,QAAS,QACT,WAAY,QACZ,YAAa,QACb,aAAc,QACd,gBAAiB,OAClB,EAED,MAAO,CACL,GAAGC,GACH,WAAY,WACb,EAED,MAAOC,EAAO,CAAE,MAAAC,EAAO,KAAAC,EAAM,MAAAC,CAAK,EAAI,CACpC,MAAMC,EAAKC,GAAoB,EACzB,CAAE,MAAO,CAAE,GAAAC,CAAE,CAAI,EAAGF,EAEpBG,GAASC,GAAQR,EAAOM,CAAE,EAC1B,CAAE,kBAAAG,CAAmB,EAAGC,GAAkB,EAC1C,CAAE,gBAAAC,EAAiB,cAAAC,EAAe,EAAGC,GAAY,EAEjDC,EAAUC,GAAOC,GAAWC,CAAa,EAC/C,GAAIH,IAAYG,EACd,eAAQ,MAAM,sCAAsC,EAC7CA,EAGT,IAAIC,EAAkBC,EAAY,KAAMC,EAExC,MAAMC,EAAkBC,EACtBtB,EAAM,WAAa,UACfA,EAAM,WAAa,WAAac,EAAQ,WAAW,OAASd,EAAM,UACvE,EAEKuB,EAASC,EAAS,IACtBxB,EAAM,OAAS,IAAQqB,EAAgB,QAAU,EAClD,EAEKI,EAAOD,EAAS,IACpBD,EAAO,QAAU,GACbvB,EAAM,UACNA,EAAM,KACX,EAEK0B,EAAUJ,EACdtB,EAAM,cAAgB,IAAQqB,EAAgB,QAAU,GACpD,GACArB,EAAM,aAAe,EAC1B,EAEK2B,EAAoBH,EAAS,IACjCxB,EAAM,aAAe,KACjBqB,EAAgB,QAAU,IAAQO,GAAgB,QAAU,GACjE,EAED,SAASC,EAAYC,EAAKC,EAAS,CAMjC,GALAC,GAAc,EAEdF,IAAQ,IAAShB,EAAQ,QAAS,EAClCmB,EAAc,CAAC,EAEXZ,EAAgB,QAAU,GAAM,CAClC,MAAMa,EAAgBpB,EAAQ,UAAWqB,EAAU,KAAO,EACtDD,IAAkB,QAAUA,EAAc,kBAAoB,IAChEA,EAAc,KAAK,EAAK,EAG1BE,EAAc,CAAC,EACftB,EAAQ,YAAY,QAAU,IAAQL,EAAkB,EAAI,CAC7D,MAEC2B,EAAc,CAAC,EACfN,IAAQ,IAASO,EAAc,EAAK,EAGtC1B,EAAgB,IAAM,CACpBmB,IAAQ,IAASO,EAAc,EAAI,EACnCN,IAAY,IAAQ7B,EAAK,OAAQ4B,CAAG,CACrC,EAAErC,EAAQ,CACZ,CAED,SAAS6C,EAAYR,EAAKC,EAAS,CACjCQ,GAAmB,EAEnBT,IAAQ,IAAShB,EAAQ,QAAS,EAElCsB,EAAc,CAAC,EACfH,EAAcO,EAAe,MAAQf,EAAK,KAAK,EAE/CgB,EAAS,EAELV,IAAY,GACdpB,EAAgB,IAAM,CAAET,EAAK,OAAQ4B,CAAG,CAAG,EAAErC,EAAQ,EAGrDmB,GAAe,CAElB,CAED,KAAM,CAAE,KAAA8B,EAAM,KAAAC,CAAM,EAAGC,GAAe,CACpC,QAAAlB,EACA,kBAAAC,EACA,WAAAE,EACA,WAAAS,CACN,CAAK,EAEK,CAAE,aAAAN,GAAc,kBAAAO,EAAmB,EAAGM,GAAWnB,EAASiB,EAAMhB,CAAiB,EAEjFmB,EAAW,CACf,gBAAAzB,EACA,KAAAsB,CACD,EAEKI,EAAYvB,EAAS,IAAMxB,EAAM,OAAS,OAAO,EAEjDwC,EAAiBhB,EAAS,KAC7BlB,EAAG,KAAK,MAAQ,GAAO,GAAK,IAAMyC,EAAU,QAAU,GAAO,EAAI,GACnE,EAEKC,EAAiB1B,EAAI,CAAC,EACtB2B,EAAc3B,EAAI,EAAK,EACvB4B,EAAkB5B,EAAI,EAAK,EAC3B6B,EAAsB7B,EAC1BG,EAAK,MAAQe,EAAe,KAC7B,EAEKL,EAAYX,EAAS,IAAOuB,EAAU,QAAU,GAAO,OAAS,OAAQ,EACxEK,EAAS5B,EAAS,IACtBE,EAAQ,QAAU,IAAQL,EAAgB,QAAU,IAASrB,EAAM,UAAY,GAC1EA,EAAM,gBAAkB,GAAOA,EAAM,UAAYyB,EAAK,MACvD,CACL,EAEK4B,EAAQ7B,EAAS,IACrBxB,EAAM,UAAY,IACfA,EAAM,gBAAkB,IACxBc,EAAQ,KAAK,MAAM,QAAQiC,EAAU,MAAQ,IAAM,GAAG,IAAM,IAC3DzC,EAAG,SAAS,GAAG,MAAQ,IAAQQ,EAAQ,YAAY,QAAU,EAClE,EAEKwC,EAAW9B,EAAS,IACxBxB,EAAM,UAAY,IACf0B,EAAQ,QAAU,IAClBL,EAAgB,QAAU,EAC9B,EAEKO,GAAkBJ,EAAS,IAC/BxB,EAAM,UAAY,IACf0B,EAAQ,QAAU,IAClBL,EAAgB,QAAU,EAC9B,EAEKkC,GAAgB/B,EAAS,IAC7B,iCACGE,EAAQ,QAAU,IAASuB,EAAY,QAAU,GAAQ,UAAY,GACzE,EAEKO,GAAgBhC,EAAS,KAAO,CACpC,gBAAiB,cAAewB,EAAe,MAAQ,EAAK,GAClE,EAAM,EAEIS,EAAajC,EAAS,IAC1BuB,EAAU,QAAU,GAChBjC,EAAQ,KAAK,MAAM,IAAK,CAAG,IAAK,IAChCA,EAAQ,KAAK,MAAM,IAAK,CAAG,IAAK,GACrC,EAEK4C,GAAalC,EAAS,IAC1BuB,EAAU,QAAU,GAChBjC,EAAQ,KAAK,MAAM,OAAQ,CAAG,IAAK,IACnCA,EAAQ,KAAK,MAAM,OAAQ,CAAG,IAAK,GACxC,EAEK6C,GAAanC,EAAS,IAAM,CAChC,MAAMoC,EAAM,CAAE,EAEd,OAAI9C,EAAQ,OAAO,QAAU,IAAQ2C,EAAW,QAAU,KACpDJ,EAAM,QAAU,GAClBO,EAAI,IAAM,GAAI9C,EAAQ,OAAO,MAAM,KAE5BA,EAAQ,OAAO,QAAU,KAChC8C,EAAI,IAAM,GAAI9C,EAAQ,OAAO,IAAI,OAIjCA,EAAQ,OAAO,QAAU,IAAQ4C,GAAW,QAAU,KACpDL,EAAM,QAAU,GAClBO,EAAI,OAAS,GAAI9C,EAAQ,OAAO,MAAM,KAE/BA,EAAQ,OAAO,QAAU,KAChC8C,EAAI,OAAS,GAAI9C,EAAQ,OAAO,IAAI,OAIjC8C,CACb,CAAK,EAEKC,GAAQrC,EAAS,IAAM,CAC3B,MAAMqC,EAAQ,CACZ,MAAO,GAAIpC,EAAK,KAAO,KACvB,UAAW,cAAe0B,EAAoB,KAAO,KACtD,EAED,OAAO9B,EAAgB,QAAU,GAC7BwC,EACA,OAAO,OAAOA,EAAOF,GAAW,KAAK,CAC/C,CAAK,EAEKG,GAAetC,EAAS,IAC5B,0BACGV,EAAQ,YAAY,QAAU,GAAO,SAAW,gBACpD,EAEKiD,GAAUvC,EAAS,IACvB,sBAAuBxB,EAAM,QAC1BkD,EAAgB,QAAU,GAAO,0BAA4B,KAC7DlD,EAAM,WAAa,GAAO,sBAAwB,KAClDO,GAAO,QAAU,GAAO,yBAA2B,KAEpD0C,EAAY,QAAU,GAClB,iBACCvB,EAAQ,QAAU,GAAO,GAAK,6BAGnCL,EAAgB,QAAU,GACtB,iEACA,cAAeE,EAAO,QAAU,GAAO,OAAS,cAC/C8B,EAAM,QAAU,IAAQC,EAAS,QAAU,GAAO,SAAW,KAC7DtD,EAAM,UAAY,IAAQA,EAAM,gBAAkB,GAAO,oBAAsB,KAC/EyD,EAAW,QAAU,GAAO,yBAA2B,IAE/D,EAEKO,GAAgBxC,EAAS,IAAM,CAEnC,MAAMyC,EAAM3D,EAAG,KAAK,MAAQ,GAAON,EAAM,KAAOmC,EAAU,MAE1D,MAAO,CAAE,CACP+B,EACAC,GACA,OACA,CACE,CAAEF,CAAG,EAAI,GACT,MAAO,EACR,CACT,CAAS,CACT,CAAK,EAEKG,GAAwB5C,EAAS,IAAM,CAE3C,MAAMyC,EAAM3D,EAAG,KAAK,MAAQ,GAAO6B,EAAU,MAAQnC,EAAM,KAE3D,MAAO,CAAE,CACPkE,EACAG,EACA,OACA,CACE,CAAEJ,CAAG,EAAI,GACT,MAAO,EACR,CACT,CAAS,CACT,CAAK,EAEKK,GAAyB9C,EAAS,IAAM,CAE5C,MAAMyC,EAAM3D,EAAG,KAAK,MAAQ,GAAO6B,EAAU,MAAQnC,EAAM,KAE3D,MAAO,CAAE,CACPkE,EACAG,EACA,OACA,CACE,CAAEJ,CAAG,EAAI,GACT,MAAO,GACP,YAAa,EACd,CACT,CAAS,CACT,CAAK,EAED,SAASM,GAAyB,CAChCC,GAAYnD,EACVrB,EAAM,WAAa,UACfA,EAAM,WAAa,WAAac,EAAQ,WAAW,OAASd,EAAM,UACtE,CACH,CAEDyE,EAAMpD,EAAiBqD,GAAO,CACxBA,IAAQ,IACVxD,EAAmBQ,EAAQ,MAC3BA,EAAQ,QAAU,IAAQiB,EAAK,EAAK,GAGpC3C,EAAM,UAAY,IACfA,EAAM,WAAa,UACnBkB,IAAqB,KAEpBQ,EAAQ,QAAU,IACpBO,EAAc,CAAC,EACfG,EAAc,CAAC,EACfK,EAAS,GAGTC,EAAK,EAAK,EAGpB,CAAK,EAED+B,EAAM,IAAMzE,EAAM,KAAM,CAAC2E,EAASC,IAAY,CACxC9D,EAAQ,UAAW8D,CAAO,IAAO9B,IACnChC,EAAQ,UAAW8D,CAAS,EAAG,OAC/B9D,EAAS8D,GAAU,MAAQ,GAC3B9D,EAAS8D,GAAU,OAAS,GAG9B9D,EAAQ,UAAW6D,CAAO,EAAK7B,EAC/BhC,EAAS6D,CAAO,EAAG,KAAOlD,EAAK,MAC/BX,EAAS6D,CAAO,EAAG,MAAQrB,EAAS,MACpCxC,EAAS6D,CAAO,EAAG,OAASvB,EAAO,KACzC,CAAK,EAEDqB,EAAM3D,EAAQ,WAAY,IAAM,EAC1BA,EAAQ,YAAY,QAAU,IAAQ,SAAS,mBAAqB,KACtEyD,EAAuB,CAE/B,CAAK,EAEDE,EACE,IAAMzE,EAAM,SAAWA,EAAM,WAC7BuE,CACD,EAEDE,EAAM3D,EAAQ,YAAa4D,GAAO,CAChChD,EAAQ,QAAU,IAAQjB,EAAkBiE,IAAQ,EAAI,EACxDA,IAAQ,IAAQH,EAAuB,CAC7C,CAAK,EAEDE,EAAM3D,EAAQ,eAAgB,IAAM,CAClCmB,EAAcP,EAAQ,QAAU,GAAO,EAAI,MAAM,CACvD,CAAK,EAED+C,EAAMrB,EAAQsB,GAAO,CAAEG,EAAa,SAAUH,CAAG,EAAG,EAEpDD,EAAMnB,EAAUoB,GAAO,CACrBxE,EAAK,WAAYwE,CAAG,EACpBG,EAAa,QAASH,CAAG,CAC/B,CAAK,EAEDD,EAAM1B,EAAW,IAAM,CAAEd,EAAe,CAAA,CAAE,EAE1CwC,EAAMhD,EAAMiD,GAAO,CACjBzC,EAAe,EACf6C,EAAmB9E,EAAM,cAAe0E,CAAG,CACjD,CAAK,EAEDD,EAAM,IAAMzE,EAAM,cAAe0E,GAAO,CACtCI,EAAmBJ,EAAKjD,EAAK,KAAK,CACxC,CAAK,EAEDgD,EAAM,IAAMnE,EAAG,KAAK,IAAK,IAAM,CAAE2B,EAAa,EAAI,EAElDwC,EAAM,IAAMzE,EAAM,KAAM,IAAM,CACxBA,EAAM,iBACNA,EAAM,aAAe,KACvB+E,GAAa,EACbjE,EAAQ,QAAS,EAEzB,CAAK,EAED2D,EAAMlD,EAAQmD,GAAO,CAAExE,EAAK,YAAawE,CAAG,EAAG,EAE/C,SAASzC,EAAe+C,EAAU,CAC5BA,IAAa,OACfC,EAAS,IAAM,CACbD,EAAWtD,EAAQ,QAAU,GAAO,EAAID,EAAK,MAC7CQ,EAAcO,EAAe,MAAQwC,CAAQ,CACvD,CAAS,GAIClE,EAAQ,YAAY,QAAU,IAC3BiC,EAAU,QAAU,KACnB1B,EAAgB,QAAU,IAAQ,KAAK,IAAI2D,CAAQ,IAAMvD,EAAK,SAElEuD,GAAYxC,EAAe,MAAQ1B,EAAQ,eAAe,OAG5DqC,EAAoB,MAAQ6B,EAE/B,CAED,SAAS5C,EAAe8C,EAAG,CACzBlC,EAAe,MAAQkC,CACxB,CAED,SAAS7C,EAAevC,EAAG,CACzB,MAAMqF,EAASrF,IAAM,GACjB,SACCgB,EAAQ,YAAY,QAAU,GAAO,MAAQ,GAElDqE,IAAW,IAAM,SAAS,KAAK,UAAWA,CAAQ,EAAC,uBAAuB,CAC3E,CAED,SAASJ,IAAe,CACtB5D,IAAc,MAAQ,aAAaA,CAAS,EAExCf,EAAG,OAASA,EAAG,MAAM,KAGvBA,EAAG,MAAM,IAAI,UAAU,IAAI,wBAAwB,EAGrD8C,EAAgB,MAAQ,GACxB/B,EAAY,WAAW,IAAM,CAC3BA,EAAY,KACZ+B,EAAgB,MAAQ,GACpB9C,GAAMA,EAAG,OAASA,EAAG,MAAM,KAC7BA,EAAG,MAAM,IAAI,UAAU,OAAO,wBAAwB,CAEzD,EAAE,GAAG,CACP,CAED,SAAS+D,GAAWrC,EAAK,CACvB,GAAIJ,EAAQ,QAAU,GAGpB,OAGF,MACE0D,EAAQ3D,EAAK,MACbuD,EAAWK,EAAQvD,EAAI,SAAS,EAAG,EAAGsD,CAAK,EAE7C,GAAItD,EAAI,UAAY,GAAM,CACTkD,GAAY,KAAK,IAAI,GAAII,CAAK,IAE9B,GACb1C,EAAM,GAGN5B,EAAQ,QAAS,EACjBsB,EAAc,CAAC,EACfH,EAAcO,EAAe,MAAQ4C,CAAK,GAG5CnC,EAAY,MAAQ,GACpB,MACD,CAEDhB,GACG3B,EAAG,KAAK,MAAQ,GAAOyC,EAAU,QAAU,GAAOA,EAAU,OACzD,KAAK,IAAIqC,EAAQJ,EAAU,CAAC,EAC5B,KAAK,IAAI,EAAGA,EAAWI,CAAK,CACjC,EACDhD,EACEiD,EAAQL,EAAWI,EAAO,EAAG,CAAC,CAC/B,EAEGtD,EAAI,UAAY,KAClBmB,EAAY,MAAQ,GAEvB,CAED,SAASoB,EAAYvC,EAAK,CACxB,GAAIJ,EAAQ,QAAU,GAGpB,OAGF,MACE0D,EAAQ3D,EAAK,MACbwC,EAAMnC,EAAI,YAAc9B,EAAM,KAC9BgF,GAAY1E,EAAG,KAAK,MAAQ,GAAO2D,IAAQ,GAAOA,GAC9CoB,EAAQvD,EAAI,SAAS,EAAG,EAAGsD,CAAK,EAChC,EAEN,GAAItD,EAAI,UAAY,GAAM,CACT,KAAK,IAAIkD,CAAQ,EAAI,KAAK,IAAI,GAAII,CAAK,IAEvC,IACbtE,EAAQ,QAAS,EACjBsB,EAAc,CAAC,EACfH,EAAc,CAAC,GAGfU,EAAM,EAGRM,EAAY,MAAQ,GACpB,MACD,CAEDhB,EAAcO,EAAe,MAAQwC,CAAQ,EAC7C5C,EAAciD,EAAQ,EAAIL,EAAWI,EAAO,EAAG,CAAC,CAAC,EAE7CtD,EAAI,UAAY,KAClBmB,EAAY,MAAQ,GAEvB,CAED,SAASR,GAAW,CAClBhC,EAAkB,EAAK,EACvB4B,EAAc,EAAI,CACnB,CAED,SAASwC,EAAcS,EAAMZ,EAAK,CAChC5D,EAAQ,OAAOd,EAAM,KAAMsF,EAAMZ,CAAG,CACrC,CAED,SAASF,GAAac,EAAMZ,EAAK,CAC3BY,EAAK,QAAUZ,IACjBY,EAAK,MAAQZ,EAEhB,CAED,SAASI,EAAoBS,EAAe9D,EAAM,CAChDoD,EAAa,OAAQU,IAAkB,GAAOvF,EAAM,UAAYyB,CAAI,CACrE,CAED,OAAAX,EAAQ,UAAWd,EAAM,IAAM,EAAG8C,EAClCgC,EAAmB9E,EAAM,cAAeyB,EAAK,KAAK,EAClDoD,EAAa,QAASvB,EAAS,KAAK,EACpCuB,EAAa,SAAUzB,EAAO,KAAK,EAGjCpD,EAAM,cAAgB,IACnBA,EAAM,aAAe,IACrB0B,EAAQ,QAAU,IAClB1B,EAAO,qBAAuB,IAAK,QAEtCE,EAAK,oBAAqB,EAAI,EAGhCsF,GAAU,IAAM,CACdtF,EAAK,WAAYoD,EAAS,KAAK,EAC/BpD,EAAK,YAAaqB,EAAO,KAAK,EAE9BL,EAAmBlB,EAAM,cAAgB,GAEzC,MAAMyF,EAAK,IAAM,EACA/D,EAAQ,QAAU,GAAOG,EAAaS,GAC9C,GAAO,EAAI,CACnB,EAED,GAAIxB,EAAQ,WAAW,QAAU,EAAG,CAGlCmE,EAASQ,CAAE,EACX,MACD,CAEDrE,EAA0BqD,EAAM3D,EAAQ,WAAY,IAAM,CACxDM,EAAyB,EACzBA,EAA0B,OAEtBM,EAAQ,QAAU,IAAS1B,EAAM,cAAgB,IAAQqB,EAAgB,QAAU,GACrFqB,EAAK,EAAK,EAGV+C,EAAI,CAEd,CAAO,CACP,CAAK,EAEDC,GAAgB,IAAM,CACpBtE,IAA4B,QAAUA,EAAyB,EAE3DD,IAAc,OAChB,aAAaA,CAAS,EACtBA,EAAY,MAGdO,EAAQ,QAAU,IAAQe,EAAS,EAE/B3B,EAAQ,UAAWd,EAAM,IAAI,IAAO8C,IACtChC,EAAQ,UAAWd,EAAM,IAAI,EAAK,OAClC6E,EAAa,OAAQ,CAAC,EACtBA,EAAa,SAAU,CAAC,EACxBA,EAAa,QAAS,EAAK,EAEnC,CAAK,EAEM,IAAM,CACX,MAAMc,EAAQ,CAAE,EAEZtE,EAAgB,QAAU,KAC5BrB,EAAM,cAAgB,IAAS2F,EAAM,KACnCC,GACEC,EAAE,MAAO,CACP,IAAK,OACL,MAAO,0BAA2B7F,EAAM,IAAI,GAC5C,cAAe,MAC7B,CAAa,EACDgE,GAAc,KACf,CACF,EAED2B,EAAM,KACJG,EACE,MACA,CACE,IAAK,WACL,MAAOvC,GAAc,MACrB,MAAOC,GAAc,MACrB,cAAe,OACf,QAASb,CACV,EACD,OACA,WACA3C,EAAM,kBAAoB,IAAQ0B,EAAQ,QAAU,GACpD,IAAM4C,GAAuB,KAC9B,CACF,GAGH,MAAMyB,EAAOxE,EAAO,QAAU,IAAQtB,EAAM,OAAS,OAC/C+F,EAAU,CACdH,EAAE,MAAO,CACP,GAAG1F,EACH,IAAK,GAAK4F,EACV,MAAO,CACLjC,GAAa,MACb3D,EAAM,KACP,CACF,EAAE4F,IAAS,GACR9F,EAAM,KAAM,EACZgG,GAAMhG,EAAM,OAAO,CACtB,CACF,EAED,OAAID,EAAM,WAAa,IAAQ0B,EAAQ,QAAU,IAC/CsE,EAAQ,KACNH,EAAE,MAAO,CACP,MAAO,kEACnB,CAAW,CACF,EAGHF,EAAM,KACJG,EACE,QACA,CAAE,IAAK,UAAW,MAAO/B,GAAQ,MAAO,MAAOF,GAAM,KAAO,EAC5DmC,EACA,eACAhG,EAAM,eAAiB,IAAQqB,EAAgB,QAAU,GACzD,IAAM+C,GAAsB,KAC7B,CACF,EAEMyB,EAAE,MAAO,CAAE,MAAO,oBAAoB,EAAIF,CAAK,CACvD,CACF,CACH,CAAC","x_google_ignoreList":[0]}