{"version":3,"file":"Navigation.js","names":["Navigation","a","setters","Component","default","Event","on","off","deepMerge","mix","Accessibility","mediaQuery","execute","with","constructor","element","options","arguments","length","templateName","displayTimeout","_resizable","initCache","classNames","navigationInit","navigationOpened","selectors","rootItem","rootButton","menuItem","navigation","menuItemTitle","rootItems","querySelectorAll","rootButtons","menuItems","menuItemsTitle","currentOpenedElement","openTimeout","activeTimeout","initState","state","isActive","areDocumentEventsBound","afterInit","is","setNavigationItemTitleStyle","bindEvents","onNavigationHover","bind","onNavigationLeave","onNavigationItemKeyDown","onNavigationButtonClick","onResize","forEach","style","minHeight","classList","add","itemMaxHeight","Math","max","map","item","offsetHeight","remove","showNavigationItem","closeCurrentNavigationItem","clearTimeout","querySelector","setAttribute","bindDocumentNavigationEvents","setFocusedOrder","emit","resetFocusedOrder","setTimeout","e","target","event","key","onTabKeyDown","nodeName","preventDefault","toggleNavigationItem","currentTarget","closest","focus","focusTrap","id","document","onDocumentKeyDown","unbindDocumentNavigationEvents","indexOf","destroy"],"sources":["components/global/Navigation.js"],"sourcesContent":["import Component from 'core/Component';\nimport { Event } from 'services/EventEmitter';\nimport { on, off } from 'toolbox/event';\nimport { deepMerge } from 'toolbox/deepMerge';\nimport { mix } from 'core/mixwith';\nimport Accessibility from 'mixins/Accessibility';\nimport { mediaQuery } from 'toolbox/mediaQuery';\n\n/**\n * This is a description of the Navigation constructor function.\n * @class\n * @classdesc This is a description of the Navigation class.\n * @extends Component\n */\nexport default class Navigation extends mix(Component).with(Accessibility) {\n /**\n * Constructor of the class that mainly merge the options of the components\n * @param {HTMLElement} element HTMLElement of the component\n * @param {Object} options options that belongs to the component\n */\n constructor(element, options = {}) {\n super(element, deepMerge({\n templateName: 'header/navigationmenu',\n displayTimeout: 200,\n _resizable: true,\n }, options));\n }\n\n /**\n * All selectors must be cached. Never cache elements that are out of the component scope\n */\n initCache() {\n this.classNames = {\n navigationInit: 'm-init',\n navigationOpened: 'm-opened',\n };\n this.selectors = {\n rootItem: '[data-js-root-item]',\n rootButton: '[data-js-root-button]',\n menuItem: '[data-js-menu-item]',\n navigation: '[data-js-navigation-meganav]',\n menuItemTitle: '[data-js-menu-item-title]',\n };\n this.selectors.rootItems = this.element.querySelectorAll(this.selectors.rootItem);\n this.selectors.rootButtons = this.element.querySelectorAll(this.selectors.rootButton);\n this.selectors.menuItems = this.element.querySelectorAll(this.selectors.menuItem);\n this.selectors.menuItemsTitle = this.element.querySelectorAll(this.selectors.menuItemTitle);\n this.currentOpenedElement = null;\n this.openTimeout = null;\n this.activeTimeout = null;\n }\n\n /**\n * Init the different state of the component\n * It helps to avoid heavy DOM manipulation\n */\n initState() {\n this.state.isActive = false; // At least one navigation item is opened;\n this.state.areDocumentEventsBound = false;\n }\n\n /**\n * After init hook\n */\n afterInit() {\n if ((mediaQuery.is('xlarge'))) {\n this.setNavigationItemTitleStyle();\n }\n }\n\n /**\n * Should contain only event listeners and nothing else\n * All the event handlers should be into a separated function. No usage of anonyous function\n */\n bindEvents() {\n on('mouseenter', this.selectors.rootItems, this.onNavigationHover.bind(this), false);\n on('mouseleave', this.selectors.rootItems, this.onNavigationLeave.bind(this), false);\n\n // Accessibility events\n on('keydown', this.selectors.rootItems, this.onNavigationItemKeyDown.bind(this));\n on('click', this.selectors.rootButtons, this.onNavigationButtonClick.bind(this));\n }\n\n /**\n * Handlers to onresize event\n */\n onResize() {\n if ((mediaQuery.is('xlarge'))) {\n this.selectors.menuItemsTitle.forEach((element) => {\n element.style.minHeight = 0;\n });\n\n this.setNavigationItemTitleStyle();\n }\n }\n\n /**\n * Set style attribute to navigation item title\n */\n setNavigationItemTitleStyle() {\n this.element.classList.add(this.classNames.navigationInit);\n\n this.selectors.menuItems.forEach((element) => {\n const menuItemTitle = element.querySelectorAll(this.selectors.menuItemTitle);\n const itemMaxHeight = Math.max(...[...menuItemTitle].map(item => item.offsetHeight), 0);\n\n menuItemTitle.forEach((item) => {\n item.style.minHeight = `${itemMaxHeight}px`;\n });\n });\n\n this.element.classList.remove(this.classNames.navigationInit);\n }\n\n /**\n * Open the subnavigation of the selected item\n *\n * @param {HTMLElement} item Data\n */\n showNavigationItem(item) {\n this.closeCurrentNavigationItem();\n if (this.openTimeout) {\n this.openTimeout = null;\n }\n\n if (this.activeTimeout) {\n clearTimeout(this.activeTimeout);\n this.activeTimeout = null;\n }\n\n this.state.isActive = true;\n item.classList.add(this.classNames.navigationOpened);\n this.currentOpenedElement = item;\n item.querySelector(this.selectors.rootButton).setAttribute('aria-expanded', true);\n item.querySelectorAll(this.selectors.menuItem).forEach((element) => {\n element.setAttribute('aria-hidden', false);\n });\n\n this.bindDocumentNavigationEvents();\n this.setFocusedOrder(item);\n Event.emit('simplesearch.close');\n }\n\n /**\n * Close the subnavigation of the selected item\n */\n closeCurrentNavigationItem() {\n if (!this.currentOpenedElement) {\n return;\n }\n\n this.resetFocusedOrder(this.currentOpenedElement);\n\n this.currentOpenedElement.classList.remove(this.classNames.navigationOpened);\n this.currentOpenedElement = null;\n\n this.selectors.rootButtons.forEach((element) => {\n element.setAttribute('aria-expanded', false);\n });\n\n this.selectors.menuItems.forEach((element) => {\n element.setAttribute('aria-hidden', true);\n });\n\n this.activeTimeout = setTimeout(() => {\n this.state.isActive = false;\n }, this.options.displayTimeout);\n }\n\n /**\n * Navigation mouseenter handler\n * @param {Event} e Event object\n */\n onNavigationHover(e) {\n const element = e.target;\n if (!element.querySelector(this.selectors.navigation)) {\n return;\n }\n // If navigation is already active we can show the next quickly\n if (this.state.isActive) {\n this.showNavigationItem(element);\n } else {\n // To prevent the navigation showing up too fast if not opened yet\n this.openTimeout = setTimeout(this.showNavigationItem.bind(this, element), this.options.displayTimeout);\n }\n }\n\n /**\n * Navigation leave handler\n */\n onNavigationLeave() {\n if (this.openTimeout) {\n clearTimeout(this.openTimeout);\n this.openTimeout = null;\n } else {\n this.closeCurrentNavigationItem();\n }\n }\n\n /**\n * Navigation item on key down\n * @param { Object } event Event object\n */\n onNavigationItemKeyDown(event) {\n switch (event.key) {\n case 'Tab': // 'Tab' key\n this.onTabKeyDown(event);\n break;\n case 'Enter': // 'Enter' key\n case ' ': // 'Whitespace' key\n // Navigation works only in case it is not a link\n if (event.target.nodeName !== 'A') {\n event.preventDefault();\n this.toggleNavigationItem(event);\n }\n break;\n case 'Escape': // 'Escape' key\n if (this.state.isActive) {\n event.preventDefault();\n const rootItem = event.currentTarget.closest(this.selectors.rootItem);\n rootItem.querySelector(this.selectors.rootButton).focus();\n }\n break;\n default:\n break;\n }\n }\n\n /**\n * 'Tab' Keydown event handler\n * @param {Object} event Event object\n */\n onTabKeyDown(event) {\n if (!this.state.isActive) {\n return;\n }\n super.focusTrap(this.element, event);\n }\n\n /**\n * Bind events for navigation on document\n */\n bindDocumentNavigationEvents() {\n if (this.state.areDocumentEventsBound) {\n return;\n }\n on(`keydown.${this.id}`, document, this.onDocumentKeyDown.bind(this));\n this.state.areDocumentEventsBound = true;\n }\n\n /**\n * Unbind events for navigation on document\n */\n unbindDocumentNavigationEvents() {\n if (!this.state.areDocumentEventsBound) {\n return;\n }\n off(`keydown.${this.id}`, document);\n this.state.areDocumentEventsBound = false;\n }\n\n /**\n * Document keydown handler\n * @param { Object } event Event object\n */\n onDocumentKeyDown(event) {\n if (this.state.isActive && event && ['Escape'].indexOf(event.key) !== -1) {\n event.preventDefault();\n this.closeCurrentNavigationItem();\n }\n }\n\n /**\n * Handles a click event of navigation element for NVDA screen reader\n *\n * @param {EventObject} event - event object\n */\n onNavigationButtonClick(event) {\n this.toggleNavigationItem(event);\n }\n\n /**\n * Toggle Navigation item submenu state\n * @param {EventObject} event - event object\n */\n toggleNavigationItem(event) {\n const element = event.currentTarget.closest(this.selectors.rootItem);\n if (this.state.isActive) {\n this.closeCurrentNavigationItem();\n } else {\n this.showNavigationItem(element);\n }\n }\n\n /**\n * Destroy is called automatically after the component is being removed from the DOM\n * You must always destroy the listeners attached to an element to avoid any memory leaks\n */\n destroy() {\n off(this.selectors.rootItems);\n off(this.selectors.rootButtons);\n this.unbindDocumentNavigationEvents();\n }\n}\n"],"mappings":"oNAcqBA,CAAU,QAAAC,CAAA,oBAAAC,OAAA,WAAAD,CAAA,EAdxBE,CAAS,CAAAF,CAAA,CAAAG,OAAA,WAAAH,CAAA,EACPI,CAAK,CAAAJ,CAAA,CAALI,KAAK,WAAAJ,CAAA,EACLK,CAAE,CAAAL,CAAA,CAAFK,EAAE,CAAEC,CAAG,CAAAN,CAAA,CAAHM,GAAG,WAAAN,CAAA,EACPO,CAAS,CAAAP,CAAA,CAATO,SAAS,WAAAP,CAAA,EACTQ,CAAG,CAAAR,CAAA,CAAHQ,GAAG,WAAAR,CAAA,EACLS,CAAa,CAAAT,CAAA,CAAAG,OAAA,WAAAH,CAAA,EACXU,CAAU,CAAAV,CAAA,CAAVU,UAAU,GAAAC,OAAA,SAAAA,CAAA,EAAAX,CAAA,WAQED,CAAU,CAAhB,aAAyB,CAAAS,CAAG,CAACN,CAAS,CAAC,CAACU,IAAI,CAACH,CAAa,CAAE,CAMvEI,WAAWA,CAACC,CAAO,CAAgB,IAAd,CAAAC,CAAO,GAAAC,SAAA,CAAAC,MAAA,WAAAD,SAAA,IAAAA,SAAA,IAAG,CAAC,CAAC,CAC7B,KAAK,CAACF,CAAO,CAAEP,CAAS,CAAC,CACrBW,YAAY,CAAE,uBAAuB,CACrCC,cAAc,CAAE,GAAG,CACnBC,UAAU,GACd,CAAC,CAAEL,CAAO,CAAC,CACf,CAKAM,SAASA,CAAA,CAAG,CACR,IAAI,CAACC,UAAU,CAAG,CACdC,cAAc,CAAE,QAAQ,CACxBC,gBAAgB,CAAE,UACtB,CAAC,CACD,IAAI,CAACC,SAAS,CAAG,CACbC,QAAQ,CAAE,qBAAqB,CAC/BC,UAAU,CAAE,uBAAuB,CACnCC,QAAQ,CAAE,qBAAqB,CAC/BC,UAAU,CAAE,8BAA8B,CAC1CC,aAAa,CAAE,2BACnB,CAAC,CACD,IAAI,CAACL,SAAS,CAACM,SAAS,CAAG,IAAI,CAACjB,OAAO,CAACkB,gBAAgB,CAAC,IAAI,CAACP,SAAS,CAACC,QAAQ,CAAC,CACjF,IAAI,CAACD,SAAS,CAACQ,WAAW,CAAG,IAAI,CAACnB,OAAO,CAACkB,gBAAgB,CAAC,IAAI,CAACP,SAAS,CAACE,UAAU,CAAC,CACrF,IAAI,CAACF,SAAS,CAACS,SAAS,CAAG,IAAI,CAACpB,OAAO,CAACkB,gBAAgB,CAAC,IAAI,CAACP,SAAS,CAACG,QAAQ,CAAC,CACjF,IAAI,CAACH,SAAS,CAACU,cAAc,CAAG,IAAI,CAACrB,OAAO,CAACkB,gBAAgB,CAAC,IAAI,CAACP,SAAS,CAACK,aAAa,CAAC,CAC3F,IAAI,CAACM,oBAAoB,CAAG,IAAI,CAChC,IAAI,CAACC,WAAW,CAAG,IAAI,CACvB,IAAI,CAACC,aAAa,CAAG,IACzB,CAMAC,SAASA,CAAA,CAAG,CACR,IAAI,CAACC,KAAK,CAACC,QAAQ,GAAQ,CAC3B,IAAI,CAACD,KAAK,CAACE,sBAAsB,GACrC,CAKAC,SAASA,CAAA,CAAG,CACHjC,CAAU,CAACkC,EAAE,CAAC,QAAQ,CAAC,EACxB,IAAI,CAACC,2BAA2B,CAAC,CAEzC,CAMAC,UAAUA,CAAA,CAAG,CACTzC,CAAE,CAAC,YAAY,CAAE,IAAI,CAACoB,SAAS,CAACM,SAAS,CAAE,IAAI,CAACgB,iBAAiB,CAACC,IAAI,CAAC,IAAI,CAAC,GAAO,CAAC,CACpF3C,CAAE,CAAC,YAAY,CAAE,IAAI,CAACoB,SAAS,CAACM,SAAS,CAAE,IAAI,CAACkB,iBAAiB,CAACD,IAAI,CAAC,IAAI,CAAC,GAAO,CAAC,CAGpF3C,CAAE,CAAC,SAAS,CAAE,IAAI,CAACoB,SAAS,CAACM,SAAS,CAAE,IAAI,CAACmB,uBAAuB,CAACF,IAAI,CAAC,IAAI,CAAC,CAAC,CAChF3C,CAAE,CAAC,OAAO,CAAE,IAAI,CAACoB,SAAS,CAACQ,WAAW,CAAE,IAAI,CAACkB,uBAAuB,CAACH,IAAI,CAAC,IAAI,CAAC,CACnF,CAKAI,QAAQA,CAAA,CAAG,CACF1C,CAAU,CAACkC,EAAE,CAAC,QAAQ,CAAC,GACxB,IAAI,CAACnB,SAAS,CAACU,cAAc,CAACkB,OAAO,CAAEvC,CAAO,EAAK,CAC/CA,CAAO,CAACwC,KAAK,CAACC,SAAS,CAAG,CAC9B,CAAC,CAAC,CAEF,IAAI,CAACV,2BAA2B,CAAC,CAAC,CAE1C,CAKAA,2BAA2BA,CAAA,CAAG,CAC1B,IAAI,CAAC/B,OAAO,CAAC0C,SAAS,CAACC,GAAG,CAAC,IAAI,CAACnC,UAAU,CAACC,cAAc,CAAC,CAE1D,IAAI,CAACE,SAAS,CAACS,SAAS,CAACmB,OAAO,CAAEvC,CAAO,EAAK,MACpC,CAAAgB,CAAa,CAAGhB,CAAO,CAACkB,gBAAgB,CAAC,IAAI,CAACP,SAAS,CAACK,aAAa,CAAC,CACtE4B,CAAa,CAAGC,IAAI,CAACC,GAAG,CAAC,GAAG,CAAC,GAAG9B,CAAa,CAAC,CAAC+B,GAAG,CAACC,CAAI,EAAIA,CAAI,CAACC,YAAY,CAAC,CAAE,CAAC,CAAC,CAEvFjC,CAAa,CAACuB,OAAO,CAAES,CAAI,EAAK,CAC5BA,CAAI,CAACR,KAAK,CAACC,SAAS,CAAI,GAAEG,CAAc,IAC5C,CAAC,CACL,CAAC,CAAC,CAEF,IAAI,CAAC5C,OAAO,CAAC0C,SAAS,CAACQ,MAAM,CAAC,IAAI,CAAC1C,UAAU,CAACC,cAAc,CAChE,CAOA0C,kBAAkBA,CAACH,CAAI,CAAE,CACrB,IAAI,CAACI,0BAA0B,CAAC,CAAC,CAC7B,IAAI,CAAC7B,WAAW,GAChB,IAAI,CAACA,WAAW,CAAG,IAAI,EAGvB,IAAI,CAACC,aAAa,GAClB6B,YAAY,CAAC,IAAI,CAAC7B,aAAa,CAAC,CAChC,IAAI,CAACA,aAAa,CAAG,IAAI,EAG7B,IAAI,CAACE,KAAK,CAACC,QAAQ,GAAO,CAC1BqB,CAAI,CAACN,SAAS,CAACC,GAAG,CAAC,IAAI,CAACnC,UAAU,CAACE,gBAAgB,CAAC,CACpD,IAAI,CAACY,oBAAoB,CAAG0B,CAAI,CAChCA,CAAI,CAACM,aAAa,CAAC,IAAI,CAAC3C,SAAS,CAACE,UAAU,CAAC,CAAC0C,YAAY,CAAC,eAAe,GAAM,CAAC,CACjFP,CAAI,CAAC9B,gBAAgB,CAAC,IAAI,CAACP,SAAS,CAACG,QAAQ,CAAC,CAACyB,OAAO,CAAEvC,CAAO,EAAK,CAChEA,CAAO,CAACuD,YAAY,CAAC,aAAa,GAAO,CAC7C,CAAC,CAAC,CAEF,IAAI,CAACC,4BAA4B,CAAC,CAAC,CACnC,IAAI,CAACC,eAAe,CAACT,CAAI,CAAC,CAC1B1D,CAAK,CAACoE,IAAI,CAAC,oBAAoB,CACnC,CAKAN,0BAA0BA,CAAA,CAAG,CACpB,IAAI,CAAC9B,oBAAoB,GAI9B,IAAI,CAACqC,iBAAiB,CAAC,IAAI,CAACrC,oBAAoB,CAAC,CAEjD,IAAI,CAACA,oBAAoB,CAACoB,SAAS,CAACQ,MAAM,CAAC,IAAI,CAAC1C,UAAU,CAACE,gBAAgB,CAAC,CAC5E,IAAI,CAACY,oBAAoB,CAAG,IAAI,CAEhC,IAAI,CAACX,SAAS,CAACQ,WAAW,CAACoB,OAAO,CAAEvC,CAAO,EAAK,CAC5CA,CAAO,CAACuD,YAAY,CAAC,eAAe,GAAO,CAC/C,CAAC,CAAC,CAEF,IAAI,CAAC5C,SAAS,CAACS,SAAS,CAACmB,OAAO,CAAEvC,CAAO,EAAK,CAC1CA,CAAO,CAACuD,YAAY,CAAC,aAAa,GAAM,CAC5C,CAAC,CAAC,CAEF,IAAI,CAAC/B,aAAa,CAAGoC,UAAU,CAAC,IAAM,CAClC,IAAI,CAAClC,KAAK,CAACC,QAAQ,GACvB,CAAC,CAAE,IAAI,CAAC1B,OAAO,CAACI,cAAc,CAAC,CACnC,CAMA4B,iBAAiBA,CAAC4B,CAAC,CAAE,CACjB,KAAM,CAAA7D,CAAO,CAAG6D,CAAC,CAACC,MAAM,CACnB9D,CAAO,CAACsD,aAAa,CAAC,IAAI,CAAC3C,SAAS,CAACI,UAAU,CAAC,GAIjD,IAAI,CAACW,KAAK,CAACC,QAAQ,CACnB,IAAI,CAACwB,kBAAkB,CAACnD,CAAO,CAAC,CAGhC,IAAI,CAACuB,WAAW,CAAGqC,UAAU,CAAC,IAAI,CAACT,kBAAkB,CAACjB,IAAI,CAAC,IAAI,CAAElC,CAAO,CAAC,CAAE,IAAI,CAACC,OAAO,CAACI,cAAc,CAAC,CAE/G,CAKA8B,iBAAiBA,CAAA,CAAG,CACZ,IAAI,CAACZ,WAAW,EAChB8B,YAAY,CAAC,IAAI,CAAC9B,WAAW,CAAC,CAC9B,IAAI,CAACA,WAAW,CAAG,IAAI,EAEvB,IAAI,CAAC6B,0BAA0B,CAAC,CAExC,CAMAhB,uBAAuBA,CAAC2B,CAAK,CAAE,CAC3B,OAAQA,CAAK,CAACC,GAAG,EACjB,IAAK,KAAK,CACN,IAAI,CAACC,YAAY,CAACF,CAAK,CAAC,CACxB,MACJ,IAAK,OAAO,CACZ,IAAK,GAAG,CAE0B,GAAG,GAA7BA,CAAK,CAACD,MAAM,CAACI,QAAgB,GAC7BH,CAAK,CAACI,cAAc,CAAC,CAAC,CACtB,IAAI,CAACC,oBAAoB,CAACL,CAAK,CAAC,EAEpC,MACJ,IAAK,QAAQ,CACT,GAAI,IAAI,CAACrC,KAAK,CAACC,QAAQ,CAAE,CACrBoC,CAAK,CAACI,cAAc,CAAC,CAAC,CACtB,KAAM,CAAAvD,CAAQ,CAAGmD,CAAK,CAACM,aAAa,CAACC,OAAO,CAAC,IAAI,CAAC3D,SAAS,CAACC,QAAQ,CAAC,CACrEA,CAAQ,CAAC0C,aAAa,CAAC,IAAI,CAAC3C,SAAS,CAACE,UAAU,CAAC,CAAC0D,KAAK,CAAC,CAC5D,CACA,MACJ,QAEA,CACJ,CAMAN,YAAYA,CAACF,CAAK,CAAE,CACX,IAAI,CAACrC,KAAK,CAACC,QAAQ,EAGxB,KAAK,CAAC6C,SAAS,CAAC,IAAI,CAACxE,OAAO,CAAE+D,CAAK,CACvC,CAKAP,4BAA4BA,CAAA,CAAG,CACvB,IAAI,CAAC9B,KAAK,CAACE,sBAAsB,GAGrCrC,CAAE,CAAE,WAAU,IAAI,CAACkF,EAAG,EAAC,CAAEC,QAAQ,CAAE,IAAI,CAACC,iBAAiB,CAACzC,IAAI,CAAC,IAAI,CAAC,CAAC,CACrE,IAAI,CAACR,KAAK,CAACE,sBAAsB,GAAO,CAC5C,CAKAgD,8BAA8BA,CAAA,CAAG,CACxB,IAAI,CAAClD,KAAK,CAACE,sBAAsB,GAGtCpC,CAAG,CAAE,WAAU,IAAI,CAACiF,EAAG,EAAC,CAAEC,QAAQ,CAAC,CACnC,IAAI,CAAChD,KAAK,CAACE,sBAAsB,GAAQ,CAC7C,CAMA+C,iBAAiBA,CAACZ,CAAK,CAAE,CACjB,IAAI,CAACrC,KAAK,CAACC,QAAQ,EAAIoC,CAAK,EAAsC,CAAC,CAAC,GAApC,CAAC,QAAQ,CAAC,CAACc,OAAO,CAACd,CAAK,CAACC,GAAG,CAAQ,GACpED,CAAK,CAACI,cAAc,CAAC,CAAC,CACtB,IAAI,CAACf,0BAA0B,CAAC,CAAC,CAEzC,CAOAf,uBAAuBA,CAAC0B,CAAK,CAAE,CAC3B,IAAI,CAACK,oBAAoB,CAACL,CAAK,CACnC,CAMAK,oBAAoBA,CAACL,CAAK,CAAE,CACxB,KAAM,CAAA/D,CAAO,CAAG+D,CAAK,CAACM,aAAa,CAACC,OAAO,CAAC,IAAI,CAAC3D,SAAS,CAACC,QAAQ,CAAC,CAChE,IAAI,CAACc,KAAK,CAACC,QAAQ,CACnB,IAAI,CAACyB,0BAA0B,CAAC,CAAC,CAEjC,IAAI,CAACD,kBAAkB,CAACnD,CAAO,CAEvC,CAMA8E,OAAOA,CAAA,CAAG,CACNtF,CAAG,CAAC,IAAI,CAACmB,SAAS,CAACM,SAAS,CAAC,CAC7BzB,CAAG,CAAC,IAAI,CAACmB,SAAS,CAACQ,WAAW,CAAC,CAC/B,IAAI,CAACyD,8BAA8B,CAAC,CACxC,CACJ,CAAC","ignoreList":[]}