Welcome to mirror list, hosted at ThFree Co, Russian Federation.

carousel.js.map « dist « js - github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 9071688cba61b3924ce3a7d0f2b1329355076bf4 (plain)
1
{"version":3,"file":"carousel.js","sources":["../src/carousel.js"],"sourcesContent":["import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Carousel = (($) => {\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                   = 'carousel'\n  const VERSION                = '4.1.3'\n  const DATA_KEY               = 'bs.carousel'\n  const EVENT_KEY              = `.${DATA_KEY}`\n  const DATA_API_KEY           = '.data-api'\n  const JQUERY_NO_CONFLICT     = $.fn[NAME]\n  const ARROW_LEFT_KEYCODE     = 37 // KeyboardEvent.which value for left arrow key\n  const ARROW_RIGHT_KEYCODE    = 39 // KeyboardEvent.which value for right arrow key\n  const TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\n  const Default = {\n    interval : 5000,\n    keyboard : true,\n    slide    : false,\n    pause    : 'hover',\n    wrap     : true\n  }\n\n  const DefaultType = {\n    interval : '(number|boolean)',\n    keyboard : 'boolean',\n    slide    : '(boolean|string)',\n    pause    : '(string|boolean)',\n    wrap     : 'boolean'\n  }\n\n  const Direction = {\n    NEXT     : 'next',\n    PREV     : 'prev',\n    LEFT     : 'left',\n    RIGHT    : 'right'\n  }\n\n  const Event = {\n    SLIDE          : `slide${EVENT_KEY}`,\n    SLID           : `slid${EVENT_KEY}`,\n    KEYDOWN        : `keydown${EVENT_KEY}`,\n    MOUSEENTER     : `mouseenter${EVENT_KEY}`,\n    MOUSELEAVE     : `mouseleave${EVENT_KEY}`,\n    TOUCHEND       : `touchend${EVENT_KEY}`,\n    LOAD_DATA_API  : `load${EVENT_KEY}${DATA_API_KEY}`,\n    CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    CAROUSEL : 'carousel',\n    ACTIVE   : 'active',\n    SLIDE    : 'slide',\n    RIGHT    : 'carousel-item-right',\n    LEFT     : 'carousel-item-left',\n    NEXT     : 'carousel-item-next',\n    PREV     : 'carousel-item-prev',\n    ITEM     : 'carousel-item'\n  }\n\n  const Selector = {\n    ACTIVE      : '.active',\n    ACTIVE_ITEM : '.active.carousel-item',\n    ITEM        : '.carousel-item',\n    NEXT_PREV   : '.carousel-item-next, .carousel-item-prev',\n    INDICATORS  : '.carousel-indicators',\n    DATA_SLIDE  : '[data-slide], [data-slide-to]',\n    DATA_RIDE   : '[data-ride=\"carousel\"]'\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Carousel {\n    constructor(element, config) {\n      this._items              = null\n      this._interval           = null\n      this._activeElement      = null\n\n      this._isPaused           = false\n      this._isSliding          = false\n\n      this.touchTimeout        = null\n\n      this._config             = this._getConfig(config)\n      this._element            = $(element)[0]\n      this._indicatorsElement  = this._element.querySelector(Selector.INDICATORS)\n\n      this._addEventListeners()\n    }\n\n    // Getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    static get Default() {\n      return Default\n    }\n\n    // Public\n\n    next() {\n      if (!this._isSliding) {\n        this._slide(Direction.NEXT)\n      }\n    }\n\n    nextWhenVisible() {\n      // Don't call next when the page isn't visible\n      // or the carousel or its parent isn't visible\n      if (!document.hidden &&\n        ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n        this.next()\n      }\n    }\n\n    prev() {\n      if (!this._isSliding) {\n        this._slide(Direction.PREV)\n      }\n    }\n\n    pause(event) {\n      if (!event) {\n        this._isPaused = true\n      }\n\n      if (this._element.querySelector(Selector.NEXT_PREV)) {\n        Util.triggerTransitionEnd(this._element)\n        this.cycle(true)\n      }\n\n      clearInterval(this._interval)\n      this._interval = null\n    }\n\n    cycle(event) {\n      if (!event) {\n        this._isPaused = false\n      }\n\n      if (this._interval) {\n        clearInterval(this._interval)\n        this._interval = null\n      }\n\n      if (this._config.interval && !this._isPaused) {\n        this._interval = setInterval(\n          (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n          this._config.interval\n        )\n      }\n    }\n\n    to(index) {\n      this._activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n\n      const activeIndex = this._getItemIndex(this._activeElement)\n\n      if (index > this._items.length - 1 || index < 0) {\n        return\n      }\n\n      if (this._isSliding) {\n        $(this._element).one(Event.SLID, () => this.to(index))\n        return\n      }\n\n      if (activeIndex === index) {\n        this.pause()\n        this.cycle()\n        return\n      }\n\n      const direction = index > activeIndex\n        ? Direction.NEXT\n        : Direction.PREV\n\n      this._slide(direction, this._items[index])\n    }\n\n    dispose() {\n      $(this._element).off(EVENT_KEY)\n      $.removeData(this._element, DATA_KEY)\n\n      this._items             = null\n      this._config            = null\n      this._element           = null\n      this._interval          = null\n      this._isPaused          = null\n      this._isSliding         = null\n      this._activeElement     = null\n      this._indicatorsElement = null\n    }\n\n    // Private\n\n    _getConfig(config) {\n      config = {\n        ...Default,\n        ...config\n      }\n      Util.typeCheckConfig(NAME, config, DefaultType)\n      return config\n    }\n\n    _addEventListeners() {\n      if (this._config.keyboard) {\n        $(this._element)\n          .on(Event.KEYDOWN, (event) => this._keydown(event))\n      }\n\n      if (this._config.pause === 'hover') {\n        $(this._element)\n          .on(Event.MOUSEENTER, (event) => this.pause(event))\n          .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n        if ('ontouchstart' in document.documentElement) {\n          // If it's a touch-enabled device, mouseenter/leave are fired as\n          // part of the mouse compatibility events on first tap - the carousel\n          // would stop cycling until user tapped out of it;\n          // here, we listen for touchend, explicitly pause the carousel\n          // (as if it's the second time we tap on it, mouseenter compat event\n          // is NOT fired) and after a timeout (to allow for mouse compatibility\n          // events to fire) we explicitly restart cycling\n          $(this._element).on(Event.TOUCHEND, () => {\n            this.pause()\n            if (this.touchTimeout) {\n              clearTimeout(this.touchTimeout)\n            }\n            this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n          })\n        }\n      }\n    }\n\n    _keydown(event) {\n      if (/input|textarea/i.test(event.target.tagName)) {\n        return\n      }\n\n      switch (event.which) {\n        case ARROW_LEFT_KEYCODE:\n          event.preventDefault()\n          this.prev()\n          break\n        case ARROW_RIGHT_KEYCODE:\n          event.preventDefault()\n          this.next()\n          break\n        default:\n      }\n    }\n\n    _getItemIndex(element) {\n      this._items = element && element.parentNode\n        ? [].slice.call(element.parentNode.querySelectorAll(Selector.ITEM))\n        : []\n      return this._items.indexOf(element)\n    }\n\n    _getItemByDirection(direction, activeElement) {\n      const isNextDirection = direction === Direction.NEXT\n      const isPrevDirection = direction === Direction.PREV\n      const activeIndex     = this._getItemIndex(activeElement)\n      const lastItemIndex   = this._items.length - 1\n      const isGoingToWrap   = isPrevDirection && activeIndex === 0 ||\n                              isNextDirection && activeIndex === lastItemIndex\n\n      if (isGoingToWrap && !this._config.wrap) {\n        return activeElement\n      }\n\n      const delta     = direction === Direction.PREV ? -1 : 1\n      const itemIndex = (activeIndex + delta) % this._items.length\n\n      return itemIndex === -1\n        ? this._items[this._items.length - 1] : this._items[itemIndex]\n    }\n\n    _triggerSlideEvent(relatedTarget, eventDirectionName) {\n      const targetIndex = this._getItemIndex(relatedTarget)\n      const fromIndex = this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM))\n      const slideEvent = $.Event(Event.SLIDE, {\n        relatedTarget,\n        direction: eventDirectionName,\n        from: fromIndex,\n        to: targetIndex\n      })\n\n      $(this._element).trigger(slideEvent)\n\n      return slideEvent\n    }\n\n    _setActiveIndicatorElement(element) {\n      if (this._indicatorsElement) {\n        const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE))\n        $(indicators)\n          .removeClass(ClassName.ACTIVE)\n\n        const nextIndicator = this._indicatorsElement.children[\n          this._getItemIndex(element)\n        ]\n\n        if (nextIndicator) {\n          $(nextIndicator).addClass(ClassName.ACTIVE)\n        }\n      }\n    }\n\n    _slide(direction, element) {\n      const activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n      const activeElementIndex = this._getItemIndex(activeElement)\n      const nextElement   = element || activeElement &&\n        this._getItemByDirection(direction, activeElement)\n      const nextElementIndex = this._getItemIndex(nextElement)\n      const isCycling = Boolean(this._interval)\n\n      let directionalClassName\n      let orderClassName\n      let eventDirectionName\n\n      if (direction === Direction.NEXT) {\n        directionalClassName = ClassName.LEFT\n        orderClassName = ClassName.NEXT\n        eventDirectionName = Direction.LEFT\n      } else {\n        directionalClassName = ClassName.RIGHT\n        orderClassName = ClassName.PREV\n        eventDirectionName = Direction.RIGHT\n      }\n\n      if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n        this._isSliding = false\n        return\n      }\n\n      const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n      if (slideEvent.isDefaultPrevented()) {\n        return\n      }\n\n      if (!activeElement || !nextElement) {\n        // Some weirdness is happening, so we bail\n        return\n      }\n\n      this._isSliding = true\n\n      if (isCycling) {\n        this.pause()\n      }\n\n      this._setActiveIndicatorElement(nextElement)\n\n      const slidEvent = $.Event(Event.SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      })\n\n      if ($(this._element).hasClass(ClassName.SLIDE)) {\n        $(nextElement).addClass(orderClassName)\n\n        Util.reflow(nextElement)\n\n        $(activeElement).addClass(directionalClassName)\n        $(nextElement).addClass(directionalClassName)\n\n        const nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10)\n        if (nextElementInterval) {\n          this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n          this._config.interval = nextElementInterval\n        } else {\n          this._config.interval = this._config.defaultInterval || this._config.interval\n        }\n\n        const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n        $(activeElement)\n          .one(Util.TRANSITION_END, () => {\n            $(nextElement)\n              .removeClass(`${directionalClassName} ${orderClassName}`)\n              .addClass(ClassName.ACTIVE)\n\n            $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n            this._isSliding = false\n\n            setTimeout(() => $(this._element).trigger(slidEvent), 0)\n          })\n          .emulateTransitionEnd(transitionDuration)\n      } else {\n        $(activeElement).removeClass(ClassName.ACTIVE)\n        $(nextElement).addClass(ClassName.ACTIVE)\n\n        this._isSliding = false\n        $(this._element).trigger(slidEvent)\n      }\n\n      if (isCycling) {\n        this.cycle()\n      }\n    }\n\n    // Static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let data = $(this).data(DATA_KEY)\n        let _config = {\n          ...Default,\n          ...$(this).data()\n        }\n\n        if (typeof config === 'object') {\n          _config = {\n            ..._config,\n            ...config\n          }\n        }\n\n        const action = typeof config === 'string' ? config : _config.slide\n\n        if (!data) {\n          data = new Carousel(this, _config)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'number') {\n          data.to(config)\n        } else if (typeof action === 'string') {\n          if (typeof data[action] === 'undefined') {\n            throw new TypeError(`No method named \"${action}\"`)\n          }\n          data[action]()\n        } else if (_config.interval) {\n          data.pause()\n          data.cycle()\n        }\n      })\n    }\n\n    static _dataApiClickHandler(event) {\n      const selector = Util.getSelectorFromElement(this)\n\n      if (!selector) {\n        return\n      }\n\n      const target = $(selector)[0]\n\n      if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n        return\n      }\n\n      const config = {\n        ...$(target).data(),\n        ...$(this).data()\n      }\n      const slideIndex = this.getAttribute('data-slide-to')\n\n      if (slideIndex) {\n        config.interval = false\n      }\n\n      Carousel._jQueryInterface.call($(target), config)\n\n      if (slideIndex) {\n        $(target).data(DATA_KEY).to(slideIndex)\n      }\n\n      event.preventDefault()\n    }\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document)\n    .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n  $(window).on(Event.LOAD_DATA_API, () => {\n    const carousels = [].slice.call(document.querySelectorAll(Selector.DATA_RIDE))\n    for (let i = 0, len = carousels.length; i < len; i++) {\n      const $carousel = $(carousels[i])\n      Carousel._jQueryInterface.call($carousel, $carousel.data())\n    }\n  })\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME] = Carousel._jQueryInterface\n  $.fn[NAME].Constructor = Carousel\n  $.fn[NAME].noConflict = () => {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Carousel._jQueryInterface\n  }\n\n  return Carousel\n})($)\n\nexport default Carousel\n"],"names":["Carousel","$","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","fn","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","Default","interval","keyboard","slide","pause","wrap","DefaultType","Direction","NEXT","PREV","LEFT","RIGHT","Event","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHEND","LOAD_DATA_API","CLICK_DATA_API","ClassName","CAROUSEL","ACTIVE","ITEM","Selector","ACTIVE_ITEM","NEXT_PREV","INDICATORS","DATA_SLIDE","DATA_RIDE","element","config","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_config","_getConfig","_element","_indicatorsElement","querySelector","_addEventListeners","next","_slide","nextWhenVisible","document","hidden","is","css","prev","event","Util","triggerTransitionEnd","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","length","one","direction","dispose","off","removeData","typeCheckConfig","on","_keydown","documentElement","clearTimeout","setTimeout","test","target","tagName","which","preventDefault","parentNode","slice","call","querySelectorAll","indexOf","_getItemByDirection","activeElement","isNextDirection","isPrevDirection","lastItemIndex","isGoingToWrap","delta","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","trigger","_setActiveIndicatorElement","indicators","removeClass","nextIndicator","children","addClass","activeElementIndex","nextElement","nextElementIndex","isCycling","Boolean","directionalClassName","orderClassName","hasClass","isDefaultPrevented","slidEvent","reflow","nextElementInterval","parseInt","getAttribute","defaultInterval","transitionDuration","getTransitionDurationFromElement","TRANSITION_END","emulateTransitionEnd","_jQueryInterface","each","data","action","TypeError","_dataApiClickHandler","selector","getSelectorFromElement","slideIndex","window","carousels","i","len","$carousel","Constructor","noConflict"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGA;;;;;;;EAOA,IAAMA,QAAQ,GAAI,UAACC,IAAD,EAAO;EACvB;;;;;EAMA,MAAMC,IAAI,GAAqB,UAA/B;EACA,MAAMC,OAAO,GAAkB,OAA/B;EACA,MAAMC,QAAQ,GAAiB,aAA/B;EACA,MAAMC,SAAS,SAAoBD,QAAnC;EACA,MAAME,YAAY,GAAa,WAA/B;EACA,MAAMC,kBAAkB,GAAON,IAAC,CAACO,EAAF,CAAKN,IAAL,CAA/B;EACA,MAAMO,kBAAkB,GAAO,EAA/B,CAbuB;;EAcvB,MAAMC,mBAAmB,GAAM,EAA/B,CAduB;;EAevB,MAAMC,sBAAsB,GAAG,GAA/B,CAfuB;;EAiBvB,MAAMC,OAAO,GAAG;EACdC,IAAAA,QAAQ,EAAG,IADG;EAEdC,IAAAA,QAAQ,EAAG,IAFG;EAGdC,IAAAA,KAAK,EAAM,KAHG;EAIdC,IAAAA,KAAK,EAAM,OAJG;EAKdC,IAAAA,IAAI,EAAO;EALG,GAAhB;EAQA,MAAMC,WAAW,GAAG;EAClBL,IAAAA,QAAQ,EAAG,kBADO;EAElBC,IAAAA,QAAQ,EAAG,SAFO;EAGlBC,IAAAA,KAAK,EAAM,kBAHO;EAIlBC,IAAAA,KAAK,EAAM,kBAJO;EAKlBC,IAAAA,IAAI,EAAO;EALO,GAApB;EAQA,MAAME,SAAS,GAAG;EAChBC,IAAAA,IAAI,EAAO,MADK;EAEhBC,IAAAA,IAAI,EAAO,MAFK;EAGhBC,IAAAA,IAAI,EAAO,MAHK;EAIhBC,IAAAA,KAAK,EAAM;EAJK,GAAlB;EAOA,MAAMC,KAAK,GAAG;EACZC,IAAAA,KAAK,YAAoBpB,SADb;EAEZqB,IAAAA,IAAI,WAAoBrB,SAFZ;EAGZsB,IAAAA,OAAO,cAAoBtB,SAHf;EAIZuB,IAAAA,UAAU,iBAAoBvB,SAJlB;EAKZwB,IAAAA,UAAU,iBAAoBxB,SALlB;EAMZyB,IAAAA,QAAQ,eAAoBzB,SANhB;EAOZ0B,IAAAA,aAAa,WAAW1B,SAAX,GAAuBC,YAPxB;EAQZ0B,IAAAA,cAAc,YAAW3B,SAAX,GAAuBC;EARzB,GAAd;EAWA,MAAM2B,SAAS,GAAG;EAChBC,IAAAA,QAAQ,EAAG,UADK;EAEhBC,IAAAA,MAAM,EAAK,QAFK;EAGhBV,IAAAA,KAAK,EAAM,OAHK;EAIhBF,IAAAA,KAAK,EAAM,qBAJK;EAKhBD,IAAAA,IAAI,EAAO,oBALK;EAMhBF,IAAAA,IAAI,EAAO,oBANK;EAOhBC,IAAAA,IAAI,EAAO,oBAPK;EAQhBe,IAAAA,IAAI,EAAO;EARK,GAAlB;EAWA,MAAMC,QAAQ,GAAG;EACfF,IAAAA,MAAM,EAAQ,SADC;EAEfG,IAAAA,WAAW,EAAG,uBAFC;EAGfF,IAAAA,IAAI,EAAU,gBAHC;EAIfG,IAAAA,SAAS,EAAK,0CAJC;EAKfC,IAAAA,UAAU,EAAI,sBALC;EAMfC,IAAAA,UAAU,EAAI,+BANC;EAOfC,IAAAA,SAAS,EAAK;EAGhB;;;;;;EAViB,GAAjB;;EA9DuB,MA8EjB1C,QA9EiB;EAAA;EAAA;EA+ErB,sBAAY2C,OAAZ,EAAqBC,MAArB,EAA6B;EAC3B,WAAKC,MAAL,GAA2B,IAA3B;EACA,WAAKC,SAAL,GAA2B,IAA3B;EACA,WAAKC,cAAL,GAA2B,IAA3B;EAEA,WAAKC,SAAL,GAA2B,KAA3B;EACA,WAAKC,UAAL,GAA2B,KAA3B;EAEA,WAAKC,YAAL,GAA2B,IAA3B;EAEA,WAAKC,OAAL,GAA2B,KAAKC,UAAL,CAAgBR,MAAhB,CAA3B;EACA,WAAKS,QAAL,GAA2BpD,IAAC,CAAC0C,OAAD,CAAD,CAAW,CAAX,CAA3B;EACA,WAAKW,kBAAL,GAA2B,KAAKD,QAAL,CAAcE,aAAd,CAA4BlB,QAAQ,CAACG,UAArC,CAA3B;;EAEA,WAAKgB,kBAAL;EACD,KA9FoB;;;EAAA;;EA0GrB;EA1GqB,WA4GrBC,IA5GqB,mBA4Gd;EACL,UAAI,CAAC,KAAKR,UAAV,EAAsB;EACpB,aAAKS,MAAL,CAAYvC,SAAS,CAACC,IAAtB;EACD;EACF,KAhHoB;;EAAA,WAkHrBuC,eAlHqB,8BAkHH;EAChB;EACA;EACA,UAAI,CAACC,QAAQ,CAACC,MAAV,IACD5D,IAAC,CAAC,KAAKoD,QAAN,CAAD,CAAiBS,EAAjB,CAAoB,UAApB,KAAmC7D,IAAC,CAAC,KAAKoD,QAAN,CAAD,CAAiBU,GAAjB,CAAqB,YAArB,MAAuC,QAD7E,EACwF;EACtF,aAAKN,IAAL;EACD;EACF,KAzHoB;;EAAA,WA2HrBO,IA3HqB,mBA2Hd;EACL,UAAI,CAAC,KAAKf,UAAV,EAAsB;EACpB,aAAKS,MAAL,CAAYvC,SAAS,CAACE,IAAtB;EACD;EACF,KA/HoB;;EAAA,WAiIrBL,KAjIqB,kBAiIfiD,KAjIe,EAiIR;EACX,UAAI,CAACA,KAAL,EAAY;EACV,aAAKjB,SAAL,GAAiB,IAAjB;EACD;;EAED,UAAI,KAAKK,QAAL,CAAcE,aAAd,CAA4BlB,QAAQ,CAACE,SAArC,CAAJ,EAAqD;EACnD2B,QAAAA,IAAI,CAACC,oBAAL,CAA0B,KAAKd,QAA/B;EACA,aAAKe,KAAL,CAAW,IAAX;EACD;;EAEDC,MAAAA,aAAa,CAAC,KAAKvB,SAAN,CAAb;EACA,WAAKA,SAAL,GAAiB,IAAjB;EACD,KA7IoB;;EAAA,WA+IrBsB,KA/IqB,kBA+IfH,KA/Ie,EA+IR;EACX,UAAI,CAACA,KAAL,EAAY;EACV,aAAKjB,SAAL,GAAiB,KAAjB;EACD;;EAED,UAAI,KAAKF,SAAT,EAAoB;EAClBuB,QAAAA,aAAa,CAAC,KAAKvB,SAAN,CAAb;EACA,aAAKA,SAAL,GAAiB,IAAjB;EACD;;EAED,UAAI,KAAKK,OAAL,CAAatC,QAAb,IAAyB,CAAC,KAAKmC,SAAnC,EAA8C;EAC5C,aAAKF,SAAL,GAAiBwB,WAAW,CAC1B,CAACV,QAAQ,CAACW,eAAT,GAA2B,KAAKZ,eAAhC,GAAkD,KAAKF,IAAxD,EAA8De,IAA9D,CAAmE,IAAnE,CAD0B,EAE1B,KAAKrB,OAAL,CAAatC,QAFa,CAA5B;EAID;EACF,KA/JoB;;EAAA,WAiKrB4D,EAjKqB,eAiKlBC,KAjKkB,EAiKX;EAAA;;EACR,WAAK3B,cAAL,GAAsB,KAAKM,QAAL,CAAcE,aAAd,CAA4BlB,QAAQ,CAACC,WAArC,CAAtB;;EAEA,UAAMqC,WAAW,GAAG,KAAKC,aAAL,CAAmB,KAAK7B,cAAxB,CAApB;;EAEA,UAAI2B,KAAK,GAAG,KAAK7B,MAAL,CAAYgC,MAAZ,GAAqB,CAA7B,IAAkCH,KAAK,GAAG,CAA9C,EAAiD;EAC/C;EACD;;EAED,UAAI,KAAKzB,UAAT,EAAqB;EACnBhD,QAAAA,IAAC,CAAC,KAAKoD,QAAN,CAAD,CAAiByB,GAAjB,CAAqBtD,KAAK,CAACE,IAA3B,EAAiC;EAAA,iBAAM,KAAI,CAAC+C,EAAL,CAAQC,KAAR,CAAN;EAAA,SAAjC;EACA;EACD;;EAED,UAAIC,WAAW,KAAKD,KAApB,EAA2B;EACzB,aAAK1D,KAAL;EACA,aAAKoD,KAAL;EACA;EACD;;EAED,UAAMW,SAAS,GAAGL,KAAK,GAAGC,WAAR,GACdxD,SAAS,CAACC,IADI,GAEdD,SAAS,CAACE,IAFd;;EAIA,WAAKqC,MAAL,CAAYqB,SAAZ,EAAuB,KAAKlC,MAAL,CAAY6B,KAAZ,CAAvB;EACD,KA1LoB;;EAAA,WA4LrBM,OA5LqB,sBA4LX;EACR/E,MAAAA,IAAC,CAAC,KAAKoD,QAAN,CAAD,CAAiB4B,GAAjB,CAAqB5E,SAArB;EACAJ,MAAAA,IAAC,CAACiF,UAAF,CAAa,KAAK7B,QAAlB,EAA4BjD,QAA5B;EAEA,WAAKyC,MAAL,GAA0B,IAA1B;EACA,WAAKM,OAAL,GAA0B,IAA1B;EACA,WAAKE,QAAL,GAA0B,IAA1B;EACA,WAAKP,SAAL,GAA0B,IAA1B;EACA,WAAKE,SAAL,GAA0B,IAA1B;EACA,WAAKC,UAAL,GAA0B,IAA1B;EACA,WAAKF,cAAL,GAA0B,IAA1B;EACA,WAAKO,kBAAL,GAA0B,IAA1B;EACD,KAxMoB;;;EAAA,WA4MrBF,UA5MqB,uBA4MVR,MA5MU,EA4MF;EACjBA,MAAAA,MAAM,qBACDhC,OADC,EAEDgC,MAFC,CAAN;EAIAsB,MAAAA,IAAI,CAACiB,eAAL,CAAqBjF,IAArB,EAA2B0C,MAA3B,EAAmC1B,WAAnC;EACA,aAAO0B,MAAP;EACD,KAnNoB;;EAAA,WAqNrBY,kBArNqB,iCAqNA;EAAA;;EACnB,UAAI,KAAKL,OAAL,CAAarC,QAAjB,EAA2B;EACzBb,QAAAA,IAAC,CAAC,KAAKoD,QAAN,CAAD,CACG+B,EADH,CACM5D,KAAK,CAACG,OADZ,EACqB,UAACsC,KAAD;EAAA,iBAAW,MAAI,CAACoB,QAAL,CAAcpB,KAAd,CAAX;EAAA,SADrB;EAED;;EAED,UAAI,KAAKd,OAAL,CAAanC,KAAb,KAAuB,OAA3B,EAAoC;EAClCf,QAAAA,IAAC,CAAC,KAAKoD,QAAN,CAAD,CACG+B,EADH,CACM5D,KAAK,CAACI,UADZ,EACwB,UAACqC,KAAD;EAAA,iBAAW,MAAI,CAACjD,KAAL,CAAWiD,KAAX,CAAX;EAAA,SADxB,EAEGmB,EAFH,CAEM5D,KAAK,CAACK,UAFZ,EAEwB,UAACoC,KAAD;EAAA,iBAAW,MAAI,CAACG,KAAL,CAAWH,KAAX,CAAX;EAAA,SAFxB;;EAGA,YAAI,kBAAkBL,QAAQ,CAAC0B,eAA/B,EAAgD;EAC9C;EACA;EACA;EACA;EACA;EACA;EACA;EACArF,UAAAA,IAAC,CAAC,KAAKoD,QAAN,CAAD,CAAiB+B,EAAjB,CAAoB5D,KAAK,CAACM,QAA1B,EAAoC,YAAM;EACxC,YAAA,MAAI,CAACd,KAAL;;EACA,gBAAI,MAAI,CAACkC,YAAT,EAAuB;EACrBqC,cAAAA,YAAY,CAAC,MAAI,CAACrC,YAAN,CAAZ;EACD;;EACD,YAAA,MAAI,CAACA,YAAL,GAAoBsC,UAAU,CAAC,UAACvB,KAAD;EAAA,qBAAW,MAAI,CAACG,KAAL,CAAWH,KAAX,CAAX;EAAA,aAAD,EAA+BtD,sBAAsB,GAAG,MAAI,CAACwC,OAAL,CAAatC,QAArE,CAA9B;EACD,WAND;EAOD;EACF;EACF,KAhPoB;;EAAA,WAkPrBwE,QAlPqB,qBAkPZpB,KAlPY,EAkPL;EACd,UAAI,kBAAkBwB,IAAlB,CAAuBxB,KAAK,CAACyB,MAAN,CAAaC,OAApC,CAAJ,EAAkD;EAChD;EACD;;EAED,cAAQ1B,KAAK,CAAC2B,KAAd;EACE,aAAKnF,kBAAL;EACEwD,UAAAA,KAAK,CAAC4B,cAAN;EACA,eAAK7B,IAAL;EACA;;EACF,aAAKtD,mBAAL;EACEuD,UAAAA,KAAK,CAAC4B,cAAN;EACA,eAAKpC,IAAL;EACA;;EACF;EATF;EAWD,KAlQoB;;EAAA,WAoQrBmB,aApQqB,0BAoQPjC,OApQO,EAoQE;EACrB,WAAKE,MAAL,GAAcF,OAAO,IAAIA,OAAO,CAACmD,UAAnB,GACV,GAAGC,KAAH,CAASC,IAAT,CAAcrD,OAAO,CAACmD,UAAR,CAAmBG,gBAAnB,CAAoC5D,QAAQ,CAACD,IAA7C,CAAd,CADU,GAEV,EAFJ;EAGA,aAAO,KAAKS,MAAL,CAAYqD,OAAZ,CAAoBvD,OAApB,CAAP;EACD,KAzQoB;;EAAA,WA2QrBwD,mBA3QqB,gCA2QDpB,SA3QC,EA2QUqB,aA3QV,EA2QyB;EAC5C,UAAMC,eAAe,GAAGtB,SAAS,KAAK5D,SAAS,CAACC,IAAhD;EACA,UAAMkF,eAAe,GAAGvB,SAAS,KAAK5D,SAAS,CAACE,IAAhD;;EACA,UAAMsD,WAAW,GAAO,KAAKC,aAAL,CAAmBwB,aAAnB,CAAxB;;EACA,UAAMG,aAAa,GAAK,KAAK1D,MAAL,CAAYgC,MAAZ,GAAqB,CAA7C;EACA,UAAM2B,aAAa,GAAKF,eAAe,IAAI3B,WAAW,KAAK,CAAnC,IACA0B,eAAe,IAAI1B,WAAW,KAAK4B,aAD3D;;EAGA,UAAIC,aAAa,IAAI,CAAC,KAAKrD,OAAL,CAAalC,IAAnC,EAAyC;EACvC,eAAOmF,aAAP;EACD;;EAED,UAAMK,KAAK,GAAO1B,SAAS,KAAK5D,SAAS,CAACE,IAAxB,GAA+B,CAAC,CAAhC,GAAoC,CAAtD;EACA,UAAMqF,SAAS,GAAG,CAAC/B,WAAW,GAAG8B,KAAf,IAAwB,KAAK5D,MAAL,CAAYgC,MAAtD;EAEA,aAAO6B,SAAS,KAAK,CAAC,CAAf,GACH,KAAK7D,MAAL,CAAY,KAAKA,MAAL,CAAYgC,MAAZ,GAAqB,CAAjC,CADG,GACmC,KAAKhC,MAAL,CAAY6D,SAAZ,CAD1C;EAED,KA5RoB;;EAAA,WA8RrBC,kBA9RqB,+BA8RFC,aA9RE,EA8RaC,kBA9Rb,EA8RiC;EACpD,UAAMC,WAAW,GAAG,KAAKlC,aAAL,CAAmBgC,aAAnB,CAApB;;EACA,UAAMG,SAAS,GAAG,KAAKnC,aAAL,CAAmB,KAAKvB,QAAL,CAAcE,aAAd,CAA4BlB,QAAQ,CAACC,WAArC,CAAnB,CAAlB;;EACA,UAAM0E,UAAU,GAAG/G,IAAC,CAACuB,KAAF,CAAQA,KAAK,CAACC,KAAd,EAAqB;EACtCmF,QAAAA,aAAa,EAAbA,aADsC;EAEtC7B,QAAAA,SAAS,EAAE8B,kBAF2B;EAGtCI,QAAAA,IAAI,EAAEF,SAHgC;EAItCtC,QAAAA,EAAE,EAAEqC;EAJkC,OAArB,CAAnB;EAOA7G,MAAAA,IAAC,CAAC,KAAKoD,QAAN,CAAD,CAAiB6D,OAAjB,CAAyBF,UAAzB;EAEA,aAAOA,UAAP;EACD,KA3SoB;;EAAA,WA6SrBG,0BA7SqB,uCA6SMxE,OA7SN,EA6Se;EAClC,UAAI,KAAKW,kBAAT,EAA6B;EAC3B,YAAM8D,UAAU,GAAG,GAAGrB,KAAH,CAASC,IAAT,CAAc,KAAK1C,kBAAL,CAAwB2C,gBAAxB,CAAyC5D,QAAQ,CAACF,MAAlD,CAAd,CAAnB;EACAlC,QAAAA,IAAC,CAACmH,UAAD,CAAD,CACGC,WADH,CACepF,SAAS,CAACE,MADzB;;EAGA,YAAMmF,aAAa,GAAG,KAAKhE,kBAAL,CAAwBiE,QAAxB,CACpB,KAAK3C,aAAL,CAAmBjC,OAAnB,CADoB,CAAtB;;EAIA,YAAI2E,aAAJ,EAAmB;EACjBrH,UAAAA,IAAC,CAACqH,aAAD,CAAD,CAAiBE,QAAjB,CAA0BvF,SAAS,CAACE,MAApC;EACD;EACF;EACF,KA3ToB;;EAAA,WA6TrBuB,MA7TqB,mBA6TdqB,SA7Tc,EA6THpC,OA7TG,EA6TM;EAAA;;EACzB,UAAMyD,aAAa,GAAG,KAAK/C,QAAL,CAAcE,aAAd,CAA4BlB,QAAQ,CAACC,WAArC,CAAtB;;EACA,UAAMmF,kBAAkB,GAAG,KAAK7C,aAAL,CAAmBwB,aAAnB,CAA3B;;EACA,UAAMsB,WAAW,GAAK/E,OAAO,IAAIyD,aAAa,IAC5C,KAAKD,mBAAL,CAAyBpB,SAAzB,EAAoCqB,aAApC,CADF;;EAEA,UAAMuB,gBAAgB,GAAG,KAAK/C,aAAL,CAAmB8C,WAAnB,CAAzB;;EACA,UAAME,SAAS,GAAGC,OAAO,CAAC,KAAK/E,SAAN,CAAzB;EAEA,UAAIgF,oBAAJ;EACA,UAAIC,cAAJ;EACA,UAAIlB,kBAAJ;;EAEA,UAAI9B,SAAS,KAAK5D,SAAS,CAACC,IAA5B,EAAkC;EAChC0G,QAAAA,oBAAoB,GAAG7F,SAAS,CAACX,IAAjC;EACAyG,QAAAA,cAAc,GAAG9F,SAAS,CAACb,IAA3B;EACAyF,QAAAA,kBAAkB,GAAG1F,SAAS,CAACG,IAA/B;EACD,OAJD,MAIO;EACLwG,QAAAA,oBAAoB,GAAG7F,SAAS,CAACV,KAAjC;EACAwG,QAAAA,cAAc,GAAG9F,SAAS,CAACZ,IAA3B;EACAwF,QAAAA,kBAAkB,GAAG1F,SAAS,CAACI,KAA/B;EACD;;EAED,UAAImG,WAAW,IAAIzH,IAAC,CAACyH,WAAD,CAAD,CAAeM,QAAf,CAAwB/F,SAAS,CAACE,MAAlC,CAAnB,EAA8D;EAC5D,aAAKc,UAAL,GAAkB,KAAlB;EACA;EACD;;EAED,UAAM+D,UAAU,GAAG,KAAKL,kBAAL,CAAwBe,WAAxB,EAAqCb,kBAArC,CAAnB;;EACA,UAAIG,UAAU,CAACiB,kBAAX,EAAJ,EAAqC;EACnC;EACD;;EAED,UAAI,CAAC7B,aAAD,IAAkB,CAACsB,WAAvB,EAAoC;EAClC;EACA;EACD;;EAED,WAAKzE,UAAL,GAAkB,IAAlB;;EAEA,UAAI2E,SAAJ,EAAe;EACb,aAAK5G,KAAL;EACD;;EAED,WAAKmG,0BAAL,CAAgCO,WAAhC;;EAEA,UAAMQ,SAAS,GAAGjI,IAAC,CAACuB,KAAF,CAAQA,KAAK,CAACE,IAAd,EAAoB;EACpCkF,QAAAA,aAAa,EAAEc,WADqB;EAEpC3C,QAAAA,SAAS,EAAE8B,kBAFyB;EAGpCI,QAAAA,IAAI,EAAEQ,kBAH8B;EAIpChD,QAAAA,EAAE,EAAEkD;EAJgC,OAApB,CAAlB;;EAOA,UAAI1H,IAAC,CAAC,KAAKoD,QAAN,CAAD,CAAiB2E,QAAjB,CAA0B/F,SAAS,CAACR,KAApC,CAAJ,EAAgD;EAC9CxB,QAAAA,IAAC,CAACyH,WAAD,CAAD,CAAeF,QAAf,CAAwBO,cAAxB;EAEA7D,QAAAA,IAAI,CAACiE,MAAL,CAAYT,WAAZ;EAEAzH,QAAAA,IAAC,CAACmG,aAAD,CAAD,CAAiBoB,QAAjB,CAA0BM,oBAA1B;EACA7H,QAAAA,IAAC,CAACyH,WAAD,CAAD,CAAeF,QAAf,CAAwBM,oBAAxB;EAEA,YAAMM,mBAAmB,GAAGC,QAAQ,CAACX,WAAW,CAACY,YAAZ,CAAyB,eAAzB,CAAD,EAA4C,EAA5C,CAApC;;EACA,YAAIF,mBAAJ,EAAyB;EACvB,eAAKjF,OAAL,CAAaoF,eAAb,GAA+B,KAAKpF,OAAL,CAAaoF,eAAb,IAAgC,KAAKpF,OAAL,CAAatC,QAA5E;EACA,eAAKsC,OAAL,CAAatC,QAAb,GAAwBuH,mBAAxB;EACD,SAHD,MAGO;EACL,eAAKjF,OAAL,CAAatC,QAAb,GAAwB,KAAKsC,OAAL,CAAaoF,eAAb,IAAgC,KAAKpF,OAAL,CAAatC,QAArE;EACD;;EAED,YAAM2H,kBAAkB,GAAGtE,IAAI,CAACuE,gCAAL,CAAsCrC,aAAtC,CAA3B;EAEAnG,QAAAA,IAAC,CAACmG,aAAD,CAAD,CACGtB,GADH,CACOZ,IAAI,CAACwE,cADZ,EAC4B,YAAM;EAC9BzI,UAAAA,IAAC,CAACyH,WAAD,CAAD,CACGL,WADH,CACkBS,oBADlB,SAC0CC,cAD1C,EAEGP,QAFH,CAEYvF,SAAS,CAACE,MAFtB;EAIAlC,UAAAA,IAAC,CAACmG,aAAD,CAAD,CAAiBiB,WAAjB,CAAgCpF,SAAS,CAACE,MAA1C,SAAoD4F,cAApD,SAAsED,oBAAtE;EAEA,UAAA,MAAI,CAAC7E,UAAL,GAAkB,KAAlB;EAEAuC,UAAAA,UAAU,CAAC;EAAA,mBAAMvF,IAAC,CAAC,MAAI,CAACoD,QAAN,CAAD,CAAiB6D,OAAjB,CAAyBgB,SAAzB,CAAN;EAAA,WAAD,EAA4C,CAA5C,CAAV;EACD,SAXH,EAYGS,oBAZH,CAYwBH,kBAZxB;EAaD,OA/BD,MA+BO;EACLvI,QAAAA,IAAC,CAACmG,aAAD,CAAD,CAAiBiB,WAAjB,CAA6BpF,SAAS,CAACE,MAAvC;EACAlC,QAAAA,IAAC,CAACyH,WAAD,CAAD,CAAeF,QAAf,CAAwBvF,SAAS,CAACE,MAAlC;EAEA,aAAKc,UAAL,GAAkB,KAAlB;EACAhD,QAAAA,IAAC,CAAC,KAAKoD,QAAN,CAAD,CAAiB6D,OAAjB,CAAyBgB,SAAzB;EACD;;EAED,UAAIN,SAAJ,EAAe;EACb,aAAKxD,KAAL;EACD;EACF,KA3ZoB;;;EAAA,aA+ZdwE,gBA/Zc,6BA+ZGhG,MA/ZH,EA+ZW;EAC9B,aAAO,KAAKiG,IAAL,CAAU,YAAY;EAC3B,YAAIC,IAAI,GAAG7I,IAAC,CAAC,IAAD,CAAD,CAAQ6I,IAAR,CAAa1I,QAAb,CAAX;;EACA,YAAI+C,OAAO,qBACNvC,OADM,EAENX,IAAC,CAAC,IAAD,CAAD,CAAQ6I,IAAR,EAFM,CAAX;;EAKA,YAAI,OAAOlG,MAAP,KAAkB,QAAtB,EAAgC;EAC9BO,UAAAA,OAAO,qBACFA,OADE,EAEFP,MAFE,CAAP;EAID;;EAED,YAAMmG,MAAM,GAAG,OAAOnG,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsCO,OAAO,CAACpC,KAA7D;;EAEA,YAAI,CAAC+H,IAAL,EAAW;EACTA,UAAAA,IAAI,GAAG,IAAI9I,QAAJ,CAAa,IAAb,EAAmBmD,OAAnB,CAAP;EACAlD,UAAAA,IAAC,CAAC,IAAD,CAAD,CAAQ6I,IAAR,CAAa1I,QAAb,EAAuB0I,IAAvB;EACD;;EAED,YAAI,OAAOlG,MAAP,KAAkB,QAAtB,EAAgC;EAC9BkG,UAAAA,IAAI,CAACrE,EAAL,CAAQ7B,MAAR;EACD,SAFD,MAEO,IAAI,OAAOmG,MAAP,KAAkB,QAAtB,EAAgC;EACrC,cAAI,OAAOD,IAAI,CAACC,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,kBAAM,IAAIC,SAAJ,wBAAkCD,MAAlC,QAAN;EACD;;EACDD,UAAAA,IAAI,CAACC,MAAD,CAAJ;EACD,SALM,MAKA,IAAI5F,OAAO,CAACtC,QAAZ,EAAsB;EAC3BiI,UAAAA,IAAI,CAAC9H,KAAL;EACA8H,UAAAA,IAAI,CAAC1E,KAAL;EACD;EACF,OAhCM,CAAP;EAiCD,KAjcoB;;EAAA,aAmcd6E,oBAncc,iCAmcOhF,KAncP,EAmcc;EACjC,UAAMiF,QAAQ,GAAGhF,IAAI,CAACiF,sBAAL,CAA4B,IAA5B,CAAjB;;EAEA,UAAI,CAACD,QAAL,EAAe;EACb;EACD;;EAED,UAAMxD,MAAM,GAAGzF,IAAC,CAACiJ,QAAD,CAAD,CAAY,CAAZ,CAAf;;EAEA,UAAI,CAACxD,MAAD,IAAW,CAACzF,IAAC,CAACyF,MAAD,CAAD,CAAUsC,QAAV,CAAmB/F,SAAS,CAACC,QAA7B,CAAhB,EAAwD;EACtD;EACD;;EAED,UAAMU,MAAM,qBACP3C,IAAC,CAACyF,MAAD,CAAD,CAAUoD,IAAV,EADO,EAEP7I,IAAC,CAAC,IAAD,CAAD,CAAQ6I,IAAR,EAFO,CAAZ;;EAIA,UAAMM,UAAU,GAAG,KAAKd,YAAL,CAAkB,eAAlB,CAAnB;;EAEA,UAAIc,UAAJ,EAAgB;EACdxG,QAAAA,MAAM,CAAC/B,QAAP,GAAkB,KAAlB;EACD;;EAEDb,MAAAA,QAAQ,CAAC4I,gBAAT,CAA0B5C,IAA1B,CAA+B/F,IAAC,CAACyF,MAAD,CAAhC,EAA0C9C,MAA1C;;EAEA,UAAIwG,UAAJ,EAAgB;EACdnJ,QAAAA,IAAC,CAACyF,MAAD,CAAD,CAAUoD,IAAV,CAAe1I,QAAf,EAAyBqE,EAAzB,CAA4B2E,UAA5B;EACD;;EAEDnF,MAAAA,KAAK,CAAC4B,cAAN;EACD,KAjeoB;;EAAA;EAAA;EAAA,0BAkGA;EACnB,eAAO1F,OAAP;EACD;EApGoB;EAAA;EAAA,0BAsGA;EACnB,eAAOS,OAAP;EACD;EAxGoB;;EAAA;EAAA;EAoevB;;;;;;;EAMAX,EAAAA,IAAC,CAAC2D,QAAD,CAAD,CACGwB,EADH,CACM5D,KAAK,CAACQ,cADZ,EAC4BK,QAAQ,CAACI,UADrC,EACiDzC,QAAQ,CAACiJ,oBAD1D;EAGAhJ,EAAAA,IAAC,CAACoJ,MAAD,CAAD,CAAUjE,EAAV,CAAa5D,KAAK,CAACO,aAAnB,EAAkC,YAAM;EACtC,QAAMuH,SAAS,GAAG,GAAGvD,KAAH,CAASC,IAAT,CAAcpC,QAAQ,CAACqC,gBAAT,CAA0B5D,QAAQ,CAACK,SAAnC,CAAd,CAAlB;;EACA,SAAK,IAAI6G,CAAC,GAAG,CAAR,EAAWC,GAAG,GAAGF,SAAS,CAACzE,MAAhC,EAAwC0E,CAAC,GAAGC,GAA5C,EAAiDD,CAAC,EAAlD,EAAsD;EACpD,UAAME,SAAS,GAAGxJ,IAAC,CAACqJ,SAAS,CAACC,CAAD,CAAV,CAAnB;;EACAvJ,MAAAA,QAAQ,CAAC4I,gBAAT,CAA0B5C,IAA1B,CAA+ByD,SAA/B,EAA0CA,SAAS,CAACX,IAAV,EAA1C;EACD;EACF,GAND;EAQA;;;;;;EAMA7I,EAAAA,IAAC,CAACO,EAAF,CAAKN,IAAL,IAAaF,QAAQ,CAAC4I,gBAAtB;EACA3I,EAAAA,IAAC,CAACO,EAAF,CAAKN,IAAL,EAAWwJ,WAAX,GAAyB1J,QAAzB;;EACAC,EAAAA,IAAC,CAACO,EAAF,CAAKN,IAAL,EAAWyJ,UAAX,GAAwB,YAAM;EAC5B1J,IAAAA,IAAC,CAACO,EAAF,CAAKN,IAAL,IAAaK,kBAAb;EACA,WAAOP,QAAQ,CAAC4I,gBAAhB;EACD,GAHD;;EAKA,SAAO5I,QAAP;EACD,CAngBgB,CAmgBdC,CAngBc,CAAjB;;;;;;;;"}