{
  "version": 3,
  "sources": ["/cdn/shop/t/6/assets/yamuri-seo-slideshow.js?ym_universal_section_version=20260721_1"],
  "sourcesContent": ["(function () {\n  'use strict';\n\n  if (window.__yamuriSeoSlideshowBundleLoaded) {\n    return;\n  }\n  window.__yamuriSeoSlideshowBundleLoaded = true;\n\n  var prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');\n\n  function compileShader(gl, type, source) {\n    var shader = gl.createShader(type);\n    gl.shaderSource(shader, source);\n    gl.compileShader(shader);\n    if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n      var error = gl.getShaderInfoLog(shader);\n      gl.deleteShader(shader);\n      throw new Error(error);\n    }\n    return shader;\n  }\n\n  function clamp(value, min, max) {\n    return Math.max(min, Math.min(max, value));\n  }\n\n  function SeoSlideshow(root) {\n    this.root = root;\n    this.frame = root.querySelector('[data-ym-hero-frame]');\n    this.canvas = root.querySelector('[data-ym-hero-canvas]');\n    this.slides = Array.prototype.slice.call(root.querySelectorAll('[data-ym-hero-slide]'));\n    this.fixedContents = Array.prototype.slice.call(root.querySelectorAll('[data-ym-hero-fixed-content]'));\n    this.slideContents = this.slides.map(function (slide) {\n      return slide.querySelector('.yamuri-seo-slideshow__content');\n    });\n    this.dots = Array.prototype.slice.call(root.querySelectorAll('[data-ym-hero-dot]'));\n    this.groupTabs = Array.prototype.slice.call(root.querySelectorAll('[data-ym-hero-group]'));\n    this.hotspots = Array.prototype.slice.call(root.querySelectorAll('[data-ym-hotspot]'));\n    this.hotspotCardLayer = root.querySelector('[data-ym-hotspot-card-layer]');\n    this.prevButton = root.querySelector('[data-ym-hero-prev]');\n    this.nextButton = root.querySelector('[data-ym-hero-next]');\n    this.index = 0;\n    this.targetIndex = 0;\n    this.activeGroup = '';\n    this.animating = false;\n    this.duration = 1200;\n    this.autoplay = false;\n    this.autoplayDelay = 5000;\n    this.effect = 'water_ripple';\n    this.groupEffect = 'water_ripple';\n    this.groupDuration = 1200;\n    this.groupTextAnimation = true;\n    this.groupTextShowDuration = 900;\n    this.groupTextHideDuration = 800;\n    this.groupTextSwapDelay = 650;\n    this.groupTextCharacterStagger = 24;\n    this.groupsEnabled = false;\n    this.defaultGroup = '';\n    this.respectReducedMotion = true;\n    this.textureCache = Object.create(null);\n    this.texturePromiseCache = Object.create(null);\n    this.textureUsage = [];\n    this.timer = null;\n    this.textAnimationTimer = null;\n    this.textCleanupTimer = null;\n    this.pendingSlideTextTarget = null;\n    this.transitionTimer = null;\n    this.imageLoadTimers = [];\n    this.imageLoadCleanups = [];\n    this.preloadTimer = null;\n    this.suspendTimer = null;\n    this.animationFrameIds = [];\n    this.eventBindings = [];\n    this.glReady = false;\n    this.webglFailed = false;\n    this.webglGeneration = 0;\n    this.designMode = Boolean(window.Shopify && window.Shopify.designMode);\n    this.isInViewport = !window.IntersectionObserver;\n    this.isNearViewport = !window.IntersectionObserver;\n    this.isDocumentVisible = !document.hidden;\n    this.pauseReasons = Object.create(null);\n    this.destroyed = false;\n    this.activeHotspot = null;\n    this.transitionToken = 0;\n    this.mobileMedia = window.matchMedia('(max-width: 767px)');\n\n    this.updateSettings();\n    this.prepareTextAnimation();\n    this.initEvents();\n    this.initHotspots();\n    if (this.designMode) {\n      this.initObserver();\n    }\n    this.initVisibilityObserver();\n    this.initResourceObserver();\n    this.setInitialActive();\n    this.enhanceInteractiveControls();\n    this.root.classList.add('is-initialized');\n    this.syncAutoplay();\n  }\n\n  SeoSlideshow.prototype.mapImagePoint = function (input) {\n    var sourceWidth = Number(input && input.sourceWidth);\n    var sourceHeight = Number(input && input.sourceHeight);\n    var frameWidth = Number(input && input.frameWidth);\n    var frameHeight = Number(input && input.frameHeight);\n    if (!(sourceWidth > 0 && sourceHeight > 0 && frameWidth > 0 && frameHeight > 0)) {\n      return { x: 0, y: 0, visible: false };\n    }\n\n    var scaleX = frameWidth / sourceWidth;\n    var scaleY = frameHeight / sourceHeight;\n    var scale = input.fit === 'contain' ? Math.min(scaleX, scaleY) : Math.max(scaleX, scaleY);\n    var renderedWidth = sourceWidth * scale;\n    var renderedHeight = sourceHeight * scale;\n    var positionX = clamp(Number(input.positionX), 0, 1);\n    var positionY = clamp(Number(input.positionY), 0, 1);\n    var pointX = clamp(Number(input.pointX), 0, 1);\n    var pointY = clamp(Number(input.pointY), 0, 1);\n    var offsetX = (frameWidth - renderedWidth) * (isNaN(positionX) ? 0.5 : positionX);\n    var offsetY = (frameHeight - renderedHeight) * (isNaN(positionY) ? 0.5 : positionY);\n    var x = sourceWidth * pointX * scale + offsetX;\n    var y = sourceHeight * pointY * scale + offsetY;\n\n    return {\n      x: x,\n      y: y,\n      visible: x >= 0 && x <= frameWidth && y >= 0 && y <= frameHeight\n    };\n  };\n\n  SeoSlideshow.prototype.parseObjectPosition = function (value) {\n    var tokens = String(value || '50% 50%').trim().split(/\\s+/);\n    var horizontal = { left: 0, center: 0.5, right: 1 };\n    var vertical = { top: 0, center: 0.5, bottom: 1 };\n    var parseToken = function (token, keywords) {\n      if (Object.prototype.hasOwnProperty.call(keywords, token)) {\n        return keywords[token];\n      }\n      if (/%$/.test(token)) {\n        return clamp(parseFloat(token) / 100, 0, 1);\n      }\n      return 0.5;\n    };\n    return {\n      x: parseToken(tokens[0], horizontal),\n      y: parseToken(tokens[1] || '50%', vertical)\n    };\n  };\n\n  SeoSlideshow.prototype.positionImageHotspots = function () {\n    if (!this.frame || !this.slides) {\n      return;\n    }\n    var self = this;\n    var frameRect = this.frame.getBoundingClientRect();\n    var mobile = this.mobileMedia ? this.mobileMedia.matches : window.matchMedia('(max-width: 767px)').matches;\n    var device = mobile ? 'mobile' : 'desktop';\n\n    this.slides.forEach(function (slide) {\n      var image = slide.querySelector('.yamuri-seo-slideshow__image');\n      if (!image || !image.naturalWidth || !image.naturalHeight) {\n        return;\n      }\n      var layout = self.getImageLayout(slide);\n      var position = layout.position;\n      var fit = layout.fit;\n      var slideIsActive = slide.classList && slide.classList.contains('is-active');\n\n      Array.prototype.forEach.call(slide.querySelectorAll('[data-ym-hotspot]'), function (hotspot) {\n        var pointX = parseFloat(hotspot.getAttribute('data-source-x-' + device));\n        var pointY = parseFloat(hotspot.getAttribute('data-source-y-' + device));\n        if (isNaN(pointX)) { pointX = 50; }\n        if (isNaN(pointY)) { pointY = 50; }\n        var mapped = self.mapImagePoint({\n          sourceWidth: image.naturalWidth,\n          sourceHeight: image.naturalHeight,\n          frameWidth: frameRect.width,\n          frameHeight: frameRect.height,\n          fit: fit,\n          positionX: position.x,\n          positionY: position.y,\n          pointX: pointX / 100,\n          pointY: pointY / 100\n        });\n        var cropped = !mapped.visible;\n        var button = hotspot.querySelector('[data-ym-hotspot-button]');\n\n        hotspot.style.setProperty('--ym-hotspot-rendered-x', mapped.x.toFixed(2) + 'px');\n        hotspot.style.setProperty('--ym-hotspot-rendered-y', mapped.y.toFixed(2) + 'px');\n        hotspot.classList.toggle('is-source-cropped', cropped);\n        if (cropped) {\n          hotspot.setAttribute('aria-hidden', 'true');\n          if (button) { button.setAttribute('tabindex', '-1'); }\n          if (self.activeHotspot === hotspot) { self.closeHotspot(hotspot, false); }\n        } else {\n          hotspot.removeAttribute('aria-hidden');\n          if (button && slideIsActive) { button.removeAttribute('tabindex'); }\n        }\n      });\n    });\n  };\n\n  SeoSlideshow.prototype.scheduleImageHotspotPositioning = function () {\n    var self = this;\n    if (!this.hotspotsEnabled || this.hotspotPositionFrame) {\n      return;\n    }\n    this.hotspotPositionFrame = this.requestFrame(function () {\n      self.hotspotPositionFrame = null;\n      self.positionImageHotspots();\n      if (self.activeHotspot) {\n        self.positionHotspotCard(self.activeHotspot);\n      }\n    });\n  };\n\n  SeoSlideshow.prototype.updateSettings = function () {\n    this.duration = parseInt(this.root.getAttribute('data-duration'), 10) || 1200;\n    this.autoplay = this.root.getAttribute('data-autoplay') === 'true';\n    this.autoplayDelay = parseInt(this.root.getAttribute('data-autoplay-delay'), 10) || 5000;\n    this.autoAdvanceGroups = this.root.getAttribute('data-auto-advance-groups') === 'true';\n    this.effect = this.root.getAttribute('data-effect') || 'water_ripple';\n    this.groupEffect = this.root.getAttribute('data-group-effect') || this.effect;\n    this.groupDuration = parseInt(this.root.getAttribute('data-group-duration'), 10) || this.duration;\n    this.groupTextAnimation = this.root.getAttribute('data-group-text-animation') !== 'false';\n    this.groupTextShowDuration = parseInt(this.root.getAttribute('data-group-text-show-duration'), 10) || 900;\n    this.groupTextHideDuration = parseInt(this.root.getAttribute('data-group-text-hide-duration'), 10) || 800;\n    this.groupTextSwapDelay = parseInt(this.root.getAttribute('data-group-text-swap-delay'), 10);\n    this.groupTextCharacterStagger = parseInt(this.root.getAttribute('data-group-text-character-stagger'), 10);\n    if (isNaN(this.groupTextSwapDelay)) {\n      this.groupTextSwapDelay = 650;\n    }\n    if (isNaN(this.groupTextCharacterStagger)) {\n      this.groupTextCharacterStagger = 24;\n    }\n    this.groupsEnabled = this.root.getAttribute('data-groups') === 'true';\n    this.defaultGroup = this.root.getAttribute('data-default-group') || '';\n    this.respectReducedMotion = this.root.getAttribute('data-respect-reduced-motion') !== 'false';\n    this.hotspotsEnabled = this.root.getAttribute('data-product-hotspots') === 'true';\n    this.root.style.setProperty('--ym-transition-duration', this.duration + 'ms');\n    this.root.style.setProperty('--ym-text-show-duration', this.groupTextShowDuration + 'ms');\n    this.root.style.setProperty('--ym-text-hide-duration', this.groupTextHideDuration + 'ms');\n    this.root.style.setProperty('--ym-text-char-stagger', this.groupTextCharacterStagger + 'ms');\n  };\n\n  SeoSlideshow.prototype.shouldReduceMotion = function () {\n    return this.respectReducedMotion && prefersReducedMotion.matches && !this.designMode;\n  };\n\n  SeoSlideshow.prototype.setPauseReason = function (reason, paused, suppressSync) {\n    if (!reason) {\n      return;\n    }\n    this.pauseReasons = this.pauseReasons || Object.create(null);\n    if (paused) {\n      this.pauseReasons[reason] = true;\n    } else {\n      delete this.pauseReasons[reason];\n    }\n    if (!suppressSync) {\n      this.syncAutoplay();\n    }\n  };\n\n  SeoSlideshow.prototype.hasPauseReasons = function () {\n    return Object.keys(this.pauseReasons || {}).length > 0;\n  };\n\n  SeoSlideshow.prototype.listen = function (target, type, handler, options) {\n    target.addEventListener(type, handler, options);\n    this.eventBindings.push({ target: target, type: type, handler: handler, options: options });\n  };\n\n  SeoSlideshow.prototype.requestFrame = function (callback) {\n    var self = this;\n    this.animationFrameIds = this.animationFrameIds || [];\n    var id = window.requestAnimationFrame(function (time) {\n      self.animationFrameIds = self.animationFrameIds.filter(function (frameId) { return frameId !== id; });\n      if (!self.destroyed) {\n        callback(time);\n      }\n    });\n    this.animationFrameIds.push(id);\n    return id;\n  };\n\n  SeoSlideshow.prototype.effectIndex = function (effect) {\n    switch (effect || this.effect) {\n      case 'dual_pulse':\n        return 1;\n      case 'led_ignite':\n        return 2;\n      case 'photon_spiral':\n        return 3;\n      case 'deep_diffusion':\n        return 4;\n      case 'water_ripple':\n      case 'wave':\n      default:\n        return 0;\n    }\n  };\n\n  SeoSlideshow.prototype.initEvents = function () {\n    var self = this;\n    var prepareIndex = function (index) {\n      self.prepareSlide(self.slides[index], 'auto').catch(function () {});\n    };\n\n    if (this.prevButton) {\n      this.listen(this.prevButton, 'click', function () {\n        self.goTo(self.getAdjacentIndex(-1), 0.32, 0.5);\n      });\n      this.listen(this.prevButton, 'pointerenter', function () { prepareIndex(self.getAdjacentIndex(-1)); });\n      this.listen(this.prevButton, 'focus', function () { prepareIndex(self.getAdjacentIndex(-1)); });\n      this.listen(this.prevButton, 'touchstart', function () { prepareIndex(self.getAdjacentIndex(-1)); }, { passive: true });\n    }\n\n    if (this.nextButton) {\n      this.listen(this.nextButton, 'click', function () {\n        self.goTo(self.getAdjacentIndex(1), 0.68, 0.5);\n      });\n      this.listen(this.nextButton, 'pointerenter', function () { prepareIndex(self.getAdjacentIndex(1)); });\n      this.listen(this.nextButton, 'focus', function () { prepareIndex(self.getAdjacentIndex(1)); });\n      this.listen(this.nextButton, 'touchstart', function () { prepareIndex(self.getAdjacentIndex(1)); }, { passive: true });\n    }\n\n    this.dots.forEach(function (dot) {\n      self.listen(dot, 'click', function () {\n        var index = parseInt(dot.getAttribute('data-index'), 10);\n        var group = dot.getAttribute('data-group') || '';\n        if (self.groupsEnabled && group && group !== self.getActiveGroup()) {\n          self.switchGroup(group);\n        } else {\n          self.goTo(index, 0.5, 0.5);\n        }\n      });\n      self.listen(dot, 'keydown', function (event) {\n        self.handleTabKeydown(event, self.dots, function (targetDot) {\n          self.goTo(parseInt(targetDot.getAttribute('data-index'), 10), 0.5, 0.5);\n        });\n      });\n      self.listen(dot, 'pointerenter', function () { prepareIndex(parseInt(dot.getAttribute('data-index'), 10)); });\n      self.listen(dot, 'focus', function () { prepareIndex(parseInt(dot.getAttribute('data-index'), 10)); });\n      self.listen(dot, 'touchstart', function () { prepareIndex(parseInt(dot.getAttribute('data-index'), 10)); }, { passive: true });\n    });\n\n    this.groupTabs.forEach(function (tab) {\n      self.listen(tab, 'click', function () {\n        self.switchGroup(tab.getAttribute('data-group'));\n      });\n      self.listen(tab, 'keydown', function (event) {\n        self.handleTabKeydown(event, self.groupTabs, function (targetTab) {\n          self.switchGroup(targetTab.getAttribute('data-group'));\n        });\n      });\n      self.listen(tab, 'pointerenter', function () {\n        self.prepareGroup(tab.getAttribute('data-group')).catch(function () {});\n      });\n      self.listen(tab, 'touchstart', function () {\n        self.prepareGroup(tab.getAttribute('data-group')).catch(function () {});\n      }, { passive: true });\n      self.listen(tab, 'focus', function () {\n        self.prepareGroup(tab.getAttribute('data-group')).catch(function () {});\n      });\n    });\n\n    if (!this.designMode) {\n      this.listen(this.root, 'mouseenter', function () {\n        self.setPauseReason('hover', true);\n      });\n\n      this.listen(this.root, 'mouseleave', function () {\n        self.setPauseReason('hover', false);\n      });\n\n      this.listen(this.root, 'focusin', function () {\n        self.setPauseReason('focusWithin', true);\n      });\n\n      this.listen(this.root, 'focusout', function (event) {\n        if (!event.relatedTarget || !self.root.contains(event.relatedTarget)) {\n          self.setPauseReason('focusWithin', false);\n        }\n      });\n    }\n\n    this.listen(window, 'resize', function () {\n      self.resizeCanvas();\n      self.scheduleImageHotspotPositioning();\n      if (self.activeHotspot) {\n        self.positionHotspotCard(self.activeHotspot);\n      }\n    });\n\n    var mediaChangeHandler = function () {\n      self.handleMediaChange();\n    };\n    if (this.mobileMedia.addEventListener) {\n      this.listen(this.mobileMedia, 'change', mediaChangeHandler);\n    } else if (this.mobileMedia.addListener) {\n      this.mobileMedia.addListener(mediaChangeHandler);\n      this.eventBindings.push({\n        target: this.mobileMedia,\n        type: 'legacy-media-change',\n        handler: mediaChangeHandler,\n        options: undefined\n      });\n    }\n\n    var reducedMotionHandler = function () {\n      if (self.shouldReduceMotion()) {\n        self.transitionToken += 1;\n        if (self.animating) {\n          self.recoverCurrentState();\n        }\n        self.releaseWebgl();\n      }\n      self.syncAutoplay();\n    };\n    if (prefersReducedMotion.addEventListener) {\n      this.listen(prefersReducedMotion, 'change', reducedMotionHandler);\n    } else if (prefersReducedMotion.addListener) {\n      prefersReducedMotion.addListener(reducedMotionHandler);\n      this.eventBindings.push({\n        target: prefersReducedMotion,\n        type: 'legacy-media-change',\n        handler: reducedMotionHandler,\n        options: undefined\n      });\n    }\n\n    this.listen(document, 'visibilitychange', function () {\n      self.handleVisibilityChange();\n    });\n\n    this.listen(this.root, 'click', function (event) {\n      var hotspotButton = event.target.closest('[data-ym-hotspot-button]');\n      var hotspotClose = event.target.closest('[data-ym-hotspot-close]');\n      var hotspot = event.target.closest('[data-ym-hotspot]');\n      if (hotspotClose && !hotspot) {\n        hotspot = self.activeHotspot;\n      }\n      if (hotspotClose && hotspot) {\n        event.preventDefault();\n        self.closeHotspot(hotspot, true);\n        return;\n      }\n      if (hotspotButton && hotspot) {\n        event.preventDefault();\n        if (hotspot === self.activeHotspot) {\n          self.closeHotspot(hotspot, false);\n        } else {\n          self.openHotspot(hotspot);\n        }\n        return;\n      }\n      if (event.target.closest('[data-ym-hotspot-card]')) {\n        return;\n      }\n      if (self.activeHotspot) {\n        self.closeAllHotspots(false);\n        return;\n      }\n      if (!event.target.closest('[data-ym-hero-prev], [data-ym-hero-next], [data-ym-hero-dot], [data-ym-hero-group], [data-ym-hotspot], a')) {\n        var rect = self.frame.getBoundingClientRect();\n        self.goTo(self.getAdjacentIndex(1), (event.clientX - rect.left) / rect.width, (event.clientY - rect.top) / rect.height);\n      }\n    });\n  };\n\n  SeoSlideshow.prototype.initHotspots = function () {\n    var self = this;\n    if (!this.hotspotsEnabled || !this.hotspots.length) {\n      return;\n    }\n    this.root.classList.add('is-hotspot-enhanced');\n    this.slides.forEach(function (slide) {\n      var image = slide.querySelector('.yamuri-seo-slideshow__image');\n      if (image) {\n        self.listen(image, 'load', function () { self.scheduleImageHotspotPositioning(); });\n      }\n    });\n    if (window.ResizeObserver && this.frame) {\n      this.hotspotResizeObserver = new window.ResizeObserver(function () {\n        self.scheduleImageHotspotPositioning();\n      });\n      this.hotspotResizeObserver.observe(this.frame);\n    }\n    this.scheduleImageHotspotPositioning();\n    this.listen(document, 'keydown', function (event) {\n      if (event.key === 'Escape' && self.activeHotspot) {\n        self.closeHotspot(self.activeHotspot, true);\n      }\n    });\n    this.listen(document, 'pointerdown', function (event) {\n      if (self.activeHotspot && !self.root.contains(event.target)) {\n        self.closeHotspot(self.activeHotspot, false);\n      }\n    });\n  };\n\n  SeoSlideshow.prototype.getHotspotCard = function (hotspot) {\n    if (!hotspot) {\n      return null;\n    }\n    var button = hotspot.querySelector('[data-ym-hotspot-button]');\n    var cardId = button ? button.getAttribute('aria-controls') : '';\n    if (cardId && this.root.querySelector) {\n      var cardById = this.root.querySelector('#' + cardId);\n      if (cardById) {\n        return cardById;\n      }\n    }\n    return hotspot.querySelector('[data-ym-hotspot-card]');\n  };\n\n  SeoSlideshow.prototype.resolveHotspotDirection = function (hotspot) {\n    var requested = hotspot.getAttribute('data-direction') || 'auto';\n    if (requested !== 'auto') {\n      return requested;\n    }\n    var frameRect = this.frame.getBoundingClientRect();\n    var button = hotspot.querySelector('[data-ym-hotspot-button]');\n    var card = this.getHotspotCard(hotspot);\n    var buttonRect = button.getBoundingClientRect();\n    var cardWidth = card ? (card.offsetWidth || 280) : 280;\n    var cardHeight = card ? (card.offsetHeight || 180) : 180;\n    var spaces = {\n      right: frameRect.right - buttonRect.right,\n      left: buttonRect.left - frameRect.left,\n      down: frameRect.bottom - buttonRect.bottom,\n      up: buttonRect.top - frameRect.top\n    };\n    var required = { right: cardWidth + 16, left: cardWidth + 16, down: cardHeight + 16, up: cardHeight + 16 };\n    var directions = ['right', 'left', 'down', 'up'];\n    var fitting = directions.filter(function (direction) { return spaces[direction] >= required[direction]; });\n    var candidates = fitting.length ? fitting : directions;\n    candidates.sort(function (a, b) { return spaces[b] - spaces[a]; });\n    return candidates[0];\n  };\n\n  SeoSlideshow.prototype.positionHotspotCard = function (hotspot) {\n    var card = this.getHotspotCard(hotspot);\n    var button = hotspot.querySelector('[data-ym-hotspot-button]');\n    if (!card || !button) {\n      return;\n    }\n    hotspot.setAttribute('data-resolved-direction', this.resolveHotspotDirection(hotspot));\n    card.style.removeProperty('left');\n    card.style.removeProperty('top');\n    card.style.removeProperty('width');\n    card.style.removeProperty('margin-left');\n    card.style.removeProperty('margin-top');\n    card.style.removeProperty('right');\n    card.style.removeProperty('bottom');\n    card.style.removeProperty('transform');\n    if (this.hotspotCardLayer && card.parentNode === this.hotspotCardLayer) {\n      var portalFrameRect = this.frame.getBoundingClientRect();\n      var portalButtonRect = button.getBoundingClientRect();\n      var isMobile = this.mobileMedia ? this.mobileMedia.matches : window.matchMedia('(max-width: 767px)').matches;\n      var portalCardWidth = isMobile ? Math.max(0, portalFrameRect.width - 32) : (card.offsetWidth || 280);\n      if (isMobile) {\n        card.style.width = portalCardWidth + 'px';\n      }\n      var portalCardHeight = card.offsetHeight || 180;\n      var portalLeft;\n      var portalTop;\n      var direction = hotspot.getAttribute('data-resolved-direction');\n      var buttonLeft = portalButtonRect.left - portalFrameRect.left;\n      var buttonTop = portalButtonRect.top - portalFrameRect.top;\n      var buttonCenterX = buttonLeft + (portalButtonRect.width / 2);\n      var buttonCenterY = buttonTop + (portalButtonRect.height / 2);\n      var gap = 10;\n\n      if (isMobile) {\n        portalLeft = 16;\n        portalTop = portalFrameRect.height - portalCardHeight - 92;\n      } else if (direction === 'left') {\n        portalLeft = buttonLeft - portalCardWidth - gap;\n        portalTop = buttonCenterY - (portalCardHeight / 2);\n      } else if (direction === 'up') {\n        portalLeft = buttonCenterX - (portalCardWidth / 2);\n        portalTop = buttonTop - portalCardHeight - gap;\n      } else if (direction === 'down') {\n        portalLeft = buttonCenterX - (portalCardWidth / 2);\n        portalTop = buttonTop + portalButtonRect.height + gap;\n      } else {\n        portalLeft = buttonLeft + portalButtonRect.width + gap;\n        portalTop = buttonCenterY - (portalCardHeight / 2);\n      }\n\n      portalLeft = clamp(portalLeft, 16, Math.max(16, portalFrameRect.width - portalCardWidth - 16));\n      portalTop = clamp(portalTop, 16, Math.max(16, portalFrameRect.height - portalCardHeight - 16));\n      card.style.left = portalLeft + 'px';\n      card.style.top = portalTop + 'px';\n      return;\n    }\n    if (this.mobileMedia ? this.mobileMedia.matches : window.matchMedia('(max-width: 767px)').matches) {\n      var frameRect = this.frame.getBoundingClientRect();\n      var buttonRect = button.getBoundingClientRect();\n      var cardWidth = Math.max(0, frameRect.width - 32);\n      var desiredTop = clamp(frameRect.bottom - card.offsetHeight - 92, frameRect.top + 16, frameRect.bottom - card.offsetHeight - 16);\n      card.style.left = (frameRect.left - buttonRect.left + 16) + 'px';\n      card.style.top = (desiredTop - buttonRect.top) + 'px';\n      card.style.width = cardWidth + 'px';\n    } else if (card.getBoundingClientRect) {\n      var desktopFrameRect = this.frame.getBoundingClientRect();\n      var cardRect = card.getBoundingClientRect();\n      var shiftX = 0;\n      var shiftY = 0;\n      if (cardRect.left < desktopFrameRect.left + 16) {\n        shiftX = desktopFrameRect.left + 16 - cardRect.left;\n      } else if (cardRect.right > desktopFrameRect.right - 16) {\n        shiftX = desktopFrameRect.right - 16 - cardRect.right;\n      }\n      if (cardRect.top < desktopFrameRect.top + 16) {\n        shiftY = desktopFrameRect.top + 16 - cardRect.top;\n      } else if (cardRect.bottom > desktopFrameRect.bottom - 16) {\n        shiftY = desktopFrameRect.bottom - 16 - cardRect.bottom;\n      }\n      card.style.marginLeft = shiftX + 'px';\n      card.style.marginTop = shiftY + 'px';\n    }\n  };\n\n  SeoSlideshow.prototype.openHotspot = function (hotspot) {\n    if (!hotspot) {\n      return;\n    }\n    this.closeAllHotspots(false, true);\n    var button = hotspot.querySelector('[data-ym-hotspot-button]');\n    var card = this.getHotspotCard(hotspot);\n    if (!button || !card) {\n      return;\n    }\n    card.hidden = false;\n    if (this.hotspotCardLayer && this.hotspotCardLayer.appendChild) {\n      this.hotspotCardLayer.appendChild(card);\n    }\n    hotspot.classList.add('is-open');\n    button.setAttribute('aria-expanded', 'true');\n    this.activeHotspot = hotspot;\n    this.setPauseReason('hotspot', true);\n    this.positionHotspotCard(hotspot);\n  };\n\n  SeoSlideshow.prototype.closeHotspot = function (hotspot, returnFocus, suppressResume) {\n    if (!hotspot) {\n      return;\n    }\n    var button = hotspot.querySelector('[data-ym-hotspot-button]');\n    var card = this.getHotspotCard(hotspot);\n    if (card) {\n      card.hidden = true;\n      card.style.removeProperty('left');\n      card.style.removeProperty('top');\n      card.style.removeProperty('width');\n      card.style.removeProperty('margin-left');\n      card.style.removeProperty('margin-top');\n      card.style.removeProperty('right');\n      card.style.removeProperty('bottom');\n      card.style.removeProperty('transform');\n      if (this.hotspotCardLayer && card.parentNode === this.hotspotCardLayer && hotspot.appendChild) {\n        hotspot.appendChild(card);\n      }\n    }\n    hotspot.classList.remove('is-open');\n    if (button) {\n      button.setAttribute('aria-expanded', 'false');\n      if (returnFocus) {\n        button.focus();\n      }\n    }\n    if (this.activeHotspot === hotspot) {\n      this.activeHotspot = null;\n    }\n    this.setPauseReason('hotspot', false, Boolean(suppressResume));\n  };\n\n  SeoSlideshow.prototype.closeAllHotspots = function (returnFocus, suppressResume) {\n    if (this.activeHotspot) {\n      this.closeHotspot(this.activeHotspot, returnFocus, suppressResume);\n    }\n  };\n\n  SeoSlideshow.prototype.handleTabKeydown = function (event, tabs, activate) {\n    var keys = ['ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown', 'Home', 'End'];\n    if (keys.indexOf(event.key) === -1) {\n      return;\n    }\n    var visibleTabs = tabs.filter(function (tab) {\n      return tab.getAttribute('aria-hidden') !== 'true' && !tab.classList.contains('is-group-hidden');\n    });\n    if (!visibleTabs.length) {\n      return;\n    }\n    var current = visibleTabs.indexOf(event.currentTarget);\n    if (current < 0) {\n      current = 0;\n    }\n    var targetIndex = current;\n    if (event.key === 'Home') {\n      targetIndex = 0;\n    } else if (event.key === 'End') {\n      targetIndex = visibleTabs.length - 1;\n    } else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n      targetIndex = (current - 1 + visibleTabs.length) % visibleTabs.length;\n    } else {\n      targetIndex = (current + 1) % visibleTabs.length;\n    }\n    event.preventDefault();\n    visibleTabs[targetIndex].focus();\n    activate(visibleTabs[targetIndex]);\n  };\n\n  SeoSlideshow.prototype.handleVisibilityChange = function () {\n    this.isDocumentVisible = !document.hidden;\n    this.syncAutoplay();\n  };\n\n  SeoSlideshow.prototype.handleIntersection = function (entries) {\n    var entry = entries[0];\n    this.isInViewport = Boolean(entry && entry.isIntersecting && entry.intersectionRatio > 0);\n    this.syncAutoplay();\n  };\n\n  SeoSlideshow.prototype.initVisibilityObserver = function () {\n    var self = this;\n    if (!window.IntersectionObserver) {\n      return;\n    }\n    this.visibilityObserver = new window.IntersectionObserver(function (entries) {\n      self.handleIntersection(entries);\n    }, { threshold: 0.01 });\n    this.visibilityObserver.observe(this.root);\n  };\n\n  SeoSlideshow.prototype.handleResourceIntersection = function (entries) {\n    var entry = entries[0];\n    this.isNearViewport = Boolean(entry && entry.isIntersecting);\n    if (this.isNearViewport) {\n      window.clearTimeout(this.suspendTimer);\n      this.suspendTimer = null;\n      this.prepareSlide(this.slides[this.index], 'auto').catch(function () {});\n    } else {\n      this.scheduleResourceSuspend();\n    }\n  };\n\n  SeoSlideshow.prototype.initResourceObserver = function () {\n    var self = this;\n    if (!window.IntersectionObserver) {\n      this.isNearViewport = true;\n      return;\n    }\n    this.resourceObserver = new window.IntersectionObserver(function (entries) {\n      self.handleResourceIntersection(entries);\n    }, { rootMargin: '500px 0px', threshold: 0 });\n    this.resourceObserver.observe(this.root);\n  };\n\n  SeoSlideshow.prototype.scheduleResourceSuspend = function () {\n    var self = this;\n    window.clearTimeout(this.suspendTimer);\n    this.suspendTimer = window.setTimeout(function () {\n      self.suspendTimer = null;\n      if (!self.destroyed && !self.isNearViewport && !self.animating) {\n        self.releaseWebgl();\n      }\n    }, 20000);\n  };\n\n  SeoSlideshow.prototype.recoverCurrentState = function () {\n    var self = this;\n    var activeGroup = this.getActiveGroup();\n    window.clearTimeout(this.transitionTimer);\n    window.clearTimeout(this.textAnimationTimer);\n    window.clearTimeout(this.textCleanupTimer);\n    this.transitionTimer = null;\n    this.textAnimationTimer = null;\n    this.textCleanupTimer = null;\n    this.animating = false;\n    this.targetIndex = this.index;\n    this.pendingFixedGroup = null;\n    this.pendingSlideTextTarget = null;\n    this.root.classList.remove('is-transitioning', 'is-css-transitioning');\n    this.slides.forEach(function (slide) {\n      slide.classList.remove('is-revealing');\n      var content = slide.querySelector('.yamuri-seo-slideshow__content');\n      if (content) {\n        content.classList.remove('is-text-entering', 'is-text-leaving');\n      }\n    });\n    this.fixedContents.forEach(function (content) {\n      var active = content.getAttribute('data-group') === activeGroup;\n      content.classList.remove('is-text-entering', 'is-text-leaving');\n      content.classList.toggle('is-active', active);\n      self.setElementAvailability(content, active, !active);\n    });\n    this.setActive(this.index, activeGroup);\n  };\n\n  SeoSlideshow.prototype.handleMediaChange = function () {\n    this.transitionToken += 1;\n    this.slides.forEach(function (slide) {\n      if (slide.__ymImageWaitCleanup) {\n        slide.__ymImageWaitCleanup();\n      }\n      slide.__ymImagePromise = null;\n    });\n    this.recoverCurrentState();\n    this.releaseWebgl();\n    var self = this;\n    this.requestFrame(function () {\n      self.prepareSlide(self.slides[self.index], 'eager').catch(function () {});\n    });\n    this.resizeCanvas();\n    this.scheduleImageHotspotPositioning();\n    if (this.activeHotspot) {\n      this.positionHotspotCard(this.activeHotspot);\n    }\n    this.syncAutoplay();\n  };\n\n  SeoSlideshow.prototype.initObserver = function () {\n    var self = this;\n    if (!window.MutationObserver) {\n      return;\n    }\n\n    this.observer = new MutationObserver(function (mutations) {\n      var shouldRefresh = mutations.some(function (mutation) {\n        return [\n          'data-autoplay',\n          'data-autoplay-delay',\n          'data-auto-advance-groups',\n          'data-duration',\n          'data-effect',\n          'data-group-effect',\n          'data-group-duration',\n          'data-group-text-animation',\n          'data-group-text-show-duration',\n          'data-group-text-hide-duration',\n          'data-group-text-swap-delay',\n          'data-group-text-character-stagger',\n          'data-groups',\n          'data-default-group',\n          'data-respect-reduced-motion'\n        ].indexOf(mutation.attributeName) !== -1;\n      });\n\n      if (!shouldRefresh) {\n        return;\n      }\n\n      var groupsChanged = mutations.some(function (mutation) {\n        return mutation.attributeName === 'data-groups' || mutation.attributeName === 'data-default-group';\n      });\n      self.updateSettings();\n      if (self.animating && (groupsChanged || self.shouldReduceMotion())) {\n        self.transitionToken += 1;\n        self.recoverCurrentState();\n      } else if (groupsChanged) {\n        self.setActive(self.index, self.getActiveGroup());\n      }\n      self.stopAutoplay();\n      self.syncAutoplay();\n    });\n\n    this.observer.observe(this.root, {\n      attributes: true,\n      attributeFilter: ['data-autoplay', 'data-autoplay-delay', 'data-auto-advance-groups', 'data-duration', 'data-effect', 'data-group-effect', 'data-group-duration', 'data-group-text-animation', 'data-group-text-show-duration', 'data-group-text-hide-duration', 'data-group-text-swap-delay', 'data-group-text-character-stagger', 'data-groups', 'data-default-group', 'data-respect-reduced-motion']\n    });\n  };\n\n  SeoSlideshow.prototype.getSlideGroup = function (slide) {\n    return slide ? (slide.getAttribute('data-group') || 'default') : 'default';\n  };\n\n  SeoSlideshow.prototype.getGroups = function () {\n    var groups = [];\n    var seen = Object.create(null);\n    var self = this;\n    this.slides.forEach(function (slide) {\n      var group = self.getSlideGroup(slide);\n      if (!seen[group]) {\n        seen[group] = true;\n        groups.push(group);\n      }\n    });\n    return groups;\n  };\n\n  SeoSlideshow.prototype.hasGroup = function (group) {\n    return this.getGroups().indexOf(group) !== -1;\n  };\n\n  SeoSlideshow.prototype.getGroupIndexes = function (group) {\n    var self = this;\n    return this.slides.reduce(function (indexes, slide, index) {\n      if (!self.groupsEnabled || self.getSlideGroup(slide) === group) {\n        indexes.push(index);\n      }\n      return indexes;\n    }, []);\n  };\n\n  SeoSlideshow.prototype.getActiveGroup = function () {\n    if (!this.groupsEnabled) {\n      return '';\n    }\n    if (this.activeGroup && this.hasGroup(this.activeGroup)) {\n      return this.activeGroup;\n    }\n    if (this.defaultGroup && this.hasGroup(this.defaultGroup)) {\n      return this.defaultGroup;\n    }\n    return this.getGroups()[0] || '';\n  };\n\n  SeoSlideshow.prototype.setInitialActive = function () {\n    var group = this.getActiveGroup();\n    var indexes = this.getGroupIndexes(group);\n    var initialIndex = indexes.length ? indexes[0] : 0;\n    this.setActive(initialIndex, group);\n  };\n\n  SeoSlideshow.prototype.resolveActiveState = function (index, requestedGroup) {\n    if (!this.slides.length) {\n      return { index: 0, group: '' };\n    }\n\n    var normalizedIndex = parseInt(index, 10);\n    if (isNaN(normalizedIndex)) {\n      normalizedIndex = this.index || 0;\n    }\n    normalizedIndex = (normalizedIndex + this.slides.length) % this.slides.length;\n\n    if (!this.groupsEnabled) {\n      return { index: normalizedIndex, group: '' };\n    }\n\n    var targetGroup = requestedGroup;\n    if (!targetGroup && this.slides[normalizedIndex]) {\n      targetGroup = this.getSlideGroup(this.slides[normalizedIndex]);\n    }\n    if (!targetGroup || !this.hasGroup(targetGroup)) {\n      targetGroup = this.getActiveGroup();\n    }\n    var indexes = this.getGroupIndexes(targetGroup);\n    if (indexes.indexOf(normalizedIndex) === -1) {\n      normalizedIndex = indexes.length ? indexes[0] : 0;\n    }\n    return { index: normalizedIndex, group: targetGroup };\n  };\n\n  SeoSlideshow.prototype.getAdjacentIndex = function (direction) {\n    var group = this.getActiveGroup();\n    var indexes = this.getGroupIndexes(group);\n    if (!indexes.length) {\n      return this.index;\n    }\n    var currentPosition = indexes.indexOf(this.index);\n    if (currentPosition === -1) {\n      currentPosition = 0;\n    }\n    return indexes[(currentPosition + direction + indexes.length) % indexes.length];\n  };\n\n  SeoSlideshow.prototype.switchGroup = function (group) {\n    if (!this.groupsEnabled || !group || group === this.getActiveGroup() || this.animating) {\n      return;\n    }\n    var indexes = this.getGroupIndexes(group);\n    if (!indexes.length) {\n      return;\n    }\n    this.prepareGroup(group).catch(function () {});\n    this.goTo(indexes[0], 0.5, 0.5, this.groupEffect, group, this.groupDuration);\n  };\n\n  SeoSlideshow.prototype.getImageLayout = function (slide) {\n    var mobile = this.mobileMedia ? this.mobileMedia.matches : window.matchMedia('(max-width: 767px)').matches;\n    var device = mobile ? 'mobile' : 'desktop';\n    var fallbackDevice = mobile ? 'desktop' : 'mobile';\n    var fit = slide ? (slide.getAttribute('data-' + device + '-fit') || slide.getAttribute('data-' + fallbackDevice + '-fit') || 'cover') : 'cover';\n    var positionValue = slide ? (slide.getAttribute('data-' + device + '-position') || slide.getAttribute('data-' + fallbackDevice + '-position') || 'center center') : 'center center';\n    var image = slide ? slide.querySelector('.yamuri-seo-slideshow__image') : null;\n    return {\n      mobile: mobile,\n      image: image,\n      url: slide ? (slide.getAttribute('data-' + device + '-src') || slide.getAttribute('data-' + fallbackDevice + '-src') || '') : '',\n      fit: fit === 'contain' ? 'contain' : 'cover',\n      fitMode: fit === 'contain' ? 1 : 0,\n      position: this.parseObjectPosition(positionValue)\n    };\n  };\n\n  SeoSlideshow.prototype.pickImageUrl = function (slide) {\n    var layout = this.getImageLayout(slide);\n    if (layout.image && layout.image.getAttribute('data-ym-image-hydrated') === 'true' && layout.image.currentSrc) {\n      return layout.image.currentSrc;\n    }\n    return layout.url;\n  };\n\n  SeoSlideshow.prototype.pickImageFit = function (slide) {\n    return this.getImageLayout(slide).fitMode;\n  };\n\n  SeoSlideshow.prototype.waitForImage = function (image, timeout, owner) {\n    var self = this;\n    if (!image) {\n      return Promise.reject(new Error('Slideshow image is unavailable'));\n    }\n    return new Promise(function (resolve, reject) {\n      var settled = false;\n      var timer = null;\n      var cleanup = null;\n      var finish = function (error) {\n        if (settled) {\n          return;\n        }\n        settled = true;\n        if (image.removeEventListener) {\n          image.removeEventListener('load', onLoad);\n          image.removeEventListener('error', onError);\n        }\n        if (cleanup) {\n          self.imageLoadCleanups = self.imageLoadCleanups.filter(function (callback) { return callback !== cleanup; });\n        }\n        if (owner && owner.__ymImageWaitCleanup === cleanup) {\n          owner.__ymImageWaitCleanup = null;\n        }\n        if (timer) {\n          window.clearTimeout(timer);\n          self.imageLoadTimers = self.imageLoadTimers.filter(function (id) { return id !== timer; });\n        }\n        if (error || self.destroyed || !image.naturalWidth) {\n          reject(error || new Error('Slideshow image failed to load'));\n          return;\n        }\n        var decoded = image.decode ? image.decode().catch(function () {}) : Promise.resolve();\n        decoded.then(function () {\n          if (self.destroyed) {\n            reject(new Error('Slideshow was destroyed'));\n          } else {\n            resolve(image);\n          }\n        });\n      };\n      var onLoad = function () { finish(); };\n      var onError = function () { finish(new Error('Slideshow image failed to load')); };\n      cleanup = function () { finish(new Error('Slideshow image load was cancelled')); };\n      if (owner) {\n        if (owner.__ymImageWaitCleanup) {\n          owner.__ymImageWaitCleanup();\n        }\n        owner.__ymImageWaitCleanup = cleanup;\n      }\n      if (image.complete && image.naturalWidth) {\n        finish();\n        return;\n      }\n      image.addEventListener('load', onLoad);\n      image.addEventListener('error', onError);\n      self.imageLoadCleanups.push(cleanup);\n      timer = window.setTimeout(function () {\n        finish(new Error('Slideshow image load timed out'));\n      }, timeout || 5000);\n      self.imageLoadTimers.push(timer);\n    });\n  };\n\n  SeoSlideshow.prototype.hydrateSlideImage = function (slide, priority) {\n    if (!slide) {\n      return Promise.reject(new Error('Slideshow slide is unavailable'));\n    }\n    var image = slide.querySelector('.yamuri-seo-slideshow__image');\n    if (!image) {\n      return Promise.resolve(null);\n    }\n    image.loading = 'eager';\n    if (priority === 'eager') {\n      image.fetchPriority = 'high';\n    }\n    if (slide.__ymImagePromise) {\n      return slide.__ymImagePromise;\n    }\n    var picture = image.parentElement;\n    if (picture) {\n      Array.prototype.forEach.call(picture.querySelectorAll('source[data-ym-srcset]'), function (source) {\n        source.setAttribute('srcset', source.getAttribute('data-ym-srcset'));\n        source.setAttribute('sizes', source.getAttribute('data-ym-sizes') || '100vw');\n        source.removeAttribute('data-ym-srcset');\n        source.removeAttribute('data-ym-sizes');\n      });\n    }\n    if (image.getAttribute('data-ym-image-hydrated') !== 'true') {\n      var srcset = image.getAttribute('data-ym-srcset');\n      var src = image.getAttribute('data-ym-src');\n      if (srcset) {\n        image.setAttribute('srcset', srcset);\n        image.setAttribute('sizes', image.getAttribute('data-ym-sizes') || '100vw');\n      }\n      if (src) {\n        image.setAttribute('src', src);\n      }\n      image.setAttribute('data-ym-image-hydrated', 'true');\n      image.removeAttribute('data-ym-srcset');\n      image.removeAttribute('data-ym-src');\n      image.removeAttribute('data-ym-sizes');\n    }\n    var self = this;\n    var imagePromise = this.waitForImage(image, 5000, slide).then(function (loadedImage) {\n      self.scheduleImageHotspotPositioning();\n      return loadedImage;\n    }).catch(function (error) {\n      if (slide.__ymImagePromise === imagePromise) {\n        slide.__ymImagePromise = null;\n      }\n      throw error;\n    });\n    slide.__ymImagePromise = imagePromise;\n    return imagePromise;\n  };\n\n  SeoSlideshow.prototype.prepareSlide = function (slide, priority) {\n    return this.hydrateSlideImage(slide, priority || 'auto');\n  };\n\n  SeoSlideshow.prototype.prepareNext = function () {\n    if (!this.slides.length || !this.hasAutoplayTarget()) {\n      return Promise.resolve(null);\n    }\n    var target = this.getAutoplayTargetState();\n    return this.prepareSlide(this.slides[target.index], 'auto');\n  };\n\n  SeoSlideshow.prototype.prepareGroup = function (group) {\n    var indexes = this.getGroupIndexes(group);\n    if (!indexes.length) {\n      return Promise.resolve(null);\n    }\n    return this.prepareSlide(this.slides[indexes[0]], 'auto');\n  };\n\n  SeoSlideshow.prototype.ensureWebgl = function (effect) {\n    if (this.glReady) {\n      return true;\n    }\n    if (this.webglFailed) {\n      return false;\n    }\n    effect = effect || this.effect;\n    var connection = window.navigator && window.navigator.connection;\n    if (!this.canvas || !this.isNearViewport || effect === 'fade' || this.shouldReduceMotion() || (connection && connection.saveData) || (window.navigator && window.navigator.deviceMemory && window.navigator.deviceMemory <= 2)) {\n      return false;\n    }\n\n    var gl = null;\n    var vertexShader = null;\n    var fragmentShader = null;\n    var program = null;\n    var buffer = null;\n    try {\n      gl = this.canvas.getContext('webgl', {\n        alpha: true,\n        antialias: false,\n        preserveDrawingBuffer: false\n      });\n\n      if (!gl) {\n        this.webglFailed = true;\n        return false;\n      }\n\n      var vertexSource = [\n        'attribute vec2 a_position;',\n        'varying vec2 v_uv;',\n        'void main(){',\n        '  v_uv = a_position * .5 + .5;',\n        '  gl_Position = vec4(a_position, 0.0, 1.0);',\n        '}'\n      ].join('\\n');\n\n      var fragmentSource = [\n        'precision highp float;',\n        'varying vec2 v_uv;',\n        'uniform sampler2D u_from;',\n        'uniform sampler2D u_to;',\n        'uniform vec2 u_resolution;',\n        'uniform vec2 u_center;',\n        'uniform float u_progress;',\n        'uniform float u_intensity;',\n        'uniform float u_maxDist;',\n        'uniform float u_fromAspect;',\n        'uniform float u_toAspect;',\n        'uniform int u_fromFit;',\n        'uniform int u_toFit;',\n        'uniform vec2 u_fromPosition;',\n        'uniform vec2 u_toPosition;',\n        'uniform int u_effect;',\n        'const float PI = 3.14159265359;',\n        'float ease(float t){return t*t*(3.0-2.0*t);}',\n        'vec2 aspectPoint(vec2 uv){',\n        '  vec2 p = uv - u_center;',\n        '  p.x *= u_resolution.x / u_resolution.y;',\n        '  return p;',\n        '}',\n        'vec4 sampleCover(sampler2D tex, vec2 uv, float texAspect, vec2 position){',\n        '  float canvasAspect = u_resolution.x / u_resolution.y;',\n        '  vec2 scale = vec2(1.0);',\n        '  if(canvasAspect > texAspect){ scale.y = texAspect / canvasAspect; }',\n        '  else { scale.x = canvasAspect / texAspect; }',\n        '  vec2 origin = (vec2(1.0) - scale) * position;',\n        '  vec2 tuv = uv * scale + origin;',\n        '  return texture2D(tex, clamp(tuv, 0.0, 1.0));',\n        '}',\n        'vec4 sampleContain(sampler2D tex, vec2 uv, float texAspect, vec2 position){',\n        '  float canvasAspect = u_resolution.x / u_resolution.y;',\n        '  vec2 scale = vec2(1.0);',\n        '  if(canvasAspect > texAspect){ scale.x = texAspect / canvasAspect; }',\n        '  else { scale.y = canvasAspect / texAspect; }',\n        '  vec2 origin = (vec2(1.0) - scale) * position;',\n        '  vec2 tuv = (uv - origin) / scale;',\n        '  float inside = step(0.0, tuv.x) * step(tuv.x, 1.0) * step(0.0, tuv.y) * step(tuv.y, 1.0);',\n        '  vec4 c = texture2D(tex, clamp(tuv, 0.0, 1.0));',\n        '  return vec4(mix(vec3(.0666667), c.rgb, inside), 1.0);',\n        '}',\n        'vec4 sampleImage(sampler2D tex, vec2 uv, float texAspect, int fitMode, vec2 position){',\n        '  if(fitMode == 1){ return sampleContain(tex, uv, texAspect, position); }',\n        '  return sampleCover(tex, uv, texAspect, position);',\n        '}',\n        'vec3 sampleSoft(sampler2D tex, vec2 uv, float aspect, vec2 dir, float amount, int fitMode, vec2 position){',\n        '  vec3 c = vec3(0.0);',\n        '  c += sampleImage(tex, uv - dir * amount * 2.0, aspect, fitMode, position).rgb * .08;',\n        '  c += sampleImage(tex, uv - dir * amount, aspect, fitMode, position).rgb * .18;',\n        '  c += sampleImage(tex, uv, aspect, fitMode, position).rgb * .48;',\n        '  c += sampleImage(tex, uv + dir * amount, aspect, fitMode, position).rgb * .18;',\n        '  c += sampleImage(tex, uv + dir * amount * 2.0, aspect, fitMode, position).rgb * .08;',\n        '  return c;',\n        '}',\n        'void main(){',\n        '  vec2 p = aspectPoint(v_uv);',\n        '  float d = length(p);',\n        '  vec2 dir = d > .0001 ? normalize(p) : vec2(0.0);',\n        '  float pr = clamp(u_progress, 0.0, 1.0);',\n        '  float ep = ease(pr);',\n        '  float activity = sin(pr * PI);',\n        '  if(pr <= .0001){',\n        '    gl_FragColor = sampleImage(u_from, v_uv, u_fromAspect, u_fromFit, u_fromPosition);',\n        '    return;',\n        '  }',\n        '  if(pr >= .9999){',\n        '    gl_FragColor = sampleImage(u_to, v_uv, u_toAspect, u_toFit, u_toPosition);',\n        '    return;',\n        '  }',\n        '  float front = ep * u_maxDist;',\n        '  float mask = 0.0;',\n        '  float glow = 0.0;',\n        '  vec2 fromUV = v_uv;',\n        '  vec2 toUV = v_uv;',\n        '  vec3 accent = vec3(1.0, .12, .06);',\n        '  if(u_effect == 0){',\n        '    float delta = d - front;',\n        '    float envelope = exp(-abs(delta) * 24.0);',\n        '    float ripple = sin(delta * 118.0 - pr * 18.0) * envelope;',\n        '    float trailing = sin((d - front * .78) * 92.0) * exp(-abs(d - front * .78) * 18.0) * .45;',\n        '    float amount = (.012 + .010 * u_intensity) * (1.0 - pr * .35);',\n        '    fromUV += dir * (ripple + trailing) * amount;',\n        '    toUV -= dir * (ripple + trailing) * amount * .72;',\n        '    mask = 1.0 - smoothstep(front - .035, front + .035, d);',\n        '    glow = envelope * .58 + exp(-abs(delta) * 60.0) * .55;',\n        '    accent = vec3(1.0, .22, .12);',\n        '  } else if(u_effect == 1){',\n        '    float f1 = ep * u_maxDist;',\n        '    float f2 = max(0.0, (ep - .12)) * u_maxDist * 1.12;',\n        '    float e1 = exp(-abs(d - f1) * 28.0);',\n        '    float e2 = exp(-abs(d - f2) * 25.0);',\n        '    float wave = sin((d - f1) * 105.0) * e1 + sin((d - f2) * 76.0) * e2 * .72;',\n        '    fromUV += dir * wave * .012 * u_intensity;',\n        '    toUV -= dir * wave * .008 * u_intensity;',\n        '    float m1 = 1.0 - smoothstep(f1 - .045, f1 + .045, d);',\n        '    float m2 = 1.0 - smoothstep(f2 - .055, f2 + .055, d);',\n        '    mask = clamp(m1 * .72 + m2 * .42, 0.0, 1.0);',\n        '    glow = e1 * .8 + e2 * .62;',\n        '    accent = mix(vec3(1.0, .10, .035), vec3(.62, .0, .11), e2 / (e1 + e2 + .001));',\n        '  } else if(u_effect == 2){',\n        '    vec2 grid = vec2(28.0, 16.0);',\n        '    vec2 cell = floor(v_uv * grid);',\n        '    vec2 local = fract(v_uv * grid) - .5;',\n        '    vec2 cellUV = (cell + .5) / grid;',\n        '    vec2 cp = cellUV - u_center;',\n        '    cp.x *= u_resolution.x / u_resolution.y;',\n        '    float cd = length(cp);',\n        '    float delay = clamp(cd / u_maxDist, 0.0, 1.0);',\n        '    float localP = clamp((pr - delay * .78) / .22, 0.0, 1.0);',\n        '    float circle = 1.0 - smoothstep(localP * .70, localP * .70 + .12, length(local));',\n        '    float ledPulse = exp(-abs(localP - .52) * 7.0);',\n        '    mask = circle;',\n        '    glow = circle * ledPulse * .75;',\n        '    toUV += normalize(local + vec2(.0001)) * circle * ledPulse * .0035 * u_intensity;',\n        '    accent = vec3(1.0, .18, .06);',\n        '  } else if(u_effect == 3){',\n        '    float angle = atan(p.y, p.x) / PI * .5 + .5;',\n        '    float spiral = fract(angle + d * 1.45 - pr * 1.36);',\n        '    float edge = smoothstep(.0, .05, pr - spiral);',\n        '    float radialGate = 1.0 - smoothstep(front + .18, front + .28, d);',\n        '    mask = clamp(max(edge * radialGate, 1.0 - smoothstep(front - .04, front + .04, d)), 0.0, 1.0);',\n        '    float beam = exp(-abs(spiral - pr) * 22.0) * radialGate;',\n        '    fromUV += vec2(-dir.y, dir.x) * beam * .018 * u_intensity;',\n        '    toUV -= vec2(-dir.y, dir.x) * beam * .010 * u_intensity;',\n        '    glow = beam * .95 + exp(-abs(d - front) * 35.0) * .35;',\n        '    accent = vec3(1.0, .28, .11);',\n        '  } else {',\n        '    float broad = .12 + .06 * u_intensity;',\n        '    mask = 1.0 - smoothstep(front - broad, front + broad, d);',\n        '    float delta = d - front;',\n        '    float softWave = sin(delta * 54.0 - pr * 7.0) * exp(-abs(delta) * 9.0);',\n        '    float amt = (.004 + abs(softWave) * .010 * u_intensity) * activity;',\n        '    vec3 fromSoft = sampleSoft(u_from, v_uv, u_fromAspect, dir, amt, u_fromFit, u_fromPosition);',\n        '    vec3 toSoft = sampleImage(u_to, v_uv - dir * amt * 1.4, u_toAspect, u_toFit, u_toPosition).rgb * .16 + sampleImage(u_to, v_uv - dir * amt * .7, u_toAspect, u_toFit, u_toPosition).rgb * .24 + sampleImage(u_to, v_uv, u_toAspect, u_toFit, u_toPosition).rgb * .44 + sampleImage(u_to, v_uv + dir * amt * .7, u_toAspect, u_toFit, u_toPosition).rgb * .16;',\n        '    float halo = exp(-abs(delta) * 10.0);',\n        '    vec3 c = mix(fromSoft, toSoft, mask);',\n        '    c += vec3(1.0, .09, .055) * halo * .18 * (1.0 - pr * .25) * activity;',\n        '    gl_FragColor = vec4(c, 1.0);',\n        '    return;',\n        '  }',\n        '  fromUV = mix(v_uv, fromUV, activity);',\n        '  toUV = mix(v_uv, toUV, activity);',\n        '  vec3 fromColor = sampleImage(u_from, fromUV, u_fromAspect, u_fromFit, u_fromPosition).rgb;',\n        '  vec3 toColor = sampleImage(u_to, toUV, u_toAspect, u_toFit, u_toPosition).rgb;',\n        '  vec3 color = mix(fromColor, toColor, clamp(mask, 0.0, 1.0));',\n        '  color += accent * glow * (.17 + .12 * u_intensity) * (1.0 - pr * .18) * activity;',\n        '  vec2 q = v_uv - .5;',\n        '  float vignette = 1.0 - smoothstep(.38, .78, length(q * vec2(1.0, .82)));',\n        '  color *= mix(1.0, .84 + .16 * vignette, activity);',\n        '  gl_FragColor = vec4(color, 1.0);',\n        '}'\n      ].join('\\n');\n\n      vertexShader = compileShader(gl, gl.VERTEX_SHADER, vertexSource);\n      fragmentShader = compileShader(gl, gl.FRAGMENT_SHADER, fragmentSource);\n      program = gl.createProgram();\n      gl.attachShader(program, vertexShader);\n      gl.attachShader(program, fragmentShader);\n      gl.linkProgram(program);\n      if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n        throw new Error(gl.getProgramInfoLog(program));\n      }\n\n      gl.useProgram(program);\n\n      buffer = gl.createBuffer();\n      gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n      gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([\n        -1, -1, 1, -1, -1, 1,\n        -1, 1, 1, -1, 1, 1\n      ]), gl.STATIC_DRAW);\n\n      var position = gl.getAttribLocation(program, 'a_position');\n      gl.enableVertexAttribArray(position);\n      gl.vertexAttribPointer(position, 2, gl.FLOAT, false, 0, 0);\n\n      this.gl = gl;\n      this.program = program;\n      this.buffer = buffer;\n      this.vertexShader = vertexShader;\n      this.fragmentShader = fragmentShader;\n      this.uniforms = {\n        from: gl.getUniformLocation(program, 'u_from'),\n        to: gl.getUniformLocation(program, 'u_to'),\n        resolution: gl.getUniformLocation(program, 'u_resolution'),\n        center: gl.getUniformLocation(program, 'u_center'),\n        progress: gl.getUniformLocation(program, 'u_progress'),\n        intensity: gl.getUniformLocation(program, 'u_intensity'),\n        maxDist: gl.getUniformLocation(program, 'u_maxDist'),\n        fromAspect: gl.getUniformLocation(program, 'u_fromAspect'),\n        toAspect: gl.getUniformLocation(program, 'u_toAspect'),\n        fromFit: gl.getUniformLocation(program, 'u_fromFit'),\n        toFit: gl.getUniformLocation(program, 'u_toFit'),\n        fromPosition: gl.getUniformLocation(program, 'u_fromPosition'),\n        toPosition: gl.getUniformLocation(program, 'u_toPosition'),\n        effect: gl.getUniformLocation(program, 'u_effect')\n      };\n      this.glReady = true;\n      this.webglFailed = false;\n      this.webglGeneration += 1;\n      this.resizeCanvas();\n      this.bindWebglContextEvents();\n      return true;\n    } catch (error) {\n      if (gl) {\n        try { if (buffer) { gl.deleteBuffer(buffer); } } catch (cleanupError) {}\n        try { if (program) { gl.deleteProgram(program); } } catch (cleanupError) {}\n        try { if (vertexShader) { gl.deleteShader(vertexShader); } } catch (cleanupError) {}\n        try { if (fragmentShader) { gl.deleteShader(fragmentShader); } } catch (cleanupError) {}\n      }\n      this.glReady = false;\n      this.webglFailed = true;\n      this.gl = null;\n      this.program = null;\n      this.buffer = null;\n      this.vertexShader = null;\n      this.fragmentShader = null;\n      window.console && window.console.warn && window.console.warn('Yamuri SEO slideshow WebGL disabled:', error);\n      return false;\n    }\n  };\n\n  SeoSlideshow.prototype.initWebgl = function () {\n    return this.ensureWebgl();\n  };\n\n  SeoSlideshow.prototype.bindWebglContextEvents = function () {\n    if (this.webglEventsBound || !this.canvas) {\n      return;\n    }\n    var self = this;\n    this.webglEventsBound = true;\n    this.listen(this.canvas, 'webglcontextlost', function (event) {\n      event.preventDefault();\n      self.transitionToken += 1;\n      self.glReady = false;\n      self.webglGeneration += 1;\n      self.textureCache = Object.create(null);\n      self.texturePromiseCache = Object.create(null);\n      self.textureUsage = [];\n      self.recoverCurrentState();\n      self.syncAutoplay();\n    });\n    this.listen(this.canvas, 'webglcontextrestored', function () {\n      self.gl = null;\n      self.program = null;\n      self.buffer = null;\n      self.webglFailed = false;\n      if (self.isNearViewport && !self.shouldReduceMotion()) {\n        self.ensureWebgl();\n      }\n    });\n  };\n\n  SeoSlideshow.prototype.releaseWebgl = function () {\n    this.webglGeneration += 1;\n    var gl = this.gl;\n    if (gl) {\n      var self = this;\n      Object.keys(this.textureCache || {}).forEach(function (key) {\n        var entry = self.textureCache[key];\n        if (entry && entry.texture) {\n          gl.deleteTexture(entry.texture);\n        }\n      });\n      if (this.buffer) {\n        gl.deleteBuffer(this.buffer);\n      }\n      if (this.program) {\n        gl.deleteProgram(this.program);\n      }\n      if (this.vertexShader) {\n        gl.deleteShader(this.vertexShader);\n      }\n      if (this.fragmentShader) {\n        gl.deleteShader(this.fragmentShader);\n      }\n    }\n    this.textureCache = Object.create(null);\n    this.texturePromiseCache = Object.create(null);\n    this.textureUsage = [];\n    this.glReady = false;\n    this.gl = null;\n    this.program = null;\n    this.buffer = null;\n    this.vertexShader = null;\n    this.fragmentShader = null;\n    if (this.canvas) {\n      this.canvas.width = 1;\n      this.canvas.height = 1;\n    }\n  };\n\n  SeoSlideshow.prototype.calculateMaxDist = function (centerX, centerY) {\n    var aspect = this.canvas.width / this.canvas.height;\n    var points = [\n      [0, 0],\n      [1, 0],\n      [0, 1],\n      [1, 1]\n    ];\n    var maxDist = 0;\n\n    points.forEach(function (point) {\n      var dx = (point[0] - centerX) * aspect;\n      var dy = point[1] - centerY;\n      maxDist = Math.max(maxDist, Math.sqrt(dx * dx + dy * dy));\n    });\n\n    return maxDist + 0.08;\n  };\n\n  SeoSlideshow.prototype.resizeCanvas = function () {\n    if (!this.glReady || !this.frame) {\n      return;\n    }\n    var rect = this.frame.getBoundingClientRect();\n    var dpr = Math.min(window.devicePixelRatio || 1, 2);\n    var width = Math.max(1, Math.round(rect.width * dpr));\n    var height = Math.max(1, Math.round(rect.height * dpr));\n    var maxPixels = 4194304;\n    if (width * height > maxPixels) {\n      var scale = Math.sqrt(maxPixels / (width * height));\n      width = Math.max(1, Math.floor(width * scale));\n      height = Math.max(1, Math.floor(height * scale));\n    }\n    if (this.canvas.width !== width || this.canvas.height !== height) {\n      this.canvas.width = width;\n      this.canvas.height = height;\n      this.gl.viewport(0, 0, width, height);\n    }\n  };\n\n  SeoSlideshow.prototype.touchTexture = function (key) {\n    var self = this;\n    this.textureUsage = this.textureUsage.filter(function (item) { return item !== key; });\n    this.textureUsage.push(key);\n    while (this.textureUsage.length > 3) {\n      var staleKey = this.textureUsage.shift();\n      var stale = this.textureCache[staleKey];\n      if (stale && this.gl) {\n        this.gl.deleteTexture(stale.texture);\n      }\n      delete self.textureCache[staleKey];\n      delete self.texturePromiseCache[staleKey];\n    }\n  };\n\n  SeoSlideshow.prototype.getTextureForSlide = function (slide, transitionToken) {\n    var self = this;\n    return this.prepareSlide(slide, 'eager').then(function (image) {\n      if (!image || !self.glReady || self.destroyed || (transitionToken != null && transitionToken !== self.transitionToken)) {\n        throw new Error('WebGL is unavailable');\n      }\n      var key = image.currentSrc || image.src;\n      if (self.textureCache[key]) {\n        self.touchTexture(key);\n        return self.textureCache[key];\n      }\n      if (self.texturePromiseCache[key]) {\n        return self.texturePromiseCache[key];\n      }\n      var generation = self.webglGeneration;\n      var gl = self.gl;\n      var texturePromise = Promise.resolve().then(function () {\n        if (!self.glReady || self.destroyed || self.gl !== gl || self.webglGeneration !== generation || (transitionToken != null && transitionToken !== self.transitionToken)) {\n          throw new Error('WebGL is unavailable');\n        }\n        var texture = gl.createTexture();\n        gl.bindTexture(gl.TEXTURE_2D, texture);\n        gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 1);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n        gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n        gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n        if (self.gl !== gl || self.webglGeneration !== generation || (transitionToken != null && transitionToken !== self.transitionToken)) {\n          try { gl.deleteTexture(texture); } catch (error) {}\n          throw new Error('WebGL texture upload became stale');\n        }\n        self.textureCache[key] = {\n          texture: texture,\n          aspect: image.naturalWidth / image.naturalHeight,\n          key: key\n        };\n        if (self.texturePromiseCache[key] === texturePromise) {\n          delete self.texturePromiseCache[key];\n        }\n        self.touchTexture(key);\n        return self.textureCache[key];\n      }).catch(function (error) {\n        if (self.texturePromiseCache[key] === texturePromise) {\n          delete self.texturePromiseCache[key];\n        }\n        throw error;\n      });\n      self.texturePromiseCache[key] = texturePromise;\n      return texturePromise;\n    });\n  };\n\n  SeoSlideshow.prototype.renderWebgl = function (fromData, toData, progress, centerX, centerY, fromFit, toFit, effect, fromPosition, toPosition) {\n    var gl = this.gl;\n    if (!this.glReady || !gl) {\n      throw new Error('WebGL context is unavailable');\n    }\n    fromPosition = fromPosition || { x: 0.5, y: 0.5 };\n    toPosition = toPosition || { x: 0.5, y: 0.5 };\n    gl.useProgram(this.program);\n\n    gl.activeTexture(gl.TEXTURE0);\n    gl.bindTexture(gl.TEXTURE_2D, fromData.texture);\n    gl.uniform1i(this.uniforms.from, 0);\n\n    gl.activeTexture(gl.TEXTURE1);\n    gl.bindTexture(gl.TEXTURE_2D, toData.texture);\n    gl.uniform1i(this.uniforms.to, 1);\n\n    gl.uniform2f(this.uniforms.resolution, this.canvas.width, this.canvas.height);\n    gl.uniform2f(this.uniforms.center, centerX, 1 - centerY);\n    gl.uniform1f(this.uniforms.progress, progress);\n    gl.uniform1f(this.uniforms.intensity, 1.0);\n    gl.uniform1f(this.uniforms.maxDist, this.calculateMaxDist(centerX, 1 - centerY));\n    gl.uniform1f(this.uniforms.fromAspect, fromData.aspect);\n    gl.uniform1f(this.uniforms.toAspect, toData.aspect);\n    gl.uniform1i(this.uniforms.fromFit, fromFit || 0);\n    gl.uniform1i(this.uniforms.toFit, toFit || 0);\n    gl.uniform2f(this.uniforms.fromPosition, fromPosition.x, 1 - fromPosition.y);\n    gl.uniform2f(this.uniforms.toPosition, toPosition.x, 1 - toPosition.y);\n    gl.uniform1i(this.uniforms.effect, this.effectIndex(effect));\n    gl.drawArrays(gl.TRIANGLES, 0, 6);\n  };\n\n  SeoSlideshow.prototype.updateGroupTabs = function (activeGroup) {\n    this.groupTabs.forEach(function (tab) {\n      var selected = tab.getAttribute('data-group') === activeGroup;\n      tab.setAttribute('aria-pressed', selected ? 'true' : 'false');\n      tab.classList.toggle('is-active', selected);\n    });\n  };\n\n  SeoSlideshow.prototype.setLayerFocusable = function (layer, enabled) {\n    if (!layer) {\n      return;\n    }\n    layer.querySelectorAll('a, button, input, select, textarea').forEach(function (element) {\n      if (enabled) {\n        var oldValue = element.getAttribute('data-ym-fixed-tabindex');\n        if (oldValue === null) {\n          return;\n        }\n        element.removeAttribute('data-ym-fixed-tabindex');\n        if (oldValue === '') {\n          element.removeAttribute('tabindex');\n        } else {\n          element.setAttribute('tabindex', oldValue);\n        }\n      } else {\n        if (element.getAttribute('data-ym-fixed-tabindex') === null) {\n          element.setAttribute('data-ym-fixed-tabindex', element.getAttribute('tabindex') || '');\n        }\n        element.setAttribute('tabindex', '-1');\n      }\n    });\n  };\n\n  SeoSlideshow.prototype.setElementAvailability = function (element, available, hide) {\n    if (!element) {\n      return;\n    }\n    element.setAttribute('aria-hidden', available ? 'false' : 'true');\n    if (available) {\n      element.removeAttribute('inert');\n      if ('inert' in element) {\n        element.inert = false;\n      }\n      element.hidden = false;\n    } else {\n      element.setAttribute('inert', '');\n      if ('inert' in element) {\n        element.inert = true;\n      }\n      if (hide) {\n        element.hidden = true;\n      }\n    }\n    this.setLayerFocusable(element, available);\n  };\n\n  SeoSlideshow.prototype.enhanceInteractiveControls = function () {\n    Array.prototype.forEach.call(this.root.querySelectorAll('[data-ym-hero-interactive]'), function (control) {\n      control.hidden = false;\n    });\n  };\n\n  SeoSlideshow.prototype.syncFixedContentFocus = function (activeLayer) {\n    var self = this;\n    this.fixedContents.forEach(function (content) {\n      self.setLayerFocusable(content, content === activeLayer && !content.classList.contains('is-text-leaving'));\n    });\n  };\n\n  SeoSlideshow.prototype.prepareTextAnimation = function () {\n    this.fixedContents.concat(this.slideContents.filter(Boolean)).forEach(function (content) {\n      var maxCharacterCount = 0;\n      var animatedElements = content.querySelectorAll('.yamuri-seo-slideshow__eyebrow, .yamuri-seo-slideshow__heading');\n\n      animatedElements.forEach(function (element) {\n        if (element.getAttribute('data-ym-text-prepared') === 'true') {\n          maxCharacterCount = Math.max(maxCharacterCount, parseInt(element.getAttribute('data-ym-char-count'), 10) || 0);\n          return;\n        }\n\n        var value = element.textContent || '';\n        var characters = Array.from(value);\n        var tokens = value.match(/\\S+|\\s+/g) || [];\n        element.textContent = '';\n        element.setAttribute('data-ym-text-prepared', 'true');\n        element.setAttribute('data-ym-char-count', characters.length);\n\n        var accessibleText = document.createElement('span');\n        accessibleText.className = 'visually-hidden';\n        accessibleText.textContent = value.replace(/\\s+/g, ' ').trim();\n        element.appendChild(accessibleText);\n\n        var characterIndex = 0;\n        tokens.forEach(function (token) {\n          if (/^\\s+$/.test(token)) {\n            var space = document.createElement('span');\n            space.className = 'yamuri-seo-slideshow__text-space';\n            space.setAttribute('aria-hidden', 'true');\n            space.textContent = token;\n            element.appendChild(space);\n            characterIndex += Array.from(token).length;\n            return;\n          }\n\n          var word = document.createElement('span');\n          word.className = 'yamuri-seo-slideshow__text-word';\n          word.setAttribute('aria-hidden', 'true');\n          Array.from(token).forEach(function (character) {\n            var span = document.createElement('span');\n            span.className = 'yamuri-seo-slideshow__text-char';\n            span.style.setProperty('--ym-char-index', Math.min(characterIndex, 60));\n            span.textContent = character;\n            word.appendChild(span);\n            characterIndex += 1;\n          });\n          element.appendChild(word);\n        });\n\n        maxCharacterCount = Math.max(maxCharacterCount, characters.length);\n      });\n\n      content.setAttribute('data-ym-max-char-count', Math.min(maxCharacterCount, 61));\n    });\n  };\n\n  SeoSlideshow.prototype.startSlideTextTransition = function (targetIndex) {\n    if (this.fixedContents.length || !this.groupTextAnimation || this.shouldReduceMotion()) {\n      this.pendingSlideTextTarget = null;\n      return;\n    }\n\n    window.clearTimeout(this.textAnimationTimer);\n    window.clearTimeout(this.textCleanupTimer);\n    this.slideContents.forEach(function (content) {\n      if (content) {\n        content.classList.remove('is-text-entering', 'is-text-leaving');\n      }\n    });\n\n    var current = this.slideContents[this.index];\n    if (current) {\n      current.classList.add('is-text-leaving');\n    }\n    this.pendingSlideTextTarget = targetIndex;\n  };\n\n  SeoSlideshow.prototype.finishSlideTextTransition = function (targetIndex) {\n    if (this.pendingSlideTextTarget !== targetIndex) {\n      return;\n    }\n\n    var self = this;\n    var target = this.slideContents[targetIndex];\n    this.slideContents.forEach(function (content, index) {\n      if (content && index !== targetIndex) {\n        content.classList.remove('is-text-entering', 'is-text-leaving');\n      }\n    });\n    this.pendingSlideTextTarget = null;\n    if (!target || !this.groupTextAnimation || this.shouldReduceMotion()) {\n      return;\n    }\n\n    target.classList.add('is-text-entering');\n    var targetCharacterCount = parseInt(target.getAttribute('data-ym-max-char-count'), 10) || 0;\n    var cleanupDelay = this.groupTextShowDuration + (targetCharacterCount * this.groupTextCharacterStagger) + 80;\n    this.textCleanupTimer = window.setTimeout(function () {\n      target.classList.remove('is-text-entering');\n      self.textCleanupTimer = null;\n    }, cleanupDelay);\n  };\n\n  SeoSlideshow.prototype.updateFixedContent = function (activeGroup, animate) {\n    if (!this.fixedContents.length) {\n      return;\n    }\n\n    var self = this;\n    var target = this.fixedContents.find(function (content) {\n      return content.getAttribute('data-group') === activeGroup;\n    });\n\n    if (!target) {\n      return;\n    }\n\n    if (target.classList.contains('is-active')) {\n      this.setElementAvailability(target, true, false);\n      this.syncFixedContentFocus(target);\n      if (!target.classList.contains('is-text-entering') && !target.classList.contains('is-text-leaving')) {\n        this.pendingFixedGroup = null;\n      }\n      return;\n    }\n\n    var currentGroup = this.root.getAttribute('data-active-group') || this.getActiveGroup();\n    var current = this.fixedContents.find(function (content) {\n      return content.classList.contains('is-active') && content.getAttribute('data-group') === currentGroup;\n    }) || this.fixedContents.find(function (content) {\n      return content.classList.contains('is-active');\n    });\n\n    window.clearTimeout(this.textAnimationTimer);\n    window.clearTimeout(this.textCleanupTimer);\n    this.fixedContents.forEach(function (content) {\n      content.classList.remove('is-text-entering', 'is-text-leaving');\n      if (content !== current) {\n        content.classList.remove('is-active');\n        self.setElementAvailability(content, false, true);\n      }\n    });\n\n    if (!animate || !this.groupTextAnimation || this.shouldReduceMotion()) {\n      this.fixedContents.forEach(function (content) {\n        var active = content === target;\n        content.classList.toggle('is-active', active);\n        self.setElementAvailability(content, active, !active);\n      });\n      this.pendingFixedGroup = null;\n      this.syncFixedContentFocus(target);\n      return;\n    }\n\n    if (current) {\n      current.classList.add('is-text-leaving');\n      this.setElementAvailability(current, false, false);\n    }\n    target.hidden = false;\n    this.setElementAvailability(target, false, false);\n    this.syncFixedContentFocus(null);\n\n    this.textAnimationTimer = window.setTimeout(function () {\n      target.classList.add('is-active', 'is-text-entering');\n      self.setElementAvailability(target, true, false);\n      self.syncFixedContentFocus(target);\n    }, this.groupTextSwapDelay);\n\n    var currentCharacterCount = current ? (parseInt(current.getAttribute('data-ym-max-char-count'), 10) || 0) : 0;\n    var targetCharacterCount = parseInt(target.getAttribute('data-ym-max-char-count'), 10) || 0;\n    var hideCompleteAt = this.groupTextHideDuration + (currentCharacterCount * this.groupTextCharacterStagger);\n    var showCompleteAt = this.groupTextSwapDelay + this.groupTextShowDuration + (targetCharacterCount * this.groupTextCharacterStagger);\n    var cleanupDelay = Math.max(hideCompleteAt, showCompleteAt) + 80;\n\n    this.textCleanupTimer = window.setTimeout(function () {\n      if (current) {\n        current.classList.remove('is-active', 'is-text-leaving');\n        self.setElementAvailability(current, false, true);\n      }\n      target.classList.remove('is-text-entering');\n      if (self.pendingFixedGroup === activeGroup) {\n        self.pendingFixedGroup = null;\n      }\n      self.syncFixedContentFocus(target);\n    }, cleanupDelay);\n  };\n\n  SeoSlideshow.prototype.setActive = function (index, group) {\n    var self = this;\n    var state = this.resolveActiveState(index, group);\n    index = state.index;\n    var activeGroup = state.group;\n    this.activeGroup = activeGroup;\n    this.root.setAttribute('data-active-group', activeGroup);\n\n    this.slides.forEach(function (slide, slideIndex) {\n      var active = slideIndex === index;\n      var groupVisible = !self.groupsEnabled || self.getSlideGroup(slide) === activeGroup;\n      slide.classList.remove('is-revealing');\n      slide.classList.toggle('is-group-hidden', !groupVisible);\n      slide.classList.toggle('is-active', slideIndex === index);\n      self.setElementAvailability(slide, active, !active);\n    });\n    this.finishSlideTextTransition(index);\n    this.dots.forEach(function (dot, dotIndex) {\n      var dotVisible = !self.groupsEnabled || dot.getAttribute('data-group') === activeGroup;\n      dot.classList.toggle('is-group-hidden', !dotVisible);\n      dot.hidden = !dotVisible;\n      dot.setAttribute('aria-hidden', dotVisible ? 'false' : 'true');\n      dot.setAttribute('aria-selected', dotIndex === index ? 'true' : 'false');\n      if (dotVisible) {\n        dot.setAttribute('tabindex', dotIndex === index ? '0' : '-1');\n      } else {\n        dot.setAttribute('tabindex', '-1');\n      }\n    });\n    this.updateGroupTabs(activeGroup);\n    if (this.pendingFixedGroup !== activeGroup) {\n      this.updateFixedContent(activeGroup);\n    }\n    this.index = index;\n    this.targetIndex = index;\n    this.updateA11y();\n    this.scheduleImageHotspotPositioning();\n  };\n\n  SeoSlideshow.prototype.preloadNext = function () {\n    return this.prepareNext();\n  };\n\n  SeoSlideshow.prototype.preloadGroup = function (group) {\n    return this.prepareGroup(group);\n  };\n\n  SeoSlideshow.prototype.preloadGroupEntrypoints = function () {\n    return Promise.resolve();\n  };\n\n  SeoSlideshow.prototype.updateA11y = function () {\n    var self = this;\n    var activeGroup = this.getActiveGroup();\n    var groupIndexes = this.getGroupIndexes(activeGroup);\n    var total = groupIndexes.length || this.slides.length;\n    if (this.prevButton) {\n      this.prevButton.setAttribute('aria-label', 'Previous slide');\n    }\n    if (this.nextButton) {\n      this.nextButton.setAttribute('aria-label', 'Next slide');\n    }\n    this.dots.forEach(function (dot, dotIndex) {\n      var position = groupIndexes.indexOf(dotIndex);\n      if (position !== -1 || !self.groupsEnabled) {\n        dot.setAttribute('aria-label', 'Go to slide ' + ((position === -1 ? dotIndex : position) + 1) + ' of ' + total);\n      } else {\n        dot.removeAttribute('aria-label');\n      }\n    });\n    this.groupTabs.forEach(function (tab) {\n      var label = tab.textContent.replace(/\\s+/g, ' ').trim();\n      tab.setAttribute('aria-label', 'Show ' + label + ' slides');\n    });\n  };\n\n  SeoSlideshow.prototype.cssTransitionTo = function (target, centerX, centerY, nextGroup, durationOverride, token) {\n    var self = this;\n    var targetSlide = this.slides[target];\n    var duration = durationOverride || this.duration;\n    token = token || this.transitionToken;\n\n    this.root.style.setProperty('--ym-ripple-x', centerX);\n    this.root.style.setProperty('--ym-ripple-y', centerY);\n    this.root.style.setProperty('--ym-transition-duration', duration + 'ms');\n\n    targetSlide.hidden = false;\n    this.setElementAvailability(targetSlide, false, false);\n    targetSlide.classList.add('is-revealing');\n\n    this.requestFrame(function () {\n      if (token !== self.transitionToken) {\n        return;\n      }\n      self.root.classList.add('is-transitioning');\n      self.root.classList.add('is-css-transitioning');\n    });\n\n    window.clearTimeout(this.transitionTimer);\n    this.transitionTimer = window.setTimeout(function () {\n      if (token !== self.transitionToken || self.destroyed) {\n        return;\n      }\n      self.transitionTimer = null;\n      targetSlide.classList.remove('is-revealing');\n      self.root.classList.remove('is-transitioning');\n      self.root.classList.remove('is-css-transitioning');\n      self.setActive(target, nextGroup);\n      self.animating = false;\n      self.syncAutoplay();\n      if (!self.isNearViewport) {\n        self.scheduleResourceSuspend();\n      }\n    }, duration + 80);\n  };\n\n  SeoSlideshow.prototype.abortTransition = function (token, target) {\n    if (token !== this.transitionToken || this.destroyed) {\n      return;\n    }\n    window.clearTimeout(this.transitionTimer);\n    this.transitionTimer = null;\n    this.recoverCurrentState();\n    this.syncAutoplay();\n    if (!this.isNearViewport) {\n      this.scheduleResourceSuspend();\n    }\n  };\n\n  SeoSlideshow.prototype.finishWebglTransition = function (token, target, nextGroup) {\n    var self = this;\n    if (token !== this.transitionToken || this.destroyed) {\n      return;\n    }\n    this.setActive(target, nextGroup);\n    this.requestFrame(function () {\n      if (token !== self.transitionToken) {\n        return;\n      }\n      self.root.classList.remove('is-transitioning');\n      self.animating = false;\n      self.syncAutoplay();\n      if (!self.isNearViewport) {\n        self.scheduleResourceSuspend();\n      }\n    });\n  };\n\n  SeoSlideshow.prototype.goTo = function (index, centerX, centerY, effectOverride, nextGroup, durationOverride) {\n    var self = this;\n    if (!this.slides.length || this.animating) {\n      return;\n    }\n\n    var requestedGroup = nextGroup || (this.groupsEnabled ? this.getActiveGroup() : '');\n    var resolved = this.resolveActiveState(index, requestedGroup);\n    var target = resolved.index;\n    nextGroup = resolved.group;\n    if (target === this.index) {\n      return;\n    }\n\n    this.stopAutoplay();\n    this.animating = true;\n    this.transitionToken += 1;\n    var token = this.transitionToken;\n    this.closeAllHotspots(false, true);\n    this.targetIndex = target;\n    this.startSlideTextTransition(target);\n    centerX = clamp(centerX == null ? 0.5 : centerX, 0, 1);\n    centerY = clamp(centerY == null ? 0.5 : centerY, 0, 1);\n\n    var transitionEffect = effectOverride || this.effect;\n    var transitionDuration = durationOverride || this.duration;\n    this.root.style.setProperty('--ym-transition-duration', transitionDuration + 'ms');\n    var fromSlide = this.slides[this.index];\n    var toSlide = this.slides[target];\n    toSlide.hidden = false;\n    this.setElementAvailability(toSlide, false, false);\n    var fromLayout = this.getImageLayout(fromSlide);\n    var toLayout = this.getImageLayout(toSlide);\n    var fallbackFromWebgl = function () {\n      if (token !== self.transitionToken || self.destroyed) {\n        return;\n      }\n      self.root.classList.remove('is-transitioning');\n      self.releaseWebgl();\n      self.cssTransitionTo(target, centerX, centerY, nextGroup, transitionDuration, token);\n    };\n    var startWebglTransition = function (textures) {\n      if (token !== self.transitionToken || self.destroyed) {\n        return;\n      }\n      var start = performance.now();\n      self.resizeCanvas();\n      self.renderWebgl(textures[0], textures[1], 0, centerX, centerY, fromLayout.fitMode, toLayout.fitMode, transitionEffect, fromLayout.position, toLayout.position);\n\n      self.requestFrame(function () {\n        if (token !== self.transitionToken) {\n          return;\n        }\n        self.root.classList.add('is-transitioning');\n      });\n\n      function frame(now) {\n        if (token !== self.transitionToken || self.destroyed) {\n          return;\n        }\n        var progress = clamp((now - start) / transitionDuration, 0, 1);\n        try {\n          self.renderWebgl(textures[0], textures[1], progress, centerX, centerY, fromLayout.fitMode, toLayout.fitMode, transitionEffect, fromLayout.position, toLayout.position);\n        } catch (error) {\n          fallbackFromWebgl();\n          return;\n        }\n        if (progress < 1) {\n          self.requestFrame(frame);\n        } else {\n          self.finishWebglTransition(token, target, nextGroup);\n        }\n      }\n\n      self.requestFrame(frame);\n    };\n\n    this.prepareSlide(toSlide, 'eager').then(function () {\n      if (token !== self.transitionToken || self.destroyed) {\n        return;\n      }\n      if (self.groupsEnabled && nextGroup !== self.getActiveGroup()) {\n        self.pendingFixedGroup = nextGroup;\n        self.updateGroupTabs(nextGroup);\n        self.updateFixedContent(nextGroup, true);\n      }\n      if (self.shouldReduceMotion()) {\n        self.setActive(target, nextGroup);\n        self.animating = false;\n        self.syncAutoplay();\n        if (!self.isNearViewport) {\n          self.scheduleResourceSuspend();\n        }\n        return;\n      }\n      if (transitionEffect === 'fade' || !self.isNearViewport || !self.ensureWebgl(transitionEffect)) {\n        self.cssTransitionTo(target, centerX, centerY, nextGroup, transitionDuration, token);\n        return;\n      }\n      Promise.all([self.getTextureForSlide(fromSlide, token), self.getTextureForSlide(toSlide, token)]).then(startWebglTransition).catch(function () {\n        fallbackFromWebgl();\n      });\n    }).catch(function () {\n      self.abortTransition(token, target);\n    });\n  };\n\n  SeoSlideshow.prototype.hasAutoplayTarget = function () {\n    if (!this.slides || this.slides.length < 2) {\n      return false;\n    }\n    if (!this.groupsEnabled) {\n      return true;\n    }\n    var indexes = this.getGroupIndexes(this.getActiveGroup());\n    return indexes.length > 1 || (this.autoAdvanceGroups && this.getGroups().length > 1);\n  };\n\n  SeoSlideshow.prototype.getAutoplayTargetState = function () {\n    var activeGroup = this.getActiveGroup();\n    var indexes = this.getGroupIndexes(activeGroup);\n    var groups = this.getGroups();\n    var atGroupEnd = indexes.length > 0 && indexes[indexes.length - 1] === this.index;\n\n    if (this.autoAdvanceGroups && this.groupsEnabled && groups.length > 1 && atGroupEnd) {\n      var groupIndex = groups.indexOf(activeGroup);\n      if (groupIndex < 0) {\n        groupIndex = 0;\n      }\n      var nextGroup = groups[(groupIndex + 1) % groups.length];\n      var nextIndexes = this.getGroupIndexes(nextGroup);\n      return { index: nextIndexes.length ? nextIndexes[0] : this.index, group: nextGroup };\n    }\n    return { index: this.getAdjacentIndex(1), group: activeGroup };\n  };\n\n  SeoSlideshow.prototype.isAutoplayEligible = function () {\n    return Boolean(\n      this.autoplay &&\n      this.hasAutoplayTarget() &&\n      !this.animating &&\n      !this.shouldReduceMotion() &&\n      this.isInViewport &&\n      this.isDocumentVisible &&\n      !this.hasPauseReasons() &&\n      !this.destroyed\n    );\n  };\n\n  SeoSlideshow.prototype.syncAutoplay = function () {\n    var self = this;\n    if (!this.isAutoplayEligible()) {\n      this.stopAutoplay();\n      return;\n    }\n    var delay = Math.max(this.autoplayDelay, this.duration + 700);\n    if (!this.preloadTimer) {\n      this.preloadTimer = window.setTimeout(function () {\n        self.preloadTimer = null;\n        if (self.isAutoplayEligible()) {\n          self.prepareNext().catch(function () {});\n        }\n      }, Math.max(2000, delay - 1000));\n    }\n    if (!this.timer) {\n      this.timer = window.setTimeout(function () {\n        self.timer = null;\n        if (!self.isAutoplayEligible()) {\n          self.syncAutoplay();\n          return;\n        }\n        self.advanceAutoplay();\n      }, delay);\n    }\n  };\n\n  SeoSlideshow.prototype.startAutoplay = function () {\n    this.syncAutoplay();\n  };\n\n  SeoSlideshow.prototype.advanceAutoplay = function () {\n    var target = this.getAutoplayTargetState();\n    if (this.groupsEnabled && target.group !== this.getActiveGroup()) {\n      this.switchGroup(target.group);\n      return;\n    }\n    this.goTo(target.index, 0.65, 0.5);\n  };\n\n  SeoSlideshow.prototype.canAutoplay = function () {\n    return this.isAutoplayEligible() && !this.timer;\n  };\n\n  SeoSlideshow.prototype.stopAutoplay = function () {\n    if (this.timer) {\n      window.clearTimeout(this.timer);\n      this.timer = null;\n    }\n    if (this.preloadTimer) {\n      window.clearTimeout(this.preloadTimer);\n      this.preloadTimer = null;\n    }\n  };\n\n  SeoSlideshow.prototype.destroy = function () {\n    if (this.destroyed) {\n      return;\n    }\n    this.destroyed = true;\n    this.transitionToken += 1;\n    this.closeAllHotspots(false, true);\n    this.stopAutoplay();\n    window.clearTimeout(this.textAnimationTimer);\n    window.clearTimeout(this.textCleanupTimer);\n    window.clearTimeout(this.transitionTimer);\n    window.clearTimeout(this.suspendTimer);\n    this.textAnimationTimer = null;\n    this.textCleanupTimer = null;\n    this.transitionTimer = null;\n    this.suspendTimer = null;\n    (this.imageLoadTimers || []).forEach(function (id) {\n      window.clearTimeout(id);\n    });\n    this.imageLoadTimers = [];\n    (this.imageLoadCleanups || []).slice().forEach(function (cleanup) {\n      cleanup();\n    });\n    this.imageLoadCleanups = [];\n    if (this.observer) {\n      this.observer.disconnect();\n      this.observer = null;\n    }\n    if (this.visibilityObserver) {\n      this.visibilityObserver.disconnect();\n      this.visibilityObserver = null;\n    }\n    if (this.resourceObserver) {\n      this.resourceObserver.disconnect();\n      this.resourceObserver = null;\n    }\n    if (this.hotspotResizeObserver) {\n      this.hotspotResizeObserver.disconnect();\n      this.hotspotResizeObserver = null;\n    }\n    (this.animationFrameIds || []).forEach(function (id) {\n      window.cancelAnimationFrame(id);\n    });\n    this.animationFrameIds = [];\n    (this.eventBindings || []).forEach(function (binding) {\n      if (binding.type === 'legacy-media-change' && binding.target.removeListener) {\n        binding.target.removeListener(binding.handler);\n      } else {\n        binding.target.removeEventListener(binding.type, binding.handler, binding.options);\n      }\n    });\n    this.eventBindings = [];\n    this.releaseWebgl();\n    if (this.root.classList) {\n      this.root.classList.remove('is-hotspot-enhanced', 'is-initialized', 'is-transitioning', 'is-css-transitioning');\n    }\n    this.root.__yamuriSeoSlideshow = null;\n  };\n\n  function rootsWithin(context) {\n    var scope = context || document;\n    var roots = [];\n    if (scope.nodeType === 1 && scope.matches('[data-ym-seo-slideshow]')) {\n      roots.push(scope);\n    }\n    if (scope.querySelectorAll) {\n      Array.prototype.push.apply(roots, scope.querySelectorAll('[data-ym-seo-slideshow]'));\n    }\n    return roots;\n  }\n\n  function initAll(context) {\n    rootsWithin(context).forEach(function (root) {\n      if (!root.__yamuriSeoSlideshow) {\n        root.__yamuriSeoSlideshow = new SeoSlideshow(root);\n      } else {\n        root.__yamuriSeoSlideshow.updateSettings();\n        if (root.__yamuriSeoSlideshow.autoplay) {\n          root.__yamuriSeoSlideshow.startAutoplay();\n        } else {\n          root.__yamuriSeoSlideshow.stopAutoplay();\n        }\n      }\n    });\n  }\n\n  function destroyAll(context) {\n    rootsWithin(context).forEach(function (root) {\n      if (root.__yamuriSeoSlideshow) {\n        root.__yamuriSeoSlideshow.destroy();\n      }\n    });\n  }\n\n  window.YamuriSeoSlideshow = {\n    init: initAll,\n    destroy: destroyAll,\n    version: '20260723.1'\n  };\n})();\n"],
  "mappings": "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,UAAU,WACtD,GAAI,CAAC,KAAK,QAAU,CAAC,KAAK,gBAAkB,SAAW,QAAU,KAAK,mBAAmB,GAAM,YAAc,WAAW,UAAc,OAAO,WAAa,OAAO,UAAU,cAAgB,OAAO,UAAU,cAAgB,EAC1N,MAAO,GAGT,IAAI,GAAK,KACL,aAAe,KACf,eAAiB,KACjB,QAAU,KACV,OAAS,KACb,GAAI,CAOF,GANA,GAAK,KAAK,OAAO,WAAW,QAAS,CACnC,MAAO,GACP,UAAW,GACX,sBAAuB,EACzB,CAAC,EAEG,CAAC,GACH,YAAK,YAAc,GACZ,GAGT,IAAI,aAAe,CACjB,6BACA,qBACA,eACA,iCACA,8CACA,GACF,EAAE,KAAK,IAAI,EAEP,eAAiB,CACnB,yBACA,qBACA,4BACA,0BACA,6BACA,yBACA,4BACA,6BACA,2BACA,8BACA,4BACA,yBACA,uBACA,+BACA,6BACA,wBACA,kCACA,+CACA,6BACA,4BACA,4CACA,cACA,IACA,4EACA,0DACA,4BACA,wEACA,iDACA,kDACA,oCACA,iDACA,IACA,8EACA,0DACA,4BACA,wEACA,iDACA,kDACA,sCACA,8FACA,mDACA,0DACA,IACA,yFACA,4EACA,sDACA,IACA,6GACA,wBACA,yFACA,mFACA,oEACA,mFACA,yFACA,cACA,IACA,eACA,gCACA,yBACA,qDACA,4CACA,yBACA,mCACA,qBACA,yFACA,cACA,MACA,qBACA,iFACA,cACA,MACA,kCACA,sBACA,sBACA,wBACA,sBACA,uCACA,uBACA,+BACA,gDACA,gEACA,gGACA,qEACA,oDACA,wDACA,8DACA,6DACA,oCACA,8BACA,iCACA,0DACA,2CACA,2CACA,iFACA,iDACA,+CACA,4DACA,4DACA,mDACA,iCACA,qFACA,8BACA,oCACA,sCACA,4CACA,wCACA,mCACA,+CACA,6BACA,qDACA,gEACA,wFACA,sDACA,qBACA,sCACA,wFACA,oCACA,8BACA,mDACA,0DACA,qDACA,wEACA,qGACA,+DACA,iEACA,+DACA,6DACA,oCACA,aACA,6CACA,gEACA,+BACA,8EACA,0EACA,mG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",
  "names": []
}
