{"version":3,"file":"index-Cps4TC8M.js","sources":["../../../app/javascript/src/shoppe/services/EventTracker/index.ts","../../../app/javascript/src/shoppe/services/JWPlayer/services/getJWPlayer/index.ts","../../../app/javascript/src/shoppe/services/JWPlayer/services/events/index.ts","../../../app/javascript/src/shoppe/hooks/useJWContext/index.tsx","../../../app/javascript/src/shoppe/elements/JWCustomElem/index.tsx","../../../node_modules/react-jw-player/dist/create-event-handlers/on-ad-play.js","../../../node_modules/react-jw-player/dist/create-event-handlers/on-before-play.js","../../../node_modules/react-jw-player/dist/create-event-handlers/on-full-screen.js","../../../node_modules/react-jw-player/dist/create-event-handlers/on-mute.js","../../../node_modules/react-jw-player/dist/create-event-handlers/on-play.js","../../../node_modules/react-jw-player/dist/create-event-handlers/on-time.js","../../../node_modules/react-jw-player/dist/create-event-handlers/on-video-load.js","../../../node_modules/react-jw-player/dist/create-event-handlers/index.js","../../../node_modules/react-jw-player/dist/helpers/get-curried-on-load.js","../../../node_modules/react-jw-player/dist/helpers/get-player-opts.js","../../../node_modules/react-jw-player/dist/helpers/get-event-name-from-prop.js","../../../node_modules/react-jw-player/dist/helpers/initialize.js","../../../node_modules/react-jw-player/dist/helpers/install-player-script.js","../../../node_modules/react-jw-player/dist/helpers/remove-jw-player-instance.js","../../../node_modules/react-jw-player/dist/helpers/set-jw-player-defaults.js","../../../node_modules/react-jw-player/dist/default-props.js","../../../node_modules/react-jw-player/dist/player-prop-types.js","../../../node_modules/react-jw-player/dist/react-jw-player.js","../../../app/javascript/src/shoppe/elements/JWPlayer/elements/Player/elements/CustomJWPlayer/index.tsx","../../../app/javascript/src/shoppe/elements/JWSelector/index.tsx","../../../app/javascript/src/shoppe/elements/JWPlayer/elements/Player/elements/NextControl/index.tsx","../../../app/javascript/src/shoppe/elements/JWPlayer/elements/Player/elements/ReplayControl/index.tsx","../../../app/javascript/src/shoppe/elements/JWPlayer/elements/Player/elements/SkipControl/index.tsx","../../../app/javascript/src/shoppe/elements/JWPlayer/elements/Player/index.tsx","../../../app/javascript/src/shoppe/elements/JWPlayer/index.tsx"],"sourcesContent":["import snakecaseKeys from 'snakecase-keys';\nimport ahoyTrack from 'src/explore/services/ahoy';\n\nexport enum IEvent {\n  CLICK = 'Click',\n  VIDEO_CHANGED = 'Video Changed',\n  VIDEO_PLAYED = 'Video Played',\n  VIDEO_STOPPED = 'Video Stopped',\n  VIDEO_WATCHED = 'Video Watched',\n}\n\nfunction createTracker<T extends Record<string, unknown>>(\n  name: IEvent,\n  options: { snakeCase?: boolean } = { snakeCase: true }\n) {\n  return ( properties: T ) => {\n    ahoyTrack( name, options.snakeCase ? snakecaseKeys( properties, { deep: true }) : properties );\n  };\n}\n\nexport default {\n  createTracker,\n};\n","export const getJWPlayer = ( id: string ) => {\n  const player = window.jwplayer && window.jwplayer( id );\n\n  if ( !player || !player.id ) return null;\n\n  return player;\n};\n","import EventTracker, { IEvent } from '../../../EventTracker';\nimport { getJWPlayer } from '../getJWPlayer';\n\nexport enum IEventSource {\n  AUTOPLAY = 'autoplay',\n  INTERACTION = 'player-interaction',\n  MUTE = 'mute',\n  NEXT_CARD = 'next-card',\n  REPLAY = 'replay',\n  SEARCH_CARD = 'search-card',\n  SKIP = 'skip',\n  VIDEO_CARD = 'video-card',\n}\n\nexport type IEventData = {\n  merchantId?: number;\n  numRewatched?: number;\n  playlistId?: number;\n  productId?: number;\n  ref?: string;\n  type?: 'clip' | 'full video';\n  videoId: number;\n};\n\nconst changed = (\n  source: IEventSource,\n  {\n    prev = {},\n    next = {},\n  }: {\n    prev: Partial<IEventData>;\n    next: Partial<IEventData>;\n  },\n  data: Partial<IEventData> = {}\n) => {\n  EventTracker.createTracker( IEvent.VIDEO_CHANGED )({\n    source,\n    prevPlaylistId: prev.playlistId,\n    prevVideoId: prev.videoId,\n    prevMerchantId: prev.merchantId,\n    prevProductId: prev.productId,\n    nextPlaylistId: next.playlistId,\n    nextVideoId: next.videoId,\n    nextMerchantId: next.merchantId,\n    nextProductId: next.productId,\n    ...data,\n  });\n};\n\nconst click = (\n  element: any,\n  playerId: string,\n  source: IEventSource,\n  data: Partial<IEventData> = {}\n) => {\n  const player = getJWPlayer( playerId );\n\n  if ( player ) {\n    const videoPosition = `${Math.round(\n      ( player.getPosition() / player.getDuration() || 0 ) * 100\n    )}%`;\n\n    EventTracker.createTracker( IEvent.CLICK )({\n      class: element?.className,\n      href: window.location.href,\n      page: window.location.pathname,\n      source,\n      tag: element?.type,\n      text: element?.textContent,\n      videoPosition,\n      ...data,\n    });\n  }\n};\n\nconst played = ( playerId: string, source: IEventSource, data: Partial<IEventData> = {}) => {\n  const player = getJWPlayer( playerId );\n\n  if ( player ) {\n    const videoCurrentTime = player.getPosition();\n    const videoDuration = player.getDuration();\n    const videoPosition = `${Math.round(( videoCurrentTime / videoDuration || 0 ) * 100 )}%`;\n\n    EventTracker.createTracker( IEvent.VIDEO_PLAYED )({\n      source,\n      videoCurrentTime,\n      videoDuration,\n      videoPosition,\n      ...data,\n    });\n  }\n};\n\nconst watched = (\n  playerId: string,\n  position: number,\n  source: IEventSource,\n  data: Partial<IEventData> = {}\n) => {\n  const player = getJWPlayer( playerId );\n\n  if ( player ) {\n    const videoCurrentTime = player.getPosition();\n    const videoDuration = player.getDuration();\n    const videoPosition = `${position}%`;\n\n    EventTracker.createTracker( IEvent.VIDEO_WATCHED )({\n      source,\n      videoCurrentTime,\n      videoDuration,\n      videoPosition,\n      ...data,\n    });\n  }\n};\n\nconst stopped = ( playerId: string, source: IEventSource, data: Partial<IEventData> = {}) => {\n  const player = getJWPlayer( playerId );\n\n  if ( player ) {\n    const videoCurrentTime = player.getPosition();\n    const videoDuration = player.getDuration();\n    const videoPosition = `${Math.round(( videoCurrentTime / videoDuration || 0 ) * 100 )}%`;\n\n    EventTracker.createTracker( IEvent.VIDEO_STOPPED )({\n      source,\n      videoCurrentTime,\n      videoDuration,\n      videoPosition,\n      ...data,\n    });\n  }\n};\n\nexport const track = {\n  changed,\n  click,\n  played,\n  stopped,\n  watched,\n};\n","import React, { useCallback, useState } from 'react';\n\nimport { getJWPlayer, track, IEventSource } from 'src/shoppe/services/JWPlayer';\n\ninterface IState {\n  isReady: boolean;\n  isVolumeSet: boolean;\n  isComplete: boolean;\n  outroCountdown: number | null;\n  outroLength: number | null;\n  source: IEventSource;\n}\n\ntype IUpdateContextFunc = ( value: Partial<IState> | (( prev: IState ) => IState )) => void;\n\nexport interface IContext extends IState {\n  isOutro: boolean;\n  playerId: string;\n  track: typeof track;\n  getPlayer: () => null | any;\n  updateContext: IUpdateContextFunc;\n}\n\nexport const INITIAL_STATE: IState = {\n  isComplete: false,\n  isVolumeSet: false,\n  isReady: false,\n  outroCountdown: null,\n  outroLength: null,\n  source: IEventSource.AUTOPLAY,\n};\n\nconst INITIAL_CONTEXT: IContext = {\n  ...INITIAL_STATE,\n  isOutro: false,\n  playerId: undefined,\n  track,\n  getPlayer: () => null,\n  updateContext: () => null,\n};\n\nexport const JWContext = React.createContext<IContext | null>( null );\n\nexport const JWProvider: React.FC<{ playerId: string }> = ({ playerId, children }) => {\n  const [ state, setState ] = useState( INITIAL_STATE );\n\n  const getPlayer = useCallback(() => getJWPlayer( playerId ), [ playerId ]);\n\n  const isOutro = state.outroCountdown !== null && state.outroCountdown < state.outroLength;\n\n  const updateContext: IUpdateContextFunc = useCallback(( val ) => {\n    if ( typeof val === 'function' ) return setState( val );\n\n    return setState(( prev ) => ({\n      ...prev,\n      ...val,\n    }));\n  }, []);\n\n  return (\n    <JWContext.Provider\n      value={{\n        ...INITIAL_CONTEXT,\n        ...state,\n        isOutro,\n        playerId,\n        getPlayer,\n        updateContext,\n      }}\n    >\n      {children}\n    </JWContext.Provider>\n  );\n};\n\nexport const useJWContext = () => {\n  const context = React.useContext( JWContext );\n\n  if ( context === undefined ) {\n    throw new Error( 'useJWContext can only be used inside JWProvider' );\n  }\n\n  return context;\n};\n","/* eslint-disable consistent-return */\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport { useJWContext, JWContext } from 'src/shoppe/hooks/useJWContext';\n\n/**\n * Used to insert new elements into the DOM within the context of a JWPlayer\n */\nexport const JWCustomElem: React.FC<{\n  className?: string;\n  id: string;\n  insertAfterSelector?: string;\n  children: React.ReactElement;\n}> = ({ className = '', id, insertAfterSelector = '.jw-hidden-accessibility', children }) => {\n  const [ prevCustomElement, setPrevCustomElement ] = React.useState<HTMLDivElement | null>( null );\n  const [ prevCustomElementId, setPrevCustomElementId ] = React.useState( null );\n\n  const ctx = useJWContext();\n\n  React.useEffect(() => {\n    if ( !ctx.isReady ) return;\n\n    let customElement = prevCustomElement;\n\n    if ( prevCustomElementId !== id ) {\n      // cleanup if id changed\n      if ( customElement ) {\n        ReactDOM.unmountComponentAtNode( customElement );\n        customElement?.remove();\n      }\n\n      customElement = document.createElement( 'div' );\n      customElement.className = className;\n      customElement.id = id;\n\n      setPrevCustomElementId( id );\n      setPrevCustomElement( customElement );\n\n      document\n        .querySelector( `#${ctx.playerId} ${insertAfterSelector}` )\n        ?.insertAdjacentElement( 'afterend', customElement );\n    }\n\n    if ( children && customElement ) {\n      // share the same context of the parent provider\n      ReactDOM.render(\n        <JWContext.Provider value={ctx}>{children}</JWContext.Provider>,\n        customElement\n      );\n    }\n  }, [ id, ctx, children ]);\n\n  return null;\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nfunction onAdPlay(event) {\n  if (!this.state.adHasPlayed) {\n    this.props.onAdPlay(event);\n    this.setState({\n      adHasPlayed: true\n    });\n  } else {\n    this.props.onAdResume(event);\n  }\n}\n\nexports.default = onAdPlay;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nfunction onBeforePlay(event, player) {\n  var currentVideo = player.getPlaylistItem();\n\n  if (!this.state.hasPlayed && !this.state.adHasPlayed && typeof this.props.generatePrerollUrl === 'function') {\n    player.playAd(this.props.generatePrerollUrl(currentVideo));\n  }\n}\n\nexports.default = onBeforePlay;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nfunction onFullScreen(event) {\n  if (event.fullscreen) {\n    this.props.onEnterFullScreen(event);\n  } else {\n    this.props.onExitFullScreen(event);\n  }\n}\n\nexports.default = onFullScreen;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nfunction onMute(event) {\n  if (event.mute) {\n    this.props.onMute(event);\n  } else {\n    this.props.onUnmute(event);\n  }\n}\n\nexports.default = onMute;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nfunction onPlay(event) {\n  if (event.playReason === 'autostart') {\n    this.setState({\n      hasPlayed: true\n    });\n    this.props.onAutoStart(event);\n  } else if (this.state.hasPlayed && (event.oldstate === 'buffering' || event.oldstate === 'paused')) {\n    this.props.onResume(event);\n  } else {\n    this.props.onPlay(event);\n    this.setState({\n      hasPlayed: true\n    });\n  }\n}\n\nexports.default = onPlay;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nfunction onTime(event) {\n  var hasFired = this.state.hasFired;\n  var position = event.position,\n      duration = event.duration;\n\n  var hasChanged = false;\n\n  this.props.onTime(event);\n\n  if (!hasFired.threeSeconds && position > 3) {\n    this.props.onThreeSeconds();\n    hasFired.threeSeconds = true;\n    hasChanged = true;\n  }\n\n  if (!hasFired.tenSeconds && position > 10) {\n    this.props.onTenSeconds();\n    hasFired.tenSeconds = true;\n    hasChanged = true;\n  }\n\n  if (!hasFired.thirtySeconds && position > 30) {\n    this.props.onThirtySeconds();\n    hasFired.thirtySeconds = true;\n    hasChanged = true;\n  }\n\n  if (!hasFired.twentyFivePercent && position / duration * 100 > 25) {\n    this.props.onTwentyFivePercent();\n    hasFired.twentyFivePercent = true;\n    hasChanged = true;\n  }\n\n  if (!hasFired.fiftyPercent && position / duration * 100 > 50) {\n    this.props.onFiftyPercent();\n    hasFired.fiftyPercent = true;\n    hasChanged = true;\n  }\n\n  if (!hasFired.seventyFivePercent && position / duration * 100 > 75) {\n    this.props.onSeventyFivePercent();\n    hasFired.seventyFivePercent = true;\n    hasChanged = true;\n  }\n\n  if (!hasFired.ninetyFivePercent && position / duration * 100 > 95) {\n    this.props.onNinetyFivePercent();\n    hasFired.ninetyFivePercent = true;\n    hasChanged = true;\n  }\n\n  if (hasChanged) {\n    this.setState({\n      hasFired: hasFired\n    });\n  }\n}\n\nexports.default = onTime;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nfunction onVideoLoad(event) {\n  this.setState({\n    hasFired: {}\n  });\n  this.props.onVideoLoad(event);\n}\n\nexports.default = onVideoLoad;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _onAdPlay = require('./on-ad-play');\n\nvar _onAdPlay2 = _interopRequireDefault(_onAdPlay);\n\nvar _onBeforePlay = require('./on-before-play');\n\nvar _onBeforePlay2 = _interopRequireDefault(_onBeforePlay);\n\nvar _onFullScreen = require('./on-full-screen');\n\nvar _onFullScreen2 = _interopRequireDefault(_onFullScreen);\n\nvar _onMute = require('./on-mute');\n\nvar _onMute2 = _interopRequireDefault(_onMute);\n\nvar _onPlay = require('./on-play');\n\nvar _onPlay2 = _interopRequireDefault(_onPlay);\n\nvar _onTime = require('./on-time');\n\nvar _onTime2 = _interopRequireDefault(_onTime);\n\nvar _onVideoLoad = require('./on-video-load');\n\nvar _onVideoLoad2 = _interopRequireDefault(_onVideoLoad);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createEventHandlers(component) {\n  return {\n    onAdPlay: _onAdPlay2.default.bind(component),\n    onBeforePlay: _onBeforePlay2.default.bind(component),\n    onFullScreen: _onFullScreen2.default.bind(component),\n    onMute: _onMute2.default.bind(component),\n    onPlay: _onPlay2.default.bind(component),\n    onTime: _onTime2.default.bind(component),\n    onVideoLoad: _onVideoLoad2.default.bind(component)\n  };\n}\n\nexports.default = createEventHandlers;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nfunction getCurriedOnLoad(existingScript, callback) {\n  var previousOnload = existingScript.onload || function () {};\n  var curriedOnLoad = function curriedOnLoad() {\n    previousOnload();\n    callback();\n  };\n\n  return curriedOnLoad;\n}\n\nexports.default = getCurriedOnLoad;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction getPlayerOpts(opts) {\n  var aspectRatio = opts.aspectRatio,\n      _opts$customProps = opts.customProps,\n      customProps = _opts$customProps === undefined ? {} : _opts$customProps,\n      file = opts.file,\n      generatePrerollUrl = opts.generatePrerollUrl,\n      image = opts.image,\n      isAutoPlay = opts.isAutoPlay,\n      isMuted = opts.isMuted,\n      licenseKey = opts.licenseKey,\n      playlist = opts.playlist;\n\n\n  var hasAdvertising = !!generatePrerollUrl;\n\n  var playerOpts = {};\n\n  if (licenseKey) {\n    playerOpts.key = licenseKey;\n  }\n\n  if (playlist) {\n    playerOpts.playlist = playlist;\n  } else if (file) {\n    playerOpts.file = file;\n  }\n\n  if (aspectRatio && aspectRatio !== 'inherit') {\n    playerOpts.aspectratio = aspectRatio;\n  }\n\n  if (hasAdvertising) {\n    playerOpts.advertising = {\n      client: 'googima',\n      admessage: 'Ad — xxs left',\n      autoplayadsmuted: true\n    };\n  }\n\n  if (typeof isAutoPlay !== 'undefined') {\n    playerOpts.autostart = !!isAutoPlay;\n  }\n\n  if (typeof isMuted !== 'undefined') {\n    playerOpts.mute = !!isMuted;\n  }\n\n  if (image) {\n    playerOpts.image = image;\n  }\n\n  return _extends(playerOpts, customProps);\n}\n\nexports.default = getPlayerOpts;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); }\n\nvar getEventNameFromProp = function getEventNameFromProp(prop) {\n  var beginsWithOn = prop.slice(0, 2) === 'on';\n\n  if (beginsWithOn) {\n    var eventName = prop.slice(2);\n\n    var _eventName = _toArray(eventName),\n        firstLetter = _eventName[0],\n        rest = _eventName.slice(1);\n\n    return '' + firstLetter.toLowerCase() + rest.join('');\n  }\n\n  return null;\n};\n\nexports.default = getEventNameFromProp;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getEventNameFromProp = require('./get-event-name-from-prop');\n\nvar _getEventNameFromProp2 = _interopRequireDefault(_getEventNameFromProp);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initialize(_ref) {\n  var component = _ref.component,\n      player = _ref.player,\n      playerOpts = _ref.playerOpts;\n\n  function _onBeforePlay(event) {\n    component.eventHandlers.onBeforePlay(event, player);\n  }\n\n  player.setup(playerOpts);\n\n  var eventsToInitialize = {};\n\n  Object.keys(component.props).forEach(function (prop) {\n    var eventName = (0, _getEventNameFromProp2.default)(prop);\n\n    if (eventName) {\n      eventsToInitialize[eventName] = component.props[prop];\n    }\n  });\n\n  eventsToInitialize.adPlay = component.eventHandlers.onAdPlay;\n  eventsToInitialize.beforeComplete = component.props.onOneHundredPercent;\n  eventsToInitialize.beforePlay = _onBeforePlay;\n  eventsToInitialize.fullscreen = component.eventHandlers.onFullScreen;\n  eventsToInitialize.mute = component.eventHandlers.onMute;\n  eventsToInitialize.play = component.eventHandlers.onPlay;\n  eventsToInitialize.playlistItem = component.eventHandlers.onVideoLoad;\n  eventsToInitialize.time = component.eventHandlers.onTime;\n\n  Object.keys(eventsToInitialize).forEach(function (event) {\n    player.on(event, eventsToInitialize[event]);\n  });\n}\n\nexports.default = initialize;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nfunction installPlayerScript(_ref) {\n  var context = _ref.context,\n      onLoadCallback = _ref.onLoadCallback,\n      scriptSrc = _ref.scriptSrc,\n      uniqueScriptId = _ref.uniqueScriptId;\n\n  var jwPlayerScript = context.createElement('script');\n  jwPlayerScript.id = uniqueScriptId;\n  jwPlayerScript.src = scriptSrc;\n  jwPlayerScript.onload = onLoadCallback;\n\n  context.head.appendChild(jwPlayerScript);\n}\n\nexports.default = installPlayerScript;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nfunction removeJWPlayerInstance(playerId, context) {\n  var player = context.jwplayer && context.jwplayer(playerId);\n\n  if (player) {\n    player.remove();\n  }\n}\n\nexports.default = removeJWPlayerInstance;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/* eslint-disable no-param-reassign */\n\nvar setJWPlayerDefaults = function setJWPlayerDefaults(_ref) {\n  var context = _ref.context,\n      playerId = _ref.playerId;\n\n  var playerConfigs = context.__JW_PLAYER_CONFIGS__ = context.__JW_PLAYER_CONFIGS__ || {};\n  var existingConfig = playerConfigs[playerId];\n\n  if (existingConfig) {\n    context.jwplayer.defaults = existingConfig;\n  } else {\n    playerConfigs[playerId] = context.jwplayer.defaults;\n  }\n};\n\nexports.default = setJWPlayerDefaults;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar noOp = function noOp() {};\n\nvar defaultProps = {\n  aspectRatio: 'inherit',\n  file: '',\n  isAutoPlay: undefined,\n  isMuted: undefined,\n  onAdPlay: noOp,\n  onAdResume: noOp,\n  onAdSkipped: noOp,\n  onAdComplete: noOp,\n  onEnterFullScreen: noOp,\n  onExitFullScreen: noOp,\n  onMute: noOp,\n  onUnmute: noOp,\n  onAutoStart: noOp,\n  onResume: noOp,\n  onPlay: noOp,\n  onClose: noOp,\n  onReady: noOp,\n  onError: noOp,\n  onAdPause: noOp,\n  onPause: noOp,\n  onVideoLoad: noOp,\n  onOneHundredPercent: noOp,\n  onThreeSeconds: noOp,\n  onTenSeconds: noOp,\n  onThirtySeconds: noOp,\n  onTwentyFivePercent: noOp,\n  onFiftyPercent: noOp,\n  onSeventyFivePercent: noOp,\n  onNinetyFivePercent: noOp,\n  onTime: noOp,\n  onBuffer: noOp,\n  onBufferChange: noOp,\n  playlist: '',\n  useMultiplePlayerScripts: false\n};\n\nexports.default = defaultProps;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar propTypes = {\n  aspectRatio: _propTypes2.default.oneOf(['inherit', '1:1', '16:9']),\n  className: _propTypes2.default.string,\n  customProps: _propTypes2.default.object,\n  file: _propTypes2.default.string,\n  generatePrerollUrl: _propTypes2.default.func,\n  image: _propTypes2.default.string,\n  isAutoPlay: _propTypes2.default.bool,\n  isMuted: _propTypes2.default.bool,\n  licenseKey: _propTypes2.default.string,\n  onAdPause: _propTypes2.default.func,\n  onAdPlay: _propTypes2.default.func,\n  onAdResume: _propTypes2.default.func,\n  onAdSkipped: _propTypes2.default.func,\n  onAdComplete: _propTypes2.default.func,\n  onAutoStart: _propTypes2.default.func,\n  onEnterFullScreen: _propTypes2.default.func,\n  onError: _propTypes2.default.func,\n  onExitFullScreen: _propTypes2.default.func,\n  onFiftyPercent: _propTypes2.default.func,\n  onMute: _propTypes2.default.func,\n  onNinetyFivePercent: _propTypes2.default.func,\n  onOneHundredPercent: _propTypes2.default.func,\n  onPause: _propTypes2.default.func,\n  onPlay: _propTypes2.default.func,\n  onReady: _propTypes2.default.func,\n  onResume: _propTypes2.default.func,\n  onSeventyFivePercent: _propTypes2.default.func,\n  onTenSeconds: _propTypes2.default.func,\n  onThirtySeconds: _propTypes2.default.func,\n  onThreeSeconds: _propTypes2.default.func,\n  onTwentyFivePercent: _propTypes2.default.func,\n  onUnmute: _propTypes2.default.func,\n  onVideoLoad: _propTypes2.default.func,\n  onBuffer: _propTypes2.default.func,\n  onBufferChange: _propTypes2.default.func,\n  playerId: _propTypes2.default.string.isRequired,\n  playerScript: _propTypes2.default.string.isRequired,\n  playlist: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.array]),\n  useMultiplePlayerScripts: _propTypes2.default.bool\n};\n\nexports.default = propTypes;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactFastCompare = require('react-fast-compare');\n\nvar _reactFastCompare2 = _interopRequireDefault(_reactFastCompare);\n\nvar _createEventHandlers = require('./create-event-handlers');\n\nvar _createEventHandlers2 = _interopRequireDefault(_createEventHandlers);\n\nvar _getCurriedOnLoad = require('./helpers/get-curried-on-load');\n\nvar _getCurriedOnLoad2 = _interopRequireDefault(_getCurriedOnLoad);\n\nvar _getPlayerOpts = require('./helpers/get-player-opts');\n\nvar _getPlayerOpts2 = _interopRequireDefault(_getPlayerOpts);\n\nvar _initialize2 = require('./helpers/initialize');\n\nvar _initialize3 = _interopRequireDefault(_initialize2);\n\nvar _installPlayerScript = require('./helpers/install-player-script');\n\nvar _installPlayerScript2 = _interopRequireDefault(_installPlayerScript);\n\nvar _removeJwPlayerInstance = require('./helpers/remove-jw-player-instance');\n\nvar _removeJwPlayerInstance2 = _interopRequireDefault(_removeJwPlayerInstance);\n\nvar _setJwPlayerDefaults = require('./helpers/set-jw-player-defaults');\n\nvar _setJwPlayerDefaults2 = _interopRequireDefault(_setJwPlayerDefaults);\n\nvar _defaultProps = require('./default-props');\n\nvar _defaultProps2 = _interopRequireDefault(_defaultProps);\n\nvar _playerPropTypes = require('./player-prop-types');\n\nvar _playerPropTypes2 = _interopRequireDefault(_playerPropTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar displayName = 'ReactJWPlayer';\n\nvar ReactJWPlayer = function (_Component) {\n  _inherits(ReactJWPlayer, _Component);\n\n  function ReactJWPlayer(props) {\n    _classCallCheck(this, ReactJWPlayer);\n\n    var _this = _possibleConstructorReturn(this, (ReactJWPlayer.__proto__ || Object.getPrototypeOf(ReactJWPlayer)).call(this, props));\n\n    _this.state = {\n      adHasPlayed: false,\n      hasPlayed: false,\n      hasFired: {}\n    };\n    _this.eventHandlers = (0, _createEventHandlers2.default)(_this);\n    _this.uniqueScriptId = 'jw-player-script';\n\n    if (props.useMultiplePlayerScripts) {\n      _this.uniqueScriptId += '-' + props.playerId;\n    }\n\n    _this.videoRef = null;\n    _this._initialize = _this._initialize.bind(_this);\n    _this._setVideoRef = _this._setVideoRef.bind(_this);\n    return _this;\n  }\n\n  _createClass(ReactJWPlayer, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var isJWPlayerScriptLoaded = !!window.jwplayer;\n      var existingScript = document.getElementById(this.uniqueScriptId);\n      var isUsingMultiplePlayerScripts = this.props.useMultiplePlayerScripts;\n\n      if (!isUsingMultiplePlayerScripts && isJWPlayerScriptLoaded) {\n        this._initialize();\n        return;\n      }\n\n      if (isUsingMultiplePlayerScripts && existingScript) {\n        this._initialize();\n        return;\n      }\n\n      if (!existingScript) {\n        (0, _installPlayerScript2.default)({\n          context: document,\n          onLoadCallback: this._initialize,\n          scriptSrc: this.props.playerScript,\n          uniqueScriptId: this.uniqueScriptId\n        });\n      } else {\n        existingScript.onload = (0, _getCurriedOnLoad2.default)(existingScript, this._initialize);\n      }\n    }\n  }, {\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      var hasFileChanged = this.props.file !== nextProps.file;\n      var hasPlaylistChanged = !(0, _reactFastCompare2.default)(this.props.playlist, nextProps.playlist);\n\n      return hasFileChanged || hasPlaylistChanged;\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate() {\n      if (window.jwplayer && window.jwplayer(this.videoRef)) {\n        this._initialize();\n      }\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      (0, _removeJwPlayerInstance2.default)(this.videoRef, window);\n    }\n  }, {\n    key: '_initialize',\n    value: function _initialize() {\n      var _props = this.props,\n          playerId = _props.playerId,\n          useMultiplePlayerScripts = _props.useMultiplePlayerScripts;\n\n\n      if (useMultiplePlayerScripts) {\n        (0, _setJwPlayerDefaults2.default)({ context: window, playerId: playerId });\n      }\n\n      var component = this;\n      var player = window.jwplayer(this.videoRef);\n      if (!player) {\n        // this player ref may have been destroyed already\n        return;\n      }\n\n      var playerOpts = (0, _getPlayerOpts2.default)(this.props);\n\n      (0, _initialize3.default)({ component: component, player: player, playerOpts: playerOpts });\n    }\n  }, {\n    key: '_setVideoRef',\n    value: function _setVideoRef(element) {\n      this.videoRef = element;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return _react2.default.createElement(\n        'div',\n        { className: this.props.className },\n        _react2.default.createElement('div', { id: this.props.playerId, ref: this._setVideoRef })\n      );\n    }\n  }]);\n\n  return ReactJWPlayer;\n}(_react.Component);\n\nReactJWPlayer.defaultProps = _defaultProps2.default;\nReactJWPlayer.displayName = displayName;\nReactJWPlayer.propTypes = _playerPropTypes2.default;\nexports.default = ReactJWPlayer;","import ReactJWPlayer from 'react-jw-player';\nimport PropTypes from 'prop-types';\n\nimport { getJWPlayer } from 'src/shoppe/services/JWPlayer';\n\n// We want to override the componentDidUpdate method in ReactJWPlayer to prevent\n// reinitializing the video player\n// https://github.com/micnews/react-jw-player/blob/v1.19.0/src/react-jw-player.jsx#L7\nexport class CustomJWPlayer extends ReactJWPlayer {\n  componentDidUpdate() {\n    getJWPlayer( this.props.playerId )?.load( this.props.file || this.props.playlist );\n  }\n}\n\nexport type CustomJWPlayerProps = React.ComponentProps<typeof CustomJWPlayer>;\n\n// @ts-ignore change proptypes for aspect ratio to support the full set\nCustomJWPlayer.propTypes = {\n  // @ts-ignore\n  ...ReactJWPlayer.propTypes,\n  aspectRatio: PropTypes.string,\n};\n","import * as React from 'react';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\n\n/**\n * Used to select and alter preexitising JW player dom elements\n */\nexport const JWSelector: React.FC<{\n  className?: string;\n  insertBefore?: string;\n  resetEventHandlers?: boolean;\n  selector: string;\n  style?: Partial<CSSStyleDeclaration>;\n  onClick?: () => void;\n}> = ({ className, insertBefore, resetEventHandlers, selector, style, onClick }) => {\n  const { isReady, playerId } = useJWContext();\n\n  React.useEffect(() => {\n    if ( isReady ) {\n      const elem = document.querySelector( `#${playerId} ${selector}` ) as HTMLDivElement;\n      const adjacent = document.querySelector( `#${playerId} ${insertBefore || selector}` );\n\n      if ( elem && adjacent ) {\n        const insertElem = resetEventHandlers ? ( elem.cloneNode( true ) as HTMLDivElement ) : elem;\n        const created = adjacent.insertAdjacentElement( 'beforebegin', insertElem ) as HTMLDivElement;\n\n        if ( resetEventHandlers ) {\n          elem.remove();\n        }\n\n        if ( className ) created.classList.add( ...className.split( ' ' ));\n        if ( onClick ) created.addEventListener( 'click', onClick );\n\n        Object.keys( style || {}).forEach(( key: any ) => {\n          created.style[key] = style[key];\n        });\n      }\n    }\n  }, [ className, isReady, style, onClick ]);\n\n  return null;\n};\n","import * as React from 'react';\n\nimport { JWSelector } from 'src/shoppe/elements/JWSelector';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\nimport { IEventSource } from 'src/shoppe/services/JWPlayer';\n\nexport const NextControl = ({ onNext }: { onNext: () => void }) => {\n  const { updateContext } = useJWContext();\n\n  const handleClick = React.useCallback(() => {\n    updateContext({ source: IEventSource.INTERACTION });\n    onNext();\n  }, [ onNext ]);\n\n  if ( !onNext ) return null;\n\n  return (\n    <JWSelector\n      className=\"spec__button-next-video d-flex\"\n      insertBefore=\".jw-button-container > :last-child\"\n      resetEventHandlers\n      selector=\".jw-icon-inline.jw-icon-next\"\n      onClick={handleClick}\n    />\n  );\n};\n","import React from 'react';\n\nimport { JWSelector } from 'src/shoppe/elements/JWSelector';\nimport { IEventSource } from 'src/shoppe/services/JWPlayer';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\n\nexport const ReplayControl = () => {\n  const { isComplete, source, updateContext } = useJWContext();\n\n  const handleClick = React.useCallback(() => {\n    // the display icon can be a reset, pause, play, or loading\"\n    // to ennsure this is a replay interaction only set if the video is complete\n    updateContext({\n      source: isComplete ? IEventSource.REPLAY : source,\n    });\n  }, [ isComplete, source ]);\n\n  return <JWSelector selector=\".jw-icon-display\" onClick={handleClick} />;\n};\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { useState } from 'react';\nimport cls from 'classnames';\n\nimport { JWCustomElem } from 'src/shoppe/elements/JWCustomElem';\nimport { IEventSource } from 'src/shoppe/services/JWPlayer';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\nimport { SvgUse } from 'src/shoppe/elements/SvgUse';\n\ninterface SkipControlProps {\n  id: string;\n  className?: string;\n  insertAfterSelector: string;\n  tooltip?: boolean;\n}\n\nexport const SkipControl = ({ id, className, insertAfterSelector, tooltip }: SkipControlProps ) => {\n  const { getPlayer, isComplete, updateContext } = useJWContext();\n\n  const [ tipClass, setTipClass ] = useState<string>( null );\n\n  const handleClick = () => {\n    if ( !isComplete ) {\n      updateContext({\n        source: IEventSource.SKIP,\n      });\n      getPlayer()?.seek( getPlayer().getPosition() + 10 );\n    }\n  };\n\n  const handleMouseEnter = () => {\n    setTipClass( 'jw-open' );\n  };\n\n  const handleMouseLeave = () => {\n    setTipClass( null );\n  };\n\n  return (\n    <JWCustomElem className={className} id={id} insertAfterSelector={insertAfterSelector}>\n      <div\n        aria-label=\"Skip 10 Seconds\"\n        className=\"jw-icon jw-icon-inline jw-button-color jw-reset jw-icon-rewind d-flex align-items-center justify-content-center h-100 w-100\"\n        role=\"button\"\n        tabIndex={0}\n        onClick={handleClick}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n      >\n        {/* dummy svg that gets set with css */}\n        <SvgUse name=\"\" className=\"jw-svg-icon jw-svg-icon-ff\" />\n\n        {tooltip && (\n          <div className={cls( 'jw-reset-text jw-tooltip jw-tooltip-skip', tipClass )} dir=\"auto\">\n            <div className=\"jw-text\">Skip 10 Seconds</div>\n          </div>\n        )}\n      </div>\n    </JWCustomElem>\n  );\n};\n","import React from 'react';\nimport cls from 'classnames';\n\nimport { IEventData, IEventSource } from 'src/shoppe/services/JWPlayer';\nimport { useJWContext, INITIAL_STATE } from 'src/shoppe/hooks/useJWContext';\n\nimport { CustomJWPlayer, CustomJWPlayerProps } from './elements/CustomJWPlayer';\nimport { NextControl } from './elements/NextControl';\nimport { ReplayControl } from './elements/ReplayControl';\nimport { SkipControl } from './elements/SkipControl';\n\nimport styles from './index.module.sass';\n\nexport interface Props extends Omit<CustomJWPlayerProps, 'customProps' | 'playerScript'> {\n  customProps?: any;\n  eventData?: IEventData;\n  outroCountdown?: number;\n  outroLength?: number;\n  onNext?: () => void;\n}\n\nexport const Player = ({\n  className,\n  customProps = {},\n  eventData,\n  outroCountdown,\n  outroLength,\n  onAutoStart,\n  onNext,\n  onPlay,\n  onReady,\n  onResume,\n  onTime,\n  onTwentyFivePercent,\n  onFiftyPercent,\n  onSeventyFivePercent,\n  onOneHundredPercent,\n  ...props\n}: Props ) => {\n  const { getPlayer, isVolumeSet, playerId, track, updateContext } = useJWContext();\n\n  const [ source, setSource ] = React.useState<IEventSource>( null );\n\n  // on unmount reset context\n  React.useEffect(\n    () => () => {\n      updateContext({ ...INITIAL_STATE, isVolumeSet });\n    },\n    []\n  );\n\n  const [ , setPrevEventData ] = React.useState<Partial<IEventData>>( eventData );\n\n  /**\n   * CHANGE HANDLER\n   */\n  React.useEffect(() => {\n    setPrevEventData(( prev ) => {\n      // ensure there is a previous video to ensure this doesn't run on mount\n      if ( prev && eventData && prev.videoId !== eventData.videoId ) {\n        updateContext(( ctx ) => {\n          track.changed(\n            ctx.source,\n            {\n              prev,\n              next: eventData,\n            },\n            { ref: prev?.ref }\n          );\n          return ctx;\n        });\n      }\n\n      return eventData;\n    });\n  }, [ eventData?.videoId ]);\n\n  /**\n   * SETUP HANDLER\n   * most browsers won't autoplay video if they are not muted\n   * mute the player on initial load to allow autoplay\n   */\n  const handleReady = ( event: { setupTime: number; type: string; viewable: number }) => {\n    if ( props.isAutoPlay && !( isVolumeSet || props.isMuted === false )) getPlayer()?.setMute( true );\n    if ( onReady ) onReady( event );\n\n    updateContext({ isReady: true });\n  };\n\n  /**\n   * OUTRO LENGTH COUNTDOWN\n   */\n  React.useEffect(() => {\n    updateContext({\n      outroCountdown,\n      outroLength,\n    });\n  }, [ outroCountdown, outroLength, updateContext ]);\n\n  /**\n   * PLAY HANDLERS\n   */\n  const createPlayHandler = ( interaction: IEventSource, callback?: Function ) => ( e: any ) => {\n    if ( callback ) callback( e );\n\n    updateContext(( ctx ) => {\n      if ( eventData ) {\n        track.played( playerId, interaction, eventData );\n        setSource( interaction );\n      }\n\n      return {\n        ...ctx,\n        isComplete: false,\n        source: interaction,\n      };\n    });\n  };\n  const handleAutoplay = createPlayHandler( IEventSource.AUTOPLAY, onAutoStart );\n  const handlePlay = createPlayHandler( IEventSource.INTERACTION, onPlay );\n  const handleResume = createPlayHandler( IEventSource.INTERACTION, onResume );\n\n  /**\n   * WATCH HANDLERS\n   */\n  const createWatchHandler = ( position: number, callback?: Function ) => ( e: any ) => {\n    if ( callback ) callback( e );\n    if ( eventData ) track.watched( playerId, position, source, eventData );\n  };\n  const handleTwentyFivePercent = createWatchHandler( 25, onTwentyFivePercent );\n  const handleFiftyPercent = createWatchHandler( 50, onFiftyPercent );\n  const handleSeventyFivePercent = createWatchHandler( 75, onSeventyFivePercent );\n  const handleOneHundredPercent = createWatchHandler( 100, onOneHundredPercent );\n\n  /**\n   * COMPLETION HANDLERS\n   */\n  const createCompleteHandler = ( callback?: Function ) => ( e: any ) => {\n    if ( callback ) callback( e );\n\n    updateContext(( ctx ) => {\n      // It's better for us to compare down to the tenth of a second so that we don't\n      // miss any callbacks\n      const complete = Math.floor( e.currentTime * 10 ) === Math.floor( e.duration * 10 );\n      let interaction: IEventSource = ctx.source;\n      let remainingTime = ctx.outroCountdown;\n\n      if ( complete && onNext ) {\n        onNext();\n        interaction = IEventSource.AUTOPLAY;\n        remainingTime = null;\n      }\n\n      return {\n        ...ctx,\n        isComplete: complete,\n        source: interaction,\n        outroCountdown: remainingTime,\n      };\n    });\n  };\n  const handleTime = createCompleteHandler( onTime );\n\n  const handleChangeVolume = () => {\n    updateContext({ isVolumeSet: true });\n  };\n\n  return (\n    <>\n      <CustomJWPlayer\n        {...props}\n        className={cls( styles.player, className )}\n        customProps={customProps}\n        playerScript=\"https://cdn.jwplayer.com/libraries/AWDMXuA6.js\"\n        onAutoStart={handleAutoplay}\n        onFiftyPercent={handleFiftyPercent}\n        onMute={handleChangeVolume}\n        onOneHundredPercent={handleOneHundredPercent}\n        onPlay={handlePlay}\n        onReady={handleReady}\n        onResume={handleResume}\n        onSeventyFivePercent={handleSeventyFivePercent}\n        onTime={handleTime}\n        onTwentyFivePercent={handleTwentyFivePercent}\n        onUnmute={handleChangeVolume}\n      />\n      {/* shows on mobile over player, matches classname from native rewind button */}\n      <SkipControl\n        className=\"jw-display-icon-container jw-display-icon-rewind jw-reset\"\n        id=\"jw-skip-display\"\n        insertAfterSelector=\".jw-display-icon-display\"\n      />\n\n      {/* shows on desktop in controls, matches classname from native rewind button */}\n      <SkipControl\n        className=\"jw-icon jw-icon-inline jw-button-color jw-reset jw-icon-rewind\"\n        id=\"jw-skip-button\"\n        insertAfterSelector=\".jw-button-container .jw-icon-rewind\"\n        tooltip\n      />\n\n      <NextControl onNext={onNext} />\n      <ReplayControl />\n    </>\n  );\n};\n","import React from 'react';\n\nimport { JWProvider, JWContext } from 'src/shoppe/hooks/useJWContext';\nimport { Props, Player } from './elements/Player';\n\n// wrapper around the player to ensure it always has a Provider\nexport const JWPlayer: React.FC<Props> = ({ children, ...props }) => {\n  const context = React.useContext( JWContext );\n\n  let elem = (\n    <>\n      <Player {...props} />\n      {children}\n    </>\n  );\n\n  // if we detect that this JWPlayer already has context use that one\n  // else we need to make sure that this instance of the player has context\n  if ( !context ) {\n    elem = <JWProvider playerId={props.playerId}>{elem}</JWProvider>;\n  }\n\n  return elem;\n};\n"],"names":["IEvent","createTracker","name","options","properties","ahoyTrack","snakecaseKeys","EventTracker","getJWPlayer","id","player","IEventSource","changed","source","prev","next","data","click","element","playerId","videoPosition","played","videoCurrentTime","videoDuration","watched","position","stopped","track","INITIAL_STATE","INITIAL_CONTEXT","JWContext","React","JWProvider","children","state","setState","useState","getPlayer","useCallback","isOutro","updateContext","val","useJWContext","context","JWCustomElem","className","insertAfterSelector","prevCustomElement","setPrevCustomElement","React.useState","prevCustomElementId","setPrevCustomElementId","ctx","React.useEffect","customElement","ReactDOM","_a","onAdPlay_1","onAdPlay","event","onBeforePlay_1","onBeforePlay","currentVideo","onFullScreen_1","onFullScreen","onMute_1","onMute","onPlay_1","onPlay","onTime_1","onTime","hasFired","duration","hasChanged","onVideoLoad_1","onVideoLoad","createEventHandlers_1","_onAdPlay","require$$0","_onAdPlay2","_interopRequireDefault","_onBeforePlay","require$$1","_onBeforePlay2","_onFullScreen","require$$2","_onFullScreen2","_onMute","require$$3","_onMute2","_onPlay","require$$4","_onPlay2","_onTime","require$$5","_onTime2","_onVideoLoad","require$$6","_onVideoLoad2","obj","createEventHandlers","component","getCurriedOnLoad_1","getCurriedOnLoad","existingScript","callback","previousOnload","curriedOnLoad","getPlayerOpts_1","_extends","target","i","key","getPlayerOpts","opts","aspectRatio","_opts$customProps","customProps","file","generatePrerollUrl","image","isAutoPlay","isMuted","licenseKey","playlist","hasAdvertising","playerOpts","getEventNameFromProp_1","_toArray","arr","getEventNameFromProp","prop","beginsWithOn","eventName","_eventName","firstLetter","rest","initialize_1","_getEventNameFromProp","_getEventNameFromProp2","initialize","_ref","eventsToInitialize","installPlayerScript_1","installPlayerScript","onLoadCallback","scriptSrc","uniqueScriptId","jwPlayerScript","removeJwPlayerInstance","removeJWPlayerInstance","setJwPlayerDefaults","setJWPlayerDefaults","playerConfigs","existingConfig","defaultProps_1","noOp","defaultProps","playerPropTypes","_propTypes","_propTypes2","propTypes","reactJwPlayer","_createClass","defineProperties","props","descriptor","Constructor","protoProps","staticProps","_react","_react2","_reactFastCompare","_reactFastCompare2","_createEventHandlers","_createEventHandlers2","_getCurriedOnLoad","_getCurriedOnLoad2","_getPlayerOpts","_getPlayerOpts2","_initialize2","_initialize3","_installPlayerScript","_installPlayerScript2","_removeJwPlayerInstance","require$$7","_removeJwPlayerInstance2","_setJwPlayerDefaults","require$$8","_setJwPlayerDefaults2","_defaultProps","require$$9","_defaultProps2","_playerPropTypes","require$$10","_playerPropTypes2","_classCallCheck","instance","_possibleConstructorReturn","self","call","_inherits","subClass","superClass","displayName","ReactJWPlayer","_Component","_this","isJWPlayerScriptLoaded","isUsingMultiplePlayerScripts","nextProps","hasFileChanged","hasPlaylistChanged","_props","useMultiplePlayerScripts","_default","CustomJWPlayer","PropTypes","JWSelector","insertBefore","resetEventHandlers","selector","style","onClick","isReady","elem","adjacent","insertElem","created","NextControl","onNext","handleClick","React.useCallback","React.createElement","ReplayControl","isComplete","SkipControl","tooltip","tipClass","setTipClass","handleMouseEnter","handleMouseLeave","SvgUse","cls","Player","eventData","outroCountdown","outroLength","onAutoStart","onReady","onResume","onTwentyFivePercent","onFiftyPercent","onSeventyFivePercent","onOneHundredPercent","isVolumeSet","setSource","setPrevEventData","handleReady","createPlayHandler","interaction","e","handleAutoplay","handlePlay","handleResume","createWatchHandler","handleTwentyFivePercent","handleFiftyPercent","handleSeventyFivePercent","handleOneHundredPercent","handleTime","complete","remainingTime","handleChangeVolume","styles","JWPlayer"],"mappings":"qTAGY,IAAAA,GAAAA,IACVA,EAAA,MAAQ,QACRA,EAAA,cAAgB,gBAChBA,EAAA,aAAe,eACfA,EAAA,cAAgB,gBAChBA,EAAA,cAAgB,gBALNA,IAAAA,GAAA,CAAA,CAAA,EAQZ,SAASC,GACPC,EACAC,EAAmC,CAAE,UAAW,IAChD,CACA,OAASC,GAAmB,CACfC,GAAAH,EAAMC,EAAQ,UAAYG,GAAeF,EAAY,CAAE,KAAM,GAAM,EAAIA,CAAW,CAC/F,CACF,CAEA,MAAeG,EAAA,CACb,cAAAN,EACF,ECtBaO,EAAgBC,GAAgB,CAC3C,MAAMC,EAAS,OAAO,UAAY,OAAO,SAAUD,CAAG,EAEtD,MAAK,CAACC,GAAU,CAACA,EAAO,GAAY,KAE7BA,CACT,ECHY,IAAAC,GAAAA,IACVA,EAAA,SAAW,WACXA,EAAA,YAAc,qBACdA,EAAA,KAAO,OACPA,EAAA,UAAY,YACZA,EAAA,OAAS,SACTA,EAAA,YAAc,cACdA,EAAA,KAAO,OACPA,EAAA,WAAa,aARHA,IAAAA,GAAA,CAAA,CAAA,EAqBZ,MAAMC,GAAU,CACdC,EACA,CACE,KAAAC,EAAO,CAAC,EACR,KAAAC,EAAO,CAAA,CACT,EAIAC,EAA4B,CAAA,IACzB,CACUT,EAAA,cAAeP,EAAO,aAAc,EAAE,CACjD,OAAAa,EACA,eAAgBC,EAAK,WACrB,YAAaA,EAAK,QAClB,eAAgBA,EAAK,WACrB,cAAeA,EAAK,UACpB,eAAgBC,EAAK,WACrB,YAAaA,EAAK,QAClB,eAAgBA,EAAK,WACrB,cAAeA,EAAK,UACpB,GAAGC,CAAA,CACJ,CACH,EAEMC,GAAQ,CACZC,EACAC,EACAN,EACAG,EAA4B,CAAA,IACzB,CACG,MAAAN,EAASF,EAAaW,CAAS,EAErC,GAAKT,EAAS,CACN,MAAAU,EAAgB,GAAG,KAAK,OAC1BV,EAAO,YAAY,EAAIA,EAAO,YAAA,GAAiB,GAAM,GACxD,CAAA,IAEYH,EAAA,cAAeP,EAAO,KAAM,EAAE,CACzC,MAAOkB,GAAA,YAAAA,EAAS,UAChB,KAAM,OAAO,SAAS,KACtB,KAAM,OAAO,SAAS,SACtB,OAAAL,EACA,IAAKK,GAAA,YAAAA,EAAS,KACd,KAAMA,GAAA,YAAAA,EAAS,YACf,cAAAE,EACA,GAAGJ,CAAA,CACJ,CAAA,CAEL,EAEMK,GAAS,CAAEF,EAAkBN,EAAsBG,EAA4B,CAAA,IAAO,CACpF,MAAAN,EAASF,EAAaW,CAAS,EAErC,GAAKT,EAAS,CACN,MAAAY,EAAmBZ,EAAO,YAAY,EACtCa,EAAgBb,EAAO,YAAY,EACnCU,EAAgB,GAAG,KAAK,OAAQE,EAAmBC,GAAiB,GAAM,GAAI,CAAC,IAExEhB,EAAA,cAAeP,EAAO,YAAa,EAAE,CAChD,OAAAa,EACA,iBAAAS,EACA,cAAAC,EACA,cAAAH,EACA,GAAGJ,CAAA,CACJ,CAAA,CAEL,EAEMQ,GAAU,CACdL,EACAM,EACAZ,EACAG,EAA4B,CAAA,IACzB,CACG,MAAAN,EAASF,EAAaW,CAAS,EAErC,GAAKT,EAAS,CACN,MAAAY,EAAmBZ,EAAO,YAAY,EACtCa,EAAgBb,EAAO,YAAY,EACnCU,EAAgB,GAAGK,CAAQ,IAEpBlB,EAAA,cAAeP,EAAO,aAAc,EAAE,CACjD,OAAAa,EACA,iBAAAS,EACA,cAAAC,EACA,cAAAH,EACA,GAAGJ,CAAA,CACJ,CAAA,CAEL,EAEMU,GAAU,CAAEP,EAAkBN,EAAsBG,EAA4B,CAAA,IAAO,CACrF,MAAAN,EAASF,EAAaW,CAAS,EAErC,GAAKT,EAAS,CACN,MAAAY,EAAmBZ,EAAO,YAAY,EACtCa,EAAgBb,EAAO,YAAY,EACnCU,EAAgB,GAAG,KAAK,OAAQE,EAAmBC,GAAiB,GAAM,GAAI,CAAC,IAExEhB,EAAA,cAAeP,EAAO,aAAc,EAAE,CACjD,OAAAa,EACA,iBAAAS,EACA,cAAAC,EACA,cAAAH,EACA,GAAGJ,CAAA,CACJ,CAAA,CAEL,EAEaW,GAAQ,CACnB,QAAAf,GACA,MAAAK,GACA,OAAAI,GACA,QAAAK,GACA,QAAAF,EACF,ECrHaI,EAAwB,CACnC,WAAY,GACZ,YAAa,GACb,QAAS,GACT,eAAgB,KAChB,YAAa,KACb,OAAQjB,EAAa,QACvB,EAEMkB,GAA4B,CAChC,GAAGD,EACH,QAAS,GACT,SAAU,OACV,MAAAD,GACA,UAAW,IAAM,KACjB,cAAe,IAAM,IACvB,EAEaG,EAAYC,EAAM,cAAgC,IAAK,EAEvDC,GAA6C,CAAC,CAAE,SAAAb,EAAU,SAAAc,KAAe,CACpF,KAAM,CAAEC,EAAOC,CAAS,EAAIC,EAAAA,SAAUR,CAAc,EAE9CS,EAAYC,EAAAA,YAAY,IAAM9B,EAAaW,CAAS,EAAG,CAAEA,CAAS,CAAC,EAEnEoB,EAAUL,EAAM,iBAAmB,MAAQA,EAAM,eAAiBA,EAAM,YAExEM,EAAoCF,cAAcG,GACdN,EAAnC,OAAOM,GAAQ,WAA8BA,EAEhC3B,IAAW,CAC3B,GAAGA,EACH,GAAG2B,CAAA,EAJiD,EAMrD,EAAE,EAGH,OAAAV,EAAA,cAACD,EAAU,SAAV,CACC,MAAO,CACL,GAAGD,GACH,GAAGK,EACH,QAAAK,EACA,SAAApB,EACA,UAAAkB,EACA,cAAAG,CAAA,CACF,EAECP,CACH,CAEJ,EAEaS,EAAe,IAAM,CAC1B,MAAAC,EAAUZ,EAAM,WAAYD,CAAU,EAE5C,GAAKa,IAAY,OACT,MAAA,IAAI,MAAO,iDAAkD,EAG9D,OAAAA,CACT,EC3EaC,GAKR,CAAC,CAAE,UAAAC,EAAY,GAAI,GAAApC,EAAI,oBAAAqC,EAAsB,2BAA4B,SAAAb,KAAe,CAC3F,KAAM,CAAEc,EAAmBC,CAAqB,EAAIC,EAAAA,SAAuC,IAAK,EAC1F,CAAEC,EAAqBC,CAAuB,EAAIF,EAAAA,SAAgB,IAAK,EAEvEG,EAAMV,EAAa,EAEzBW,OAAAA,EAAAA,UAAgB,IAAM,OACf,GAAA,CAACD,EAAI,QAAU,OAEpB,IAAIE,EAAgBP,EAEfG,IAAwBzC,IAEtB6C,IACHC,GAAS,uBAAwBD,CAAc,EAC/CA,GAAA,MAAAA,EAAe,UAGDA,EAAA,SAAS,cAAe,KAAM,EAC9CA,EAAc,UAAYT,EAC1BS,EAAc,GAAK7C,EAEnB0C,EAAwB1C,CAAG,EAC3BuC,EAAsBM,CAAc,GAGjCE,EAAA,SAAA,cAAe,IAAIJ,EAAI,QAAQ,IAAIN,CAAmB,EAAG,IAAzD,MAAAU,EACC,sBAAuB,WAAYF,IAGpCrB,GAAYqB,GAENC,GAAA,uBACNzB,EAAU,SAAV,CAAmB,MAAOsB,GAAMnB,CAAS,EAC1CqB,CACF,CAED,EAAA,CAAE7C,EAAI2C,EAAKnB,CAAS,CAAC,EAEjB,IACT,sBCnDA,OAAO,eAAewB,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACD,SAASC,GAASC,EAAO,CAClB,KAAK,MAAM,YAMd,KAAK,MAAM,WAAWA,CAAK,GAL3B,KAAK,MAAM,SAASA,CAAK,EACzB,KAAK,SAAS,CACZ,YAAa,EACnB,CAAK,EAIL,CAEAF,EAAA,QAAkBC,YCdlB,OAAO,eAAeE,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACD,SAASC,GAAaF,EAAOjD,EAAQ,CACnC,IAAIoD,EAAepD,EAAO,gBAAiB,EAEvC,CAAC,KAAK,MAAM,WAAa,CAAC,KAAK,MAAM,aAAe,OAAO,KAAK,MAAM,oBAAuB,YAC/FA,EAAO,OAAO,KAAK,MAAM,mBAAmBoD,CAAY,CAAC,CAE7D,CAEAF,EAAA,QAAkBC,YCXlB,OAAO,eAAeE,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACD,SAASC,GAAaL,EAAO,CACvBA,EAAM,WACR,KAAK,MAAM,kBAAkBA,CAAK,EAElC,KAAK,MAAM,iBAAiBA,CAAK,CAErC,CAEAI,EAAA,QAAkBC,YCXlB,OAAO,eAAeC,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACD,SAASC,GAAOP,EAAO,CACjBA,EAAM,KACR,KAAK,MAAM,OAAOA,CAAK,EAEvB,KAAK,MAAM,SAASA,CAAK,CAE7B,CAEAM,EAAA,QAAkBC,YCXlB,OAAO,eAAeC,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACD,SAASC,GAAOT,EAAO,CACjBA,EAAM,aAAe,aACvB,KAAK,SAAS,CACZ,UAAW,EACjB,CAAK,EACD,KAAK,MAAM,YAAYA,CAAK,GACnB,KAAK,MAAM,YAAcA,EAAM,WAAa,aAAeA,EAAM,WAAa,UACvF,KAAK,MAAM,SAASA,CAAK,GAEzB,KAAK,MAAM,OAAOA,CAAK,EACvB,KAAK,SAAS,CACZ,UAAW,EACjB,CAAK,EAEL,CAEAQ,EAAA,QAAkBC,YCnBlB,OAAO,eAAeC,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACD,SAASC,GAAOX,EAAO,CACrB,IAAIY,EAAW,KAAK,MAAM,SACtB9C,EAAWkC,EAAM,SACjBa,EAAWb,EAAM,SAEjBc,EAAa,GAEjB,KAAK,MAAM,OAAOd,CAAK,EAEnB,CAACY,EAAS,cAAgB9C,EAAW,IACvC,KAAK,MAAM,eAAgB,EAC3B8C,EAAS,aAAe,GACxBE,EAAa,IAGX,CAACF,EAAS,YAAc9C,EAAW,KACrC,KAAK,MAAM,aAAc,EACzB8C,EAAS,WAAa,GACtBE,EAAa,IAGX,CAACF,EAAS,eAAiB9C,EAAW,KACxC,KAAK,MAAM,gBAAiB,EAC5B8C,EAAS,cAAgB,GACzBE,EAAa,IAGX,CAACF,EAAS,mBAAqB9C,EAAW+C,EAAW,IAAM,KAC7D,KAAK,MAAM,oBAAqB,EAChCD,EAAS,kBAAoB,GAC7BE,EAAa,IAGX,CAACF,EAAS,cAAgB9C,EAAW+C,EAAW,IAAM,KACxD,KAAK,MAAM,eAAgB,EAC3BD,EAAS,aAAe,GACxBE,EAAa,IAGX,CAACF,EAAS,oBAAsB9C,EAAW+C,EAAW,IAAM,KAC9D,KAAK,MAAM,qBAAsB,EACjCD,EAAS,mBAAqB,GAC9BE,EAAa,IAGX,CAACF,EAAS,mBAAqB9C,EAAW+C,EAAW,IAAM,KAC7D,KAAK,MAAM,oBAAqB,EAChCD,EAAS,kBAAoB,GAC7BE,EAAa,IAGXA,GACF,KAAK,SAAS,CACZ,SAAUF,CAChB,CAAK,CAEL,CAEAF,EAAA,QAAkBC,YC7DlB,OAAO,eAAeI,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACD,SAASC,GAAYhB,EAAO,CAC1B,KAAK,SAAS,CACZ,SAAU,CAAA,CACd,CAAG,EACD,KAAK,MAAM,YAAYA,CAAK,CAC9B,CAEAe,EAAA,QAAkBC,GCVlB,OAAO,eAAeC,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EAED,IAAIC,GAAYC,EAEZC,GAAaC,EAAuBH,EAAS,EAE7CI,GAAgBC,EAEhBC,GAAiBH,EAAuBC,EAAa,EAErDG,GAAgBC,EAEhBC,GAAiBN,EAAuBI,EAAa,EAErDG,GAAUC,EAEVC,GAAWT,EAAuBO,EAAO,EAEzCG,GAAUC,EAEVC,GAAWZ,EAAuBU,EAAO,EAEzCG,GAAUC,EAEVC,GAAWf,EAAuBa,EAAO,EAEzCG,GAAeC,EAEfC,GAAgBlB,EAAuBgB,EAAY,EAEvD,SAAShB,EAAuBmB,EAAK,CAAE,OAAOA,GAAOA,EAAI,WAAaA,EAAM,CAAE,QAASA,EAAM,CAE7F,SAASC,GAAoBC,EAAW,CACtC,MAAO,CACL,SAAUtB,GAAW,QAAQ,KAAKsB,CAAS,EAC3C,aAAclB,GAAe,QAAQ,KAAKkB,CAAS,EACnD,aAAcf,GAAe,QAAQ,KAAKe,CAAS,EACnD,OAAQZ,GAAS,QAAQ,KAAKY,CAAS,EACvC,OAAQT,GAAS,QAAQ,KAAKS,CAAS,EACvC,OAAQN,GAAS,QAAQ,KAAKM,CAAS,EACvC,YAAaH,GAAc,QAAQ,KAAKG,CAAS,CAClD,CACH,CAEAzB,EAAA,QAAkBwB,YC9ClB,OAAO,eAAeE,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACD,SAASC,GAAiBC,EAAgBC,EAAU,CAClD,IAAIC,EAAiBF,EAAe,QAAU,UAAY,CAAE,EACxDG,EAAgB,UAAyB,CAC3CD,EAAgB,EAChBD,EAAU,CACX,EAED,OAAOE,CACT,CAEAL,EAAA,QAAkBC,YCblB,OAAO,eAAeK,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EAED,IAAIC,GAAW,OAAO,QAAU,SAAUC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIlG,EAAS,UAAUkG,CAAC,EAAG,QAASC,KAAOnG,EAAc,OAAO,UAAU,eAAe,KAAKA,EAAQmG,CAAG,IAAKF,EAAOE,CAAG,EAAInG,EAAOmG,CAAG,EAAQ,CAAC,OAAOF,CAAS,EAEhQ,SAASG,GAAcC,EAAM,CAC3B,IAAIC,EAAcD,EAAK,YACnBE,EAAoBF,EAAK,YACzBG,EAAcD,IAAsB,OAAY,CAAA,EAAKA,EACrDE,EAAOJ,EAAK,KACZK,EAAqBL,EAAK,mBAC1BM,EAAQN,EAAK,MACbO,EAAaP,EAAK,WAClBQ,EAAUR,EAAK,QACfS,EAAaT,EAAK,WAClBU,EAAWV,EAAK,SAGhBW,EAAiB,CAAC,CAACN,EAEnBO,EAAa,CAAE,EAEnB,OAAIH,IACFG,EAAW,IAAMH,GAGfC,EACFE,EAAW,SAAWF,EACbN,IACTQ,EAAW,KAAOR,GAGhBH,GAAeA,IAAgB,YACjCW,EAAW,YAAcX,GAGvBU,IACFC,EAAW,YAAc,CACvB,OAAQ,UACR,UAAW,gBACX,iBAAkB,EACnB,GAGC,OAAOL,EAAe,MACxBK,EAAW,UAAY,CAAC,CAACL,GAGvB,OAAOC,EAAY,MACrBI,EAAW,KAAO,CAAC,CAACJ,GAGlBF,IACFM,EAAW,MAAQN,GAGdX,GAASiB,EAAYT,CAAW,CACzC,CAEAT,EAAA,QAAkBK,iBC5DlB,OAAO,eAAec,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EAED,SAASC,GAASC,EAAK,CAAE,OAAO,MAAM,QAAQA,CAAG,EAAIA,EAAM,MAAM,KAAKA,CAAG,CAAE,CAE3E,IAAIC,GAAuB,SAA8BC,EAAM,CAC7D,IAAIC,EAAeD,EAAK,MAAM,EAAG,CAAC,IAAM,KAExC,GAAIC,EAAc,CAChB,IAAIC,EAAYF,EAAK,MAAM,CAAC,EAExBG,EAAaN,GAASK,CAAS,EAC/BE,EAAcD,EAAW,CAAC,EAC1BE,EAAOF,EAAW,MAAM,CAAC,EAE7B,MAAO,GAAKC,EAAY,YAAa,EAAGC,EAAK,KAAK,EAAE,CACxD,CAEE,OAAO,IACT,EAEAT,EAAA,QAAkBG,GCtBlB,OAAO,eAAeO,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EAED,IAAIC,GAAwB5D,EAExB6D,GAAyB3D,GAAuB0D,EAAqB,EAEzE,SAAS1D,GAAuBmB,EAAK,CAAE,OAAcA,EAAI,WAAaA,EAAM,CAAE,QAASA,EAAM,CAE7F,SAASyC,GAAWC,EAAM,CACxB,IAAIxC,EAAYwC,EAAK,UACjBnI,EAASmI,EAAK,OACdf,EAAae,EAAK,WAEtB,SAAS5D,EAActB,EAAO,CAC5B0C,EAAU,cAAc,aAAa1C,EAAOjD,CAAM,CACtD,CAEEA,EAAO,MAAMoH,CAAU,EAEvB,IAAIgB,EAAqB,CAAE,EAE3B,OAAO,KAAKzC,EAAU,KAAK,EAAE,QAAQ,SAAU8B,EAAM,CACnD,IAAIE,KAAgBM,GAAuB,SAASR,CAAI,EAEpDE,IACFS,EAAmBT,CAAS,EAAIhC,EAAU,MAAM8B,CAAI,EAE1D,CAAG,EAEDW,EAAmB,OAASzC,EAAU,cAAc,SACpDyC,EAAmB,eAAiBzC,EAAU,MAAM,oBACpDyC,EAAmB,WAAa7D,EAChC6D,EAAmB,WAAazC,EAAU,cAAc,aACxDyC,EAAmB,KAAOzC,EAAU,cAAc,OAClDyC,EAAmB,KAAOzC,EAAU,cAAc,OAClDyC,EAAmB,aAAezC,EAAU,cAAc,YAC1DyC,EAAmB,KAAOzC,EAAU,cAAc,OAElD,OAAO,KAAKyC,CAAkB,EAAE,QAAQ,SAAUnF,EAAO,CACvDjD,EAAO,GAAGiD,EAAOmF,EAAmBnF,CAAK,CAAC,CAC9C,CAAG,CACH,CAEA8E,EAAA,QAAkBG,YC7ClB,OAAO,eAAeG,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACD,SAASC,GAAoBH,EAAM,CACjC,IAAIlG,EAAUkG,EAAK,QACfI,EAAiBJ,EAAK,eACtBK,EAAYL,EAAK,UACjBM,EAAiBN,EAAK,eAEtBO,EAAiBzG,EAAQ,cAAc,QAAQ,EACnDyG,EAAe,GAAKD,EACpBC,EAAe,IAAMF,EACrBE,EAAe,OAASH,EAExBtG,EAAQ,KAAK,YAAYyG,CAAc,CACzC,CAEAL,EAAA,QAAkBC,YCjBlB,OAAO,eAAeK,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACD,SAASC,GAAuBnI,EAAUwB,EAAS,CACjD,IAAIjC,EAASiC,EAAQ,UAAYA,EAAQ,SAASxB,CAAQ,EAEtDT,GACFA,EAAO,OAAQ,CAEnB,CAEA2I,EAAA,QAAkBC,YCXlB,OAAO,eAAeC,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EAGD,IAAIC,GAAsB,SAA6BX,EAAM,CAC3D,IAAIlG,EAAUkG,EAAK,QACf1H,EAAW0H,EAAK,SAEhBY,EAAgB9G,EAAQ,sBAAwBA,EAAQ,uBAAyB,CAAE,EACnF+G,EAAiBD,EAActI,CAAQ,EAEvCuI,EACF/G,EAAQ,SAAS,SAAW+G,EAE5BD,EAActI,CAAQ,EAAIwB,EAAQ,SAAS,QAE/C,EAEA4G,EAAA,QAAkBC,YCnBlB,OAAO,eAAeG,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACD,IAAIC,EAAO,UAAgB,CAAE,EAEzBC,GAAe,CACjB,YAAa,UACb,KAAM,GACN,WAAY,OACZ,QAAS,OACT,SAAUD,EACV,WAAYA,EACZ,YAAaA,EACb,aAAcA,EACd,kBAAmBA,EACnB,iBAAkBA,EAClB,OAAQA,EACR,SAAUA,EACV,YAAaA,EACb,SAAUA,EACV,OAAQA,EACR,QAASA,EACT,QAASA,EACT,QAASA,EACT,UAAWA,EACX,QAASA,EACT,YAAaA,EACb,oBAAqBA,EACrB,eAAgBA,EAChB,aAAcA,EACd,gBAAiBA,EACjB,oBAAqBA,EACrB,eAAgBA,EAChB,qBAAsBA,EACtB,oBAAqBA,EACrB,OAAQA,EACR,SAAUA,EACV,eAAgBA,EAChB,SAAU,GACV,yBAA0B,EAC5B,EAEAD,EAAA,QAAkBE,YC1ClB,OAAO,eAAeC,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EAED,IAAIC,GAAajF,GAEbkF,EAAchF,GAAuB+E,EAAU,EAEnD,SAAS/E,GAAuBmB,EAAK,CAAE,OAAOA,GAAOA,EAAI,WAAaA,EAAM,CAAE,QAASA,EAAM,CAE7F,IAAI8D,GAAY,CACd,YAAaD,EAAY,QAAQ,MAAM,CAAC,UAAW,MAAO,MAAM,CAAC,EACjE,UAAWA,EAAY,QAAQ,OAC/B,YAAaA,EAAY,QAAQ,OACjC,KAAMA,EAAY,QAAQ,OAC1B,mBAAoBA,EAAY,QAAQ,KACxC,MAAOA,EAAY,QAAQ,OAC3B,WAAYA,EAAY,QAAQ,KAChC,QAASA,EAAY,QAAQ,KAC7B,WAAYA,EAAY,QAAQ,OAChC,UAAWA,EAAY,QAAQ,KAC/B,SAAUA,EAAY,QAAQ,KAC9B,WAAYA,EAAY,QAAQ,KAChC,YAAaA,EAAY,QAAQ,KACjC,aAAcA,EAAY,QAAQ,KAClC,YAAaA,EAAY,QAAQ,KACjC,kBAAmBA,EAAY,QAAQ,KACvC,QAASA,EAAY,QAAQ,KAC7B,iBAAkBA,EAAY,QAAQ,KACtC,eAAgBA,EAAY,QAAQ,KACpC,OAAQA,EAAY,QAAQ,KAC5B,oBAAqBA,EAAY,QAAQ,KACzC,oBAAqBA,EAAY,QAAQ,KACzC,QAASA,EAAY,QAAQ,KAC7B,OAAQA,EAAY,QAAQ,KAC5B,QAASA,EAAY,QAAQ,KAC7B,SAAUA,EAAY,QAAQ,KAC9B,qBAAsBA,EAAY,QAAQ,KAC1C,aAAcA,EAAY,QAAQ,KAClC,gBAAiBA,EAAY,QAAQ,KACrC,eAAgBA,EAAY,QAAQ,KACpC,oBAAqBA,EAAY,QAAQ,KACzC,SAAUA,EAAY,QAAQ,KAC9B,YAAaA,EAAY,QAAQ,KACjC,SAAUA,EAAY,QAAQ,KAC9B,eAAgBA,EAAY,QAAQ,KACpC,SAAUA,EAAY,QAAQ,OAAO,WACrC,aAAcA,EAAY,QAAQ,OAAO,WACzC,SAAUA,EAAY,QAAQ,UAAU,CAACA,EAAY,QAAQ,OAAQA,EAAY,QAAQ,KAAK,CAAC,EAC/F,yBAA0BA,EAAY,QAAQ,IAChD,EAEAF,EAAA,QAAkBG,GCpDlB,OAAO,eAAeC,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EAED,IAAIC,GAAe,UAAY,CAAE,SAASC,EAAiBtD,EAAQuD,EAAO,CAAE,QAAStD,EAAI,EAAGA,EAAIsD,EAAM,OAAQtD,IAAK,CAAE,IAAIuD,EAAaD,EAAMtD,CAAC,EAAGuD,EAAW,WAAaA,EAAW,YAAc,GAAOA,EAAW,aAAe,GAAU,UAAWA,IAAYA,EAAW,SAAW,IAAM,OAAO,eAAexD,EAAQwD,EAAW,IAAKA,CAAU,CAAI,CAAA,CAAG,OAAO,SAAUC,EAAaC,EAAYC,EAAa,CAAE,OAAID,GAAYJ,EAAiBG,EAAY,UAAWC,CAAU,EAAOC,GAAaL,EAAiBG,EAAaE,CAAW,EAAUF,CAAY,CAAG,EAAI,EAE/iBG,GAAS5F,EAET6F,GAAU3F,EAAuB0F,EAAM,EAEvCE,GAAoB1F,GAEpB2F,GAAqB7F,EAAuB4F,EAAiB,EAE7DE,GAAuBzF,EAEvB0F,GAAwB/F,EAAuB8F,EAAoB,EAEnEE,GAAoBxF,EAEpByF,GAAqBjG,EAAuBgG,EAAiB,EAE7DE,GAAiBvF,EAEjBwF,GAAkBnG,EAAuBkG,EAAc,EAEvDE,GAAetF,EAEfuF,GAAerG,EAAuBoG,EAAY,EAElDE,GAAuBrF,EAEvBsF,GAAwBvG,EAAuBsG,EAAoB,EAEnEE,GAA0BC,EAE1BC,GAA2B1G,EAAuBwG,EAAuB,EAEzEG,GAAuBC,EAEvBC,GAAwB7G,EAAuB2G,EAAoB,EAEnEG,GAAgBC,EAEhBC,GAAiBhH,EAAuB8G,EAAa,EAErDG,GAAmBC,EAEnBC,GAAoBnH,EAAuBiH,EAAgB,EAE/D,SAASjH,EAAuBmB,EAAK,CAAE,OAAOA,GAAOA,EAAI,WAAaA,EAAM,CAAE,QAASA,EAAM,CAE7F,SAASiG,GAAgBC,EAAU9B,EAAa,CAAE,GAAI,EAAE8B,aAAoB9B,GAAgB,MAAM,IAAI,UAAU,mCAAmC,CAAI,CAEvJ,SAAS+B,GAA2BC,EAAMC,EAAM,CAAE,GAAI,CAACD,EAAQ,MAAM,IAAI,eAAe,2DAA2D,EAAK,OAAOC,IAAS,OAAOA,GAAS,UAAY,OAAOA,GAAS,YAAcA,EAAOD,CAAK,CAE9O,SAASE,GAAUC,EAAUC,EAAY,CAAE,GAAI,OAAOA,GAAe,YAAcA,IAAe,KAAQ,MAAM,IAAI,UAAU,2DAA6D,OAAOA,CAAU,EAAKD,EAAS,UAAY,OAAO,OAAOC,GAAcA,EAAW,UAAW,CAAE,YAAa,CAAE,MAAOD,EAAU,WAAY,GAAO,SAAU,GAAM,aAAc,EAAI,EAAI,EAAOC,IAAY,OAAO,eAAiB,OAAO,eAAeD,EAAUC,CAAU,EAAID,EAAS,UAAYC,EAAW,CAE5e,IAAIC,GAAc,gBAEdC,EAAgB,SAAUC,EAAY,CACxCL,GAAUI,EAAeC,CAAU,EAEnC,SAASD,EAAcxC,EAAO,CAC5B+B,GAAgB,KAAMS,CAAa,EAEnC,IAAIE,EAAQT,GAA2B,MAAOO,EAAc,WAAa,OAAO,eAAeA,CAAa,GAAG,KAAK,KAAMxC,CAAK,CAAC,EAEhI,OAAA0C,EAAM,MAAQ,CACZ,YAAa,GACb,UAAW,GACX,SAAU,CAAA,CACX,EACDA,EAAM,iBAAoBhC,GAAsB,SAASgC,CAAK,EAC9DA,EAAM,eAAiB,mBAEnB1C,EAAM,2BACR0C,EAAM,gBAAkB,IAAM1C,EAAM,UAGtC0C,EAAM,SAAW,KACjBA,EAAM,YAAcA,EAAM,YAAY,KAAKA,CAAK,EAChDA,EAAM,aAAeA,EAAM,aAAa,KAAKA,CAAK,EAC3CA,CACX,CAEE,OAAA5C,GAAa0C,EAAe,CAAC,CAC3B,IAAK,oBACL,MAAO,UAA6B,CAClC,IAAIG,EAAyB,CAAC,CAAC,OAAO,SAClCxG,EAAiB,SAAS,eAAe,KAAK,cAAc,EAC5DyG,EAA+B,KAAK,MAAM,yBAE9C,GAAI,CAACA,GAAgCD,EAAwB,CAC3D,KAAK,YAAa,EAClB,MACR,CAEM,GAAIC,GAAgCzG,EAAgB,CAClD,KAAK,YAAa,EAClB,MACR,CAEWA,EAQHA,EAAe,UAAayE,GAAmB,SAASzE,EAAgB,KAAK,WAAW,KAPpF+E,GAAsB,SAAS,CACjC,QAAS,SACT,eAAgB,KAAK,YACrB,UAAW,KAAK,MAAM,aACtB,eAAgB,KAAK,cAC/B,CAAS,CAIT,CACA,EAAK,CACD,IAAK,wBACL,MAAO,SAA+B2B,EAAW,CAC/C,IAAIC,EAAiB,KAAK,MAAM,OAASD,EAAU,KAC/CE,EAAqB,IAAKvC,GAAmB,SAAS,KAAK,MAAM,SAAUqC,EAAU,QAAQ,EAEjG,OAAOC,GAAkBC,CAC/B,CACA,EAAK,CACD,IAAK,qBACL,MAAO,UAA8B,CAC/B,OAAO,UAAY,OAAO,SAAS,KAAK,QAAQ,GAClD,KAAK,YAAa,CAE1B,CACA,EAAK,CACD,IAAK,uBACL,MAAO,UAAgC,IACjC1B,GAAyB,SAAS,KAAK,SAAU,MAAM,CACjE,CACA,EAAK,CACD,IAAK,cACL,MAAO,UAAuB,CAC5B,IAAI2B,EAAS,KAAK,MACdlM,EAAWkM,EAAO,SAClBC,EAA2BD,EAAO,yBAGlCC,MACEzB,GAAsB,SAAS,CAAE,QAAS,OAAQ,SAAU1K,EAAU,EAG5E,IAAIkF,EAAY,KACZ3F,EAAS,OAAO,SAAS,KAAK,QAAQ,EAC1C,GAAKA,EAKL,KAAIoH,KAAiBqD,GAAgB,SAAS,KAAK,KAAK,KAEpDE,GAAa,SAAS,CAAE,UAAWhF,EAAW,OAAQ3F,EAAQ,WAAYoH,EAAY,EAChG,CACA,EAAK,CACD,IAAK,eACL,MAAO,SAAsB5G,EAAS,CACpC,KAAK,SAAWA,CACtB,CACA,EAAK,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,OAAOyJ,GAAQ,QAAQ,cACrB,MACA,CAAE,UAAW,KAAK,MAAM,SAAW,EACnCA,GAAQ,QAAQ,cAAc,MAAO,CAAE,GAAI,KAAK,MAAM,SAAU,IAAK,KAAK,YAAc,CAAA,CACzF,CACP,CACA,CAAG,CAAC,EAEKkC,CACT,EAAEnC,GAAO,SAAS,EAElBmC,EAAc,aAAeb,GAAe,QAC5Ca,EAAc,YAAcD,GAC5BC,EAAc,UAAYV,GAAkB,QAC5C,IAAAoB,GAAArD,GAAA,QAAkB2C,EC7KX,MAAMW,WAAuBX,EAAc,CAChD,oBAAqB,QACNrJ,EAAAhD,EAAA,KAAK,MAAM,QAAS,IAApB,MAAAgD,EAAuB,KAAM,KAAK,MAAM,MAAQ,KAAK,MAAM,SAAS,CAErF,CAKAgK,GAAe,UAAY,CAEzB,GAAGX,GAAc,UACjB,YAAaY,GAAU,MACzB,ECfa,MAAAC,GAOR,CAAC,CAAE,UAAA7K,EAAW,aAAA8K,EAAc,mBAAAC,EAAoB,SAAAC,EAAU,MAAAC,EAAO,QAAAC,KAAc,CAClF,KAAM,CAAE,QAAAC,EAAS,SAAA7M,CAAS,EAAIuB,EAAa,EAE3CW,OAAAA,EAAAA,UAAgB,IAAM,CACpB,GAAK2K,EAAU,CACb,MAAMC,EAAO,SAAS,cAAe,IAAI9M,CAAQ,IAAI0M,CAAQ,EAAG,EAC1DK,EAAW,SAAS,cAAe,IAAI/M,CAAQ,IAAIwM,GAAgBE,CAAQ,EAAG,EAEpF,GAAKI,GAAQC,EAAW,CACtB,MAAMC,EAAaP,EAAuBK,EAAK,UAAW,EAAK,EAAwBA,EACjFG,EAAUF,EAAS,sBAAuB,cAAeC,CAAW,EAErEP,GACHK,EAAK,OAAO,EAGTpL,KAAoB,UAAU,IAAK,GAAGA,EAAU,MAAO,GAAI,CAAC,EAC5DkL,GAAUK,EAAQ,iBAAkB,QAASL,CAAQ,EAE1D,OAAO,KAAMD,GAAS,CAAE,CAAA,EAAE,QAAU9G,GAAc,CAChDoH,EAAQ,MAAMpH,CAAG,EAAI8G,EAAM9G,CAAG,CAAA,CAC/B,CAAA,CACH,GAED,CAAEnE,EAAWmL,EAASF,EAAOC,CAAQ,CAAC,EAElC,IACT,EClCaM,GAAc,CAAC,CAAE,OAAAC,KAAqC,CAC3D,KAAA,CAAE,cAAA9L,CAAc,EAAIE,EAAa,EAEjC6L,EAAcC,EAAAA,YAAkB,IAAM,CAC1ChM,EAAc,CAAE,OAAQ7B,EAAa,WAAA,CAAa,EAC3C2N,EAAA,CAAA,EACN,CAAEA,CAAO,CAAC,EAER,OAACA,EAGJG,EAAA,cAACf,GAAA,CACC,UAAU,iCACV,aAAa,qCACb,mBAAkB,GAClB,SAAS,+BACT,QAASa,CAAA,CACX,EAToB,IAWxB,ECnBaG,GAAgB,IAAM,CACjC,KAAM,CAAE,WAAAC,EAAY,OAAA9N,EAAQ,cAAA2B,CAAA,EAAkBE,EAAa,EAErD6L,EAAcxM,EAAM,YAAY,IAAM,CAG5BS,EAAA,CACZ,OAAQmM,EAAahO,EAAa,OAASE,CAAA,CAC5C,CAAA,EACA,CAAE8N,EAAY9N,CAAO,CAAC,EAEzB,OAAQkB,EAAA,cAAA2L,GAAA,CAAW,SAAS,mBAAmB,QAASa,EAAa,CACvE,ECFaK,GAAc,CAAC,CAAE,GAAAnO,EAAI,UAAAoC,EAAW,oBAAAC,EAAqB,QAAA+L,KAAiC,CACjG,KAAM,CAAE,UAAAxM,EAAW,WAAAsM,EAAY,cAAAnM,CAAA,EAAkBE,EAAa,EAExD,CAAEoM,EAAUC,CAAY,EAAI3M,EAAAA,SAAkB,IAAK,EAEnDmM,EAAc,IAAM,OAClBI,IACUnM,EAAA,CACZ,OAAQ7B,EAAa,IAAA,CACtB,GACD6C,EAAAnB,EAAA,IAAA,MAAAmB,EAAa,KAAMnB,EAAY,EAAA,YAAA,EAAgB,IAEnD,EAEM2M,EAAmB,IAAM,CAC7BD,EAAa,SAAU,CACzB,EAEME,EAAmB,IAAM,CAC7BF,EAAa,IAAK,CACpB,EAEA,OACGhN,EAAA,cAAAa,GAAA,CAAa,UAAAC,EAAsB,GAAApC,EAAQ,oBAAAqC,GAC1Cf,EAAA,cAAC,MAAA,CACC,aAAW,kBACX,UAAU,8HACV,KAAK,SACL,SAAU,EACV,QAASwM,EACT,aAAcS,EACd,aAAcC,CAAA,EAGblN,EAAA,cAAAmN,GAAA,CAAO,KAAK,GAAG,UAAU,6BAA6B,EAEtDL,GACC9M,EAAA,cAAC,MAAI,CAAA,UAAWoN,GAAK,2CAA4CL,CAAS,EAAG,IAAI,QAC9E/M,EAAA,cAAA,MAAA,CAAI,UAAU,SAAA,EAAU,iBAAe,CAC1C,CAAA,CAGN,CAEJ,yECvCaqN,GAAS,CAAC,CACrB,UAAAvM,EACA,YAAAwE,EAAc,CAAC,EACf,UAAAgI,EACA,eAAAC,EACA,YAAAC,EACA,YAAAC,EACA,OAAAlB,EACA,OAAAlK,EACA,QAAAqL,EACA,SAAAC,EACA,OAAApL,EACA,oBAAAqL,EACA,eAAAC,EACA,qBAAAC,GACA,oBAAAC,GACA,GAAGzF,CACL,IAAc,CACZ,KAAM,CAAE,UAAAhI,GAAW,YAAA0N,EAAa,SAAA5O,GAAU,MAAAQ,EAAO,cAAAa,GAAkBE,EAAa,EAE1E,CAAE7B,GAAQmP,EAAU,EAAIjO,EAAM,SAAwB,IAAK,EAG3DA,EAAA,UACJ,IAAM,IAAM,CACVS,EAAc,CAAE,GAAGZ,EAAe,YAAAmO,EAAa,CACjD,EACA,CAAA,CACF,EAEA,KAAM,CAAI,CAAAE,EAAiB,EAAIlO,EAAM,SAA+BsN,CAAU,EAK9EtN,EAAM,UAAU,IAAM,CACpBkO,GAAmBnP,IAEZA,GAAQuO,GAAavO,EAAK,UAAYuO,EAAU,SACnD7M,EAAgBY,IACRzB,EAAA,QACJyB,EAAI,OACJ,CACE,KAAAtC,EACA,KAAMuO,CACR,EACA,CAAE,IAAKvO,GAAA,YAAAA,EAAM,GAAI,CACnB,EACOsC,EACR,EAGIiM,EACR,CAAA,EACA,CAAEA,GAAA,YAAAA,EAAW,OAAQ,CAAC,EAOnB,MAAAa,GAAgBvM,GAAiE,OAChF0G,EAAM,YAAc,EAAG0F,GAAe1F,EAAM,UAAY,OAAS7G,EAAAnB,OAAA,MAAAmB,EAAa,QAAS,KACvFiM,KAAmB9L,CAAM,EAEhBnB,EAAA,CAAE,QAAS,GAAM,CACjC,EAKAT,EAAM,UAAU,IAAM,CACNS,EAAA,CACZ,eAAA8M,EACA,YAAAC,CAAA,CACD,CACA,EAAA,CAAED,EAAgBC,EAAa/M,CAAc,CAAC,EAKjD,MAAM2N,EAAoB,CAAEC,EAA2B3J,IAA2B4J,GAAY,CACvF5J,KAAqB4J,CAAE,EAE5B7N,EAAgBY,IACTiM,IACG1N,EAAA,OAAQR,GAAUiP,EAAaf,CAAU,EAC/CW,GAAWI,CAAY,GAGlB,CACL,GAAGhN,EACH,WAAY,GACZ,OAAQgN,CACV,EACD,CACH,EACME,GAAiBH,EAAmBxP,EAAa,SAAU6O,CAAY,EACvEe,GAAaJ,EAAmBxP,EAAa,YAAayD,CAAO,EACjEoM,GAAeL,EAAmBxP,EAAa,YAAa+O,CAAS,EAKrEe,EAAqB,CAAEhP,EAAkBgF,IAA2B4J,GAAY,CAC/E5J,KAAqB4J,CAAE,EACvBhB,GAAkB1N,EAAA,QAASR,GAAUM,EAAUZ,GAAQwO,CAAU,CACxE,EACMqB,GAA0BD,EAAoB,GAAId,CAAoB,EACtEgB,GAAqBF,EAAoB,GAAIb,CAAe,EAC5DgB,GAA2BH,EAAoB,GAAIZ,EAAqB,EACxEgB,GAA0BJ,EAAoB,IAAKX,EAAoB,EA6BvEgB,IAxB0BrK,GAA2B4J,GAAY,CAChE5J,KAAqB4J,CAAE,EAE5B7N,EAAgBY,GAAS,CAGjB,MAAA2N,EAAW,KAAK,MAAOV,EAAE,YAAc,EAAG,IAAM,KAAK,MAAOA,EAAE,SAAW,EAAG,EAClF,IAAID,GAA4BhN,EAAI,OAChC4N,GAAgB5N,EAAI,eAExB,OAAK2N,GAAYzC,IACRA,EAAA,EACP8B,GAAczP,EAAa,SACXqQ,GAAA,MAGX,CACL,GAAG5N,EACH,WAAY2N,EACZ,OAAQX,GACR,eAAgBY,EAClB,CAAA,CACD,CACH,GAC0C1M,CAAO,EAE3C2M,GAAqB,IAAM,CACjBzO,EAAA,CAAE,YAAa,GAAM,CACrC,EAEA,OAEIT,EAAA,cAAAA,EAAA,SAAA,KAAAA,EAAA,cAACyL,GAAA,CACE,GAAGnD,EACJ,UAAW8E,GAAK+B,GAAO,OAAQrO,CAAU,EACzC,YAAAwE,EACA,aAAa,iDACb,YAAaiJ,GACb,eAAgBK,GAChB,OAAQM,GACR,oBAAqBJ,GACrB,OAAQN,GACR,QAASL,GACT,SAAUM,GACV,qBAAsBI,GACtB,OAAQE,GACR,oBAAqBJ,GACrB,SAAUO,EAAA,CAGZ,EAAAlP,EAAA,cAAC6M,GAAA,CACC,UAAU,4DACV,GAAG,kBACH,oBAAoB,0BAAA,CAItB,EAAA7M,EAAA,cAAC6M,GAAA,CACC,UAAU,iEACV,GAAG,iBACH,oBAAoB,uCACpB,QAAO,EAAA,GAGR7M,EAAA,cAAAsM,GAAA,CAAY,OAAAC,EAAgB,EAC7BvM,EAAA,cAAC2M,OAAc,CACjB,CAEJ,ECvMayC,GAA4B,CAAC,CAAE,SAAAlP,EAAU,GAAGoI,KAAY,CAC7D,MAAA1H,EAAUZ,EAAM,WAAYD,CAAU,EAE5C,IAAImM,EAEAlM,EAAA,cAAAA,EAAA,SAAA,KAAAA,EAAA,cAACqN,IAAQ,GAAG/E,CAAO,CAAA,EAClBpI,CACH,EAKF,OAAMU,IACJsL,EAAQlM,EAAA,cAAAC,GAAA,CAAW,SAAUqI,EAAM,UAAW4D,CAAK,GAG9CA,CACT","x_google_ignoreList":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]}