+
+
+ {!isLight &&
+ highlights?.map((item, index) => (
+
+ ))}
+ {searchResults?.hits?.map((searchResultsItem, index) => (
+
goToSlide(index)}
+ data-id={searchResultsItem.id}
+ />
+ ))}
+
+
+
+
+
+ {searchResults.hits?.map((slideData, index) => (
+
+
+
+ ))}
+
+
+ {!isBeginning && (
+ <>
+
+
changeSlide("prev")}
+ aria-label="Previous slide"
+ >
+
+
+ >
+ )}
+
+ {!isEnd && (
+ <>
+
+
changeSlide("next")}
+ aria-label="Next slide"
+ >
+
+
+ >
+ )}
+
+ >
+ );
+};
+
+export default SearchResults;
diff --git a/packages/player-react/src/components/search/search-results/styles.css b/packages/player-react/src/components/search/search-results/styles.css
new file mode 100644
index 0000000..d519624
--- /dev/null
+++ b/packages/player-react/src/components/search/search-results/styles.css
@@ -0,0 +1,124 @@
+.sr-swiper .swiper {
+ padding: 2rem;
+}
+
+.sr-swiper.light .swiper {
+ padding: 0.5rem;
+}
+
+.swiper-truncate-overflow {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ line-clamp: 3;
+ -webkit-line-clamp: 3;
+ -webkit-box-orient: vertical;
+}
+
+.sr-timeline-bg {
+ background: rgba(0, 0, 0, 0.2);
+ border-radius: 30px;
+}
+
+.sr-timeline-bg.light {
+ background: #f3f4f6;
+ border: 1px solid #e5e7eb;
+ border-radius: 30px;
+}
+
+.swiper-slide.sr {
+ height: 128px;
+ padding: 10px;
+}
+
+.swiper-slide.sr:hover {
+ background: rgba(12, 12, 12, 0.4);
+}
+
+.swiper-slide.sr.light:hover {
+ background: #eceff3;
+}
+
+.swiper-slide.sr:hover .relevant-text-br {
+ color: #cde210;
+}
+
+.swiper-slide.sr.light:hover .relevant-text-br {
+ color: #53b745;
+}
+
+.swiper-slide.sr:hover .exact-text-br {
+ color: #f8c450;
+}
+
+.swiper-slide.sr:hover .swiper-time.light {
+ background-color: #fff;
+}
+
+.swiper-time {
+ width: fit-content;
+ background-color: #323232;
+ border-radius: 4px;
+ padding: 6px;
+ display: flex;
+}
+
+.swiper-time.light {
+ background-color: #eceff3;
+}
+
+.swiper-time>img {
+ width: 14px;
+ height: auto;
+ margin-right: 4px;
+}
+
+.text-lime {
+ color: #cde210;
+}
+
+.text-lime.light {
+ background-color: #53b745;
+}
+
+.bg-lime {
+ background-color: #cde210;
+}
+
+.bg-lime.light {
+ background-color: #53b745;
+}
+
+.sr-dot {
+ box-sizing: content-box;
+}
+
+.sr-dot.active:not(.light) {
+ outline: 1px solid rgba(0, 0, 0, 0.35);
+}
+
+.sr-dot.light {
+ outline: 1px solid rgba(255, 255, 255, 1);
+}
+
+.sr-dot.relevant:not(.light):hover,
+.sr-dot.forced-hover.relevant:not(.light) {
+ outline: 7px solid rgba(180, 194, 54, 0.35);
+ box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.53);
+}
+
+.sr-dot.exact:not(.light):hover,
+.sr-dot.forced-hover.exact:not(.light) {
+ outline: 7px solid rgba(248, 196, 80, 0.35);
+ box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.53);
+}
+
+.sr-dot.light.relevant:hover,
+.sr-dot.forced-hover.light.relevant {
+ outline: 7px solid rgba(83, 183, 69, 0.35);
+ box-shadow: 0px 1px 4px rgba(255, 255, 255, 0.53);
+}
+
+.swiper-time-light-text {
+ color: #374151;
+}
\ No newline at end of file
diff --git a/packages/player-react/src/components/videos/progress-bar/index.css b/packages/player-react/src/components/videos/progress-bar/index.css
new file mode 100644
index 0000000..503f267
--- /dev/null
+++ b/packages/player-react/src/components/videos/progress-bar/index.css
@@ -0,0 +1,108 @@
+.chapter {
+ position: relative;
+ background-color: rgba(255, 255, 255, 0.2);
+ height: 6px;
+ transition: all 0.2s ease-in-out;
+}
+
+.chaptersCont {
+ min-height: 10px;
+}
+
+.progress-bar .main-timeline .chapter.manualSlid {
+ background-color: rgb(251, 220, 150, 0.5);
+}
+
+.progress-bar .main-timeline .chapter.manualSlid.active {
+ background-color: #f8c450;
+}
+
+.progress-bar .main-timeline .chapter.active {
+ /* backdrop-filter: blur(16px); */
+ /* background: rgba(0, 0, 0, 0.24); */
+ height: 10px;
+}
+
+.chapter:hover {
+ height: 10px;
+}
+
+/* .progress-bar:hover .head {
+ opacity: 1;
+ } */
+
+.head:hover {
+ border-width: 2px;
+ width: 14px;
+ height: 14px;
+}
+
+/*
+ @media (any-hover: none) {
+ .head {
+ opacity: 1 !important;
+ }
+ } */
+
+@media (max-width: 641px) {
+ .chapter {
+ height: 4px;
+ }
+
+ .progress-bar .main-timeline .chapter.active {
+ height: 6px;
+ }
+
+ .chaptersCont {
+ min-height: 6px;
+ }
+}
+
+.summary-card {
+ /* height: 20vw;
+ max-height: 220px;
+ min-width: 280px; */
+
+ height: auto;
+ max-height: 220px;
+ width: auto;
+ max-width: 280px;
+}
+
+.popover-width {
+ width: 130px;
+}
+
+.three-line-ellipses {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ line-clamp: 3;
+ -webkit-line-clamp: 3;
+ -webkit-box-orient: vertical;
+}
+
+.title-blur {
+ background: rgba(20, 20, 20, 0.39);
+ backdrop-filter: blur(24px);
+}
+
+.title-blur {
+ text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.4);
+}
+
+.chapter-title-cont {
+ height: 62px;
+}
+
+.chapter-title-cont>p {
+ font-size: 11px;
+ line-height: 16px;
+}
+
+@media (max-width: 640px) {
+ .chapter-title-cont {
+ width: 130%;
+ transform: translateX(-12.5%);
+ }
+}
\ No newline at end of file
diff --git a/packages/player-react/src/components/videos/progress-bar/index.tsx b/packages/player-react/src/components/videos/progress-bar/index.tsx
new file mode 100644
index 0000000..2366938
--- /dev/null
+++ b/packages/player-react/src/components/videos/progress-bar/index.tsx
@@ -0,0 +1,625 @@
+import debounce from "lodash.debounce";
+import React, {
+ JSX,
+ useCallback,
+ useEffect,
+ useMemo,
+ useRef,
+ useState,
+} from "react";
+import videojs from "video.js";
+import Player from "video.js/dist/types/player";
+import { useVideoPlayerContext } from "../../../context";
+import "./index.css";
+
+interface Chapter {
+ id?: string | number;
+ start: number;
+ length: number;
+ title?: string;
+ end?: number;
+}
+
+interface Props {
+ isActive?: boolean;
+ autoHide?: boolean;
+ streamUrl?: string;
+ chaptersList?: Chapter[];
+ persistentChapter?: boolean;
+ manualSlide?: number | null;
+ activeChapterProp?: string | null;
+ showChapters?: boolean;
+ previewPlayer?: string;
+ isChapterExpanded?: boolean;
+ setActiveChapter?: (chapterIndex: number | null) => void;
+ hideChapterSummary?: (isVisible: boolean) => void;
+ setPreviewVisibility?: (isVisible: boolean) => void;
+}
+
+export default function ProgressBar({
+ isActive = true,
+ autoHide = true,
+ streamUrl = "",
+ chaptersList = [],
+ persistentChapter = false,
+ manualSlide = null,
+ activeChapterProp: activeChapterPropRaw = null,
+ showChapters = false,
+ isChapterExpanded = false,
+ setActiveChapter = () => {},
+ hideChapterSummary = () => {},
+ setPreviewVisibility = () => {},
+}: Props): JSX.Element {
+ const { time, duration, seekTo, showElements } = useVideoPlayerContext();
+
+ const feedbackPlayerRef = useRef
(null);
+ const progressBarRef = useRef(null);
+ const videoPreviewRef = useRef(null);
+ const progressBarInteractRef = useRef(null);
+ const videoFeedbackPlayerRef = useRef(null);
+
+ const [moveToRatio, setMoveToRatio] = useState(0);
+ const [videoDrag, setVideoDrag] = useState(false);
+ const [seekGoToPoint, setSeekGoToPoint] = useState({
+ ratio: 0,
+ timePosition: 0,
+ });
+ const [showSummaryInfo, setShowSummaryInfo] = useState(true);
+ const [activeChapterLocal, setActiveChapterLocal] = useState(
+ activeChapterPropRaw !== null ? Number(activeChapterPropRaw) : null,
+ );
+ const [leftOffset, setLeftOffset] = useState(0);
+
+ useEffect(() => {
+ setActiveChapterLocal(
+ activeChapterPropRaw !== null ? Number(activeChapterPropRaw) : null,
+ );
+ }, [activeChapterPropRaw]);
+
+ useEffect(() => {
+ setActiveChapter(activeChapterLocal);
+ }, [activeChapterLocal, setActiveChapter]);
+
+ useEffect(() => {
+ if (typeof window !== "undefined") {
+ const isWide = window.innerWidth > 640;
+ const maxRatio = isWide ? 11 / 12 : 10.5 / 12;
+ const minRatio = isWide ? 1 / 12 : 1.5 / 12;
+ const clampedRatio = Math.max(Math.min(moveToRatio, maxRatio), minRatio);
+ setLeftOffset(clampedRatio * 100);
+ }
+ }, [moveToRatio]);
+
+ const videoDateVal = useMemo(() => {
+ if (!duration || !moveToRatio) return 0;
+ return moveToRatio * duration * 1000;
+ }, [duration, moveToRatio]);
+
+ const shouldNotShowVideoPopover = useMemo(() => {
+ if (typeof window === "undefined") return true;
+ if (showChapters) {
+ return (
+ activeChapterLocal === null ||
+ moveToRatio === 0 ||
+ (window.innerWidth < 640 && persistentChapter)
+ );
+ }
+ return moveToRatio === 0;
+ }, [showChapters, activeChapterLocal, moveToRatio, persistentChapter]);
+
+ const summaryCardVisible = useMemo(() => {
+ const overlapThreshold = isChapterExpanded ? 0.22 : 0.52;
+ if (activeChapterPropRaw === null) return false;
+ if (persistentChapter) {
+ return moveToRatio > overlapThreshold;
+ }
+ return true;
+ }, [isChapterExpanded, activeChapterPropRaw, persistentChapter, moveToRatio]);
+
+ const isSummaryCardOverlapping = useMemo(() => {
+ return summaryCardVisible && persistentChapter;
+ }, [summaryCardVisible, persistentChapter]);
+
+ useEffect(() => {
+ hideChapterSummary(isSummaryCardOverlapping);
+ }, [isSummaryCardOverlapping, hideChapterSummary]);
+
+ const summaryHiddenOnceRef = useRef(false);
+ useEffect(() => {
+ if (moveToRatio > 0 && showSummaryInfo && !summaryHiddenOnceRef.current) {
+ summaryHiddenOnceRef.current = true;
+ const timer = setTimeout(() => {
+ setShowSummaryInfo(false);
+ }, 2000);
+ return () => clearTimeout(timer);
+ }
+ }, [moveToRatio, showSummaryInfo]);
+
+ useEffect(() => {
+ setPreviewVisibility(moveToRatio > 0);
+ }, [moveToRatio, setPreviewVisibility]);
+
+ useEffect(() => {
+ const getSource = () => {
+ const src = streamUrl;
+ if (!src) return null;
+ let type = "video/mp4";
+ if (src.endsWith("m3u8")) {
+ type = "application/x-mpegURL";
+ }
+ return { src, type };
+ };
+ const source = getSource();
+
+ if (videoFeedbackPlayerRef.current && source) {
+ if (!feedbackPlayerRef.current) {
+ feedbackPlayerRef.current = videojs(videoFeedbackPlayerRef.current, {
+ autoplay: false,
+ controls: false,
+ currentTime: 0,
+ html5: { nativeTextTracks: false },
+ preload: "auto",
+ sources: [source],
+ });
+ }
+ }
+ return () => {
+ if (
+ feedbackPlayerRef.current &&
+ !feedbackPlayerRef.current.isDisposed()
+ ) {
+ feedbackPlayerRef.current.dispose();
+ feedbackPlayerRef.current = null;
+ }
+ };
+ }, [streamUrl]);
+
+ const findCurrentChapter = useCallback(
+ (timeToCheck: number): number | null => {
+ if (duration === 0) return null;
+ const referenceTime = Math.min(Math.max(timeToCheck, 0), duration);
+ for (let i = 0; i < chaptersList.length; i++) {
+ const chapter = chaptersList[i];
+ if (
+ chapter.start <= referenceTime &&
+ chapter.start + chapter.length > referenceTime
+ ) {
+ return i;
+ }
+ }
+ return null;
+ },
+ [chaptersList, duration],
+ );
+
+ const updateFeedbackPlayer = useCallback(
+ debounce((t: number) => {
+ if (
+ feedbackPlayerRef.current &&
+ !feedbackPlayerRef.current.isDisposed()
+ ) {
+ feedbackPlayerRef.current.currentTime(t);
+ }
+ }, 300),
+ [],
+ );
+
+ const seekVideoTimeCallback = useCallback(
+ (x: number) => {
+ if (!progressBarRef.current || duration === 0) {
+ return;
+ }
+ const rect = progressBarRef.current.getBoundingClientRect();
+ let position = x - rect.left;
+ const totalWidth = rect.width;
+
+ position = Math.max(0, Math.min(position, totalWidth));
+
+ const newRatio = position / totalWidth;
+ const newTimePosition = Math.round(duration * newRatio);
+
+ setSeekGoToPoint({
+ ratio: newRatio,
+ timePosition: newTimePosition,
+ });
+ },
+ [duration, setSeekGoToPoint],
+ );
+
+ const handleDragStartMouseDown = useCallback(
+ (e: React.MouseEvent) => {
+ setVideoDrag(true);
+ seekVideoTimeCallback(e.pageX);
+ },
+ [seekVideoTimeCallback, setVideoDrag],
+ );
+
+ const handleDragStartTouchStart = useCallback(
+ (e: React.TouchEvent) => {
+ if (e.touches.length > 0) {
+ setVideoDrag(true);
+ seekVideoTimeCallback(e.touches[0].clientX);
+ }
+ },
+ [seekVideoTimeCallback, setVideoDrag],
+ );
+
+ // Effect for managing global event listeners during drag
+ useEffect(() => {
+ const handleWindowMouseMove = (e: MouseEvent) => {
+ seekVideoTimeCallback(e.pageX);
+ };
+
+ const handleWindowTouchMove = (e: TouchEvent) => {
+ if (e.touches.length > 0) {
+ seekVideoTimeCallback(Math.floor(e.touches[0].clientX));
+ }
+ };
+
+ const handleWindowMouseUp = () => {
+ setVideoDrag(false);
+ seekTo(seekGoToPoint.timePosition);
+ if (persistentChapter) {
+ const chapter = findCurrentChapter(seekGoToPoint.timePosition);
+ setActiveChapterLocal(chapter);
+ }
+ };
+
+ const handleWindowTouchEnd = () => {
+ setVideoDrag(false);
+ seekTo(Math.floor(seekGoToPoint.timePosition));
+ setMoveToRatio(0); // Reset hover ratio
+ if (!persistentChapter) {
+ setActiveChapterLocal(null);
+ }
+ };
+
+ if (videoDrag) {
+ window.addEventListener("mousemove", handleWindowMouseMove);
+ window.addEventListener("touchmove", handleWindowTouchMove, {
+ passive: true,
+ }); // passive: false if preventDefault is used
+ window.addEventListener("mouseup", handleWindowMouseUp);
+ window.addEventListener("touchend", handleWindowTouchEnd);
+
+ return () => {
+ window.removeEventListener("mousemove", handleWindowMouseMove);
+ window.removeEventListener("touchmove", handleWindowTouchMove);
+ window.removeEventListener("mouseup", handleWindowMouseUp);
+ window.removeEventListener("touchend", handleWindowTouchEnd);
+ };
+ }
+ }, [
+ videoDrag,
+ seekVideoTimeCallback,
+ seekTo,
+ persistentChapter,
+ findCurrentChapter,
+ setActiveChapterLocal,
+ setMoveToRatio,
+ seekGoToPoint, // Ensure latest seekGoToPoint is used in up/end handlers
+ ]);
+
+ // --- Hover and Click Logic on progressBarInteract ---
+ const handleMouseMoveForHover = useCallback(
+ (e: React.MouseEvent) => {
+ if (!progressBarRef.current || duration === 0) return;
+ const rect = progressBarRef.current.getBoundingClientRect();
+ const tempRatio = (e.clientX - rect.x) / rect.width;
+
+ const currentMoveToRatio = Math.min(Math.max(0, tempRatio), 1); // Clamp between 0 and 1
+ setMoveToRatio(currentMoveToRatio);
+
+ const newTime = duration * currentMoveToRatio;
+ updateFeedbackPlayer(newTime);
+
+ if (chaptersList.length > 0) {
+ setActiveChapterLocal(findCurrentChapter(newTime));
+ } else {
+ setActiveChapterLocal(null); // Vue had `true`, null seems more appropriate
+ }
+ },
+ [
+ duration,
+ updateFeedbackPlayer,
+ chaptersList,
+ findCurrentChapter,
+ setMoveToRatio,
+ setActiveChapterLocal /* progressBarRef is stable */,
+ ],
+ );
+
+ const handleMouseLeaveForHover = useCallback(() => {
+ // Reset active chapter and hover ratio if not dragging
+ if (!videoDrag) {
+ // Only reset if not in midst of a drag
+ setActiveChapterLocal(null);
+ setMoveToRatio(0);
+ // Potentially reset showSummaryInfo if it should reappear
+ // setShowSummaryInfo(true);
+ // summaryHiddenOnceRef.current = false;
+ }
+ }, [setActiveChapterLocal, setMoveToRatio, videoDrag]);
+
+ const handleTouchMoveOnProgressBar = useCallback(
+ (e: React.TouchEvent) => {
+ if (e.touches.length > 0 && progressBarRef.current && duration > 0) {
+ e.preventDefault(); // Prevent scrolling while scrubbing preview
+ const clientX = e.touches[0].clientX;
+ const rect = progressBarRef.current.getBoundingClientRect();
+ const tempRatio = (clientX - rect.left) / rect.width;
+
+ const currentMoveToRatio = Math.min(Math.max(0, tempRatio), 1);
+ setMoveToRatio(currentMoveToRatio);
+
+ const newTime = duration * currentMoveToRatio;
+ updateFeedbackPlayer(newTime);
+
+ if (chaptersList.length > 0) {
+ setActiveChapterLocal(findCurrentChapter(newTime));
+ } else {
+ setActiveChapterLocal(null);
+ }
+ }
+ },
+ [
+ duration,
+ updateFeedbackPlayer,
+ chaptersList,
+ findCurrentChapter,
+ setMoveToRatio,
+ setActiveChapterLocal /* progressBarRef stable */,
+ ],
+ );
+
+ const handleProgressClick = useCallback(() => {
+ if (duration > 0) {
+ const goTo = duration * moveToRatio; // moveToRatio is from hover state
+ seekTo(goTo);
+ }
+ }, [duration, moveToRatio, seekTo]);
+
+ const getActiveChapterTitle = useCallback(() => {
+ if (activeChapterLocal === null || !chaptersList[activeChapterLocal])
+ return "";
+ return chaptersList[activeChapterLocal]?.title || "";
+ }, [chaptersList, activeChapterLocal]);
+
+ const isManuallySlid = (key: number) => {
+ return persistentChapter && manualSlide === key && moveToRatio === 0;
+ };
+
+ const isActiveChapter = (key: number) => {
+ // Vue: isActiveChapter(key) && (persistentChapter && manualSlide && !moveToRatio ? isManuallySlid(key) : true)) || isManuallySlid(key)
+ // This logic in React becomes:
+ const currentlyActive = activeChapterLocal === key;
+ const manuallySlid = isManuallySlid(key);
+
+ if (manuallySlid) return true;
+ if (currentlyActive) {
+ if (
+ persistentChapter &&
+ manualSlide !== null &&
+ manualSlide <= key &&
+ moveToRatio === 0
+ ) {
+ // Check this condition. Vue had manualSlide >= key for manualSlid class
+ return isManuallySlid(key); // Which means if manualSlide is not key, it's false. So it means only if it *is* manually slid.
+ }
+ return true;
+ }
+ return false;
+ };
+
+ const headLeftPercent = videoDrag
+ ? seekGoToPoint.ratio * 100
+ : duration > 0
+ ? (time / duration) * 100
+ : 0;
+
+ return (
+
+
+
+
+ {showChapters && (
+
+
+ {activeChapterLocal !== null
+ ? `${activeChapterLocal + 1}. `
+ : ""}
+ {getActiveChapterTitle()}
+
+
+ )}
+
+
+ {new Date(videoDateVal || 0).toISOString().substring(11, 19)}
+
+
+
+
+ {/* Main timelines */}
+
+ {chaptersList.length === 0 ? (
+
+ {/* Seekbar */}
+
0
+ ? `${(time / duration) * 100}%`
+ : "0%",
+ }}
+ />
+ {/* Hover fade bar */}
+
+
+ ) : (
+
+ {chaptersList.map((chapter, key) => (
+
= key &&
+ moveToRatio === 0
+ ? "manualSlid"
+ : ""
+ }`}
+ style={{
+ width:
+ duration > 0
+ ? `${(chapter.length / duration) * 100}%`
+ : "0%",
+ maxWidth:
+ duration > 0
+ ? `${(chapter.length / duration) * 100}%`
+ : "0%",
+ }}
+ >
+ {/* Hover faded bar */}
+
0
+ ? `${
+ Math.max(
+ 0,
+ Math.min(
+ 1,
+ (moveToRatio * duration - chapter.start) /
+ chapter.length,
+ ),
+ ) * 100
+ }%`
+ : "0%",
+ }}
+ />
+ {/* Seekbar */}
+
0
+ ? `${
+ Math.max(
+ 0,
+ Math.min(
+ 1,
+ ((videoDrag
+ ? seekGoToPoint.ratio * duration
+ : time) -
+ chapter.start) /
+ chapter.length,
+ ),
+ ) * 100
+ }%`
+ : "0%",
+ }}
+ />
+
+ ))}
+
+ )}
+
+
+
+
0 && time / duration <= 0.1
+ ? "vdb-p-justify-start"
+ : duration > 0 && time / duration >= 0.9
+ ? "vdb-p-justify-end"
+ : "vdb-p-justify-center"
+ }`}
+ style={{
+ left: `${headLeftPercent}%`,
+ }}
+ >
+
+
+ {new Date(time * 1000).toISOString().substring(11, 19)}
+
+
+ ย /ย
+ {new Date(duration * 1000).toISOString().substring(11, 19)}
+
+
+
+
+
+ {/* Fallback for when not active */}
+ {!isActive && (
+
+ )}
+
+ );
+}
diff --git a/packages/player-react/src/components/videos/videodb-player/index.tsx b/packages/player-react/src/components/videos/videodb-player/index.tsx
new file mode 100644
index 0000000..79b98e1
--- /dev/null
+++ b/packages/player-react/src/components/videos/videodb-player/index.tsx
@@ -0,0 +1,392 @@
+import React, {
+ forwardRef,
+ ReactNode,
+ useCallback,
+ useEffect,
+ useRef,
+ useState,
+} from "react";
+import {
+ SubtitlesConfig,
+ VideoPlayerContext,
+ VideoPlayerContextType,
+} from "../../../context";
+import useVideoDBPlayer from "../../../hooks/useVideoJSPlayer";
+import "../../../styles.css";
+import "../../../videojs.css";
+import TimeCode from "../../atoms/time-code";
+import BigCenterButton from "../../buttons/big-center-button";
+import CaptionToggleButton from "../../buttons/caption-button";
+import FullscreenToggleButton from "../../buttons/full-screen-button";
+import PlayPauseButton from "../../buttons/play-pause-button";
+import SpeedControlButton from "../../buttons/speed-control-button";
+import VolumeControlButton from "../../buttons/volume-control-button";
+import ProgressBar from "../progress-bar";
+
+interface VideoPlayerProps {
+ streamUrl: string;
+ thumbnailUrl?: string;
+ subtitlesConfig?: SubtitlesConfig;
+ startAt?: number;
+ autoPlay?: boolean;
+ autoHideDuration?: number;
+ defaultControls?: boolean;
+ defaultOverlay?: boolean;
+ defaultPlayBackRate?: number;
+ aspectRatio?: string;
+ debug?: boolean;
+ overlayContent?: ReactNode;
+ controlsContent?: ReactNode;
+ onPlay?: (event?: Event) => void;
+ onPause?: (event?: Event) => void;
+ onEnded?: (event?: Event) => void;
+ onLoadedData?: (event?: Event) => void;
+ onWaiting?: (event?: Event) => void;
+ onPlaying?: (event?: Event) => void;
+ onTimeUpdate?: (event?: Event) => void;
+ onCanPlay?: (event?: Event) => void;
+ onCanPlayThrough?: (event?: Event) => void;
+ onVideoError?: (error?: Error) => void;
+ onToggleSubtitles?: (isShowingSubtitles?: boolean) => void;
+ onFullScreenChange?: (isFullScreen?: boolean) => void;
+}
+
+const VideoPlayer = forwardRef
(
+ function VideoPlayer(
+ {
+ streamUrl,
+ thumbnailUrl = "",
+ subtitlesConfig = {
+ src: "",
+ kind: "captions",
+ lang: "en",
+ label: "English",
+ },
+ startAt = 0,
+ autoPlay = false,
+ autoHideDuration = 5000,
+ defaultControls = true,
+ defaultOverlay = true,
+ defaultPlayBackRate = 1,
+ aspectRatio = "16:9",
+ controlsContent,
+ overlayContent,
+ onPlay,
+ onPause,
+ onEnded,
+ onLoadedData,
+ onWaiting,
+ onPlaying,
+ onTimeUpdate,
+ onCanPlay,
+ onCanPlayThrough,
+ onVideoError,
+ onToggleSubtitles,
+ onFullScreenChange,
+ }: VideoPlayerProps,
+ ref,
+ ) {
+ const videoWrapperRef = useRef(null);
+ const videoElementRef = useRef(null);
+ const showElementsMouseMoveInterval = useRef(null);
+
+ const [showElements, setShowElements] = useState(true);
+ const [isFullScreen, setIsFullScreen] = useState(false);
+ const [showSubtitles, setShowSubtitles] = useState(false);
+
+ const aspectRatioPadding = `${
+ (Number(aspectRatio.split(":")[1]) / Number(aspectRatio.split(":")[0])) *
+ 100
+ }%`;
+
+ const emit = useCallback(
+ (event: string, data: { event: Event; error?: Error }) => {
+ switch (event) {
+ case "play":
+ if (onPlay) onPlay(data.event);
+ break;
+ case "pause":
+ if (onPause) onPause(data.event);
+ break;
+ case "ended":
+ if (onEnded) onEnded(data.event);
+ break;
+ case "loadeddata":
+ if (onLoadedData) onLoadedData(data.event);
+ break;
+ case "waiting":
+ if (onWaiting) onWaiting(data.event);
+ break;
+ case "playing":
+ if (onPlaying) onPlaying(data.event);
+ break;
+ case "timeupdate":
+ if (onTimeUpdate) onTimeUpdate(data.event);
+ break;
+ case "canplay":
+ if (onCanPlay) onCanPlay(data.event);
+ break;
+ case "canplaythrough":
+ if (onCanPlayThrough) onCanPlayThrough(data.event);
+ break;
+ case "videoerror":
+ if (onVideoError) onVideoError(data.error);
+ break;
+ default:
+ break;
+ }
+ },
+ [
+ onPlay,
+ onPause,
+ onEnded,
+ onLoadedData,
+ onWaiting,
+ onPlaying,
+ onTimeUpdate,
+ onCanPlay,
+ onCanPlayThrough,
+ onVideoError,
+ ],
+ );
+
+ const {
+ playing,
+ volume,
+ videoMuted,
+ duration,
+ time,
+ percentagePlayed,
+ playBackRate,
+ play,
+ pause,
+ togglePlay,
+ toggleMute,
+ seekTo,
+ seekToPercentage,
+ setVolume,
+ setPlayBackRate,
+ convertTimeToDuration,
+ togglePictureInPicture,
+ initializePlayer,
+ } = useVideoDBPlayer(emit, {
+ streamUrl,
+ thumbnailUrl,
+ startAt,
+ autoPlay,
+ defaultPlayBackRate,
+ });
+
+ const toggleFullScreen = useCallback(
+ (value?: boolean) => {
+ const newState = value !== undefined ? value : !isFullScreen;
+ setIsFullScreen(newState);
+ if (onFullScreenChange) onFullScreenChange(newState);
+ },
+ [isFullScreen, onFullScreenChange],
+ );
+
+ const toggleSubtitlesHandler = useCallback(
+ (value: boolean) => {
+ setShowSubtitles(value);
+ if (onToggleSubtitles) onToggleSubtitles(value);
+ },
+ [onToggleSubtitles],
+ );
+
+ useEffect(() => {
+ if (videoElementRef.current) {
+ initializePlayer(videoElementRef.current);
+ }
+ }, []);
+
+ useEffect(() => {
+ const handleKeyDown = (e: KeyboardEvent) => {
+ if (
+ ["TEXTAREA", "INPUT"].includes(document.activeElement?.tagName || "")
+ )
+ return;
+
+ if (e.code === "Space") {
+ e.preventDefault();
+ togglePlay();
+ } else if (e.code === "Escape" && isFullScreen) {
+ toggleFullScreen(false);
+ }
+ };
+
+ const handleMouseMove = () => {
+ if (showElementsMouseMoveInterval.current) {
+ clearTimeout(showElementsMouseMoveInterval.current);
+ }
+ setShowElements(true);
+ showElementsMouseMoveInterval.current = setTimeout(() => {
+ if (playing) {
+ setShowElements(false);
+ }
+ }, autoHideDuration);
+ };
+
+ const handleTouchEnd = () => {
+ if (showElementsMouseMoveInterval.current) {
+ clearTimeout(showElementsMouseMoveInterval.current);
+ }
+ setShowElements(true);
+ showElementsMouseMoveInterval.current = setTimeout(() => {
+ if (playing) {
+ setShowElements(false);
+ }
+ }, autoHideDuration);
+ };
+
+ const handleMouseEnter = () => {
+ setShowElements(true);
+ window.addEventListener("mousemove", handleMouseMove);
+ };
+
+ const handleMouseLeave = () => {
+ if (showElementsMouseMoveInterval.current) {
+ clearTimeout(showElementsMouseMoveInterval.current);
+ }
+ if (playing) {
+ setShowElements(false);
+ }
+ window.removeEventListener("mousemove", handleMouseMove);
+ };
+
+ const wrapper = videoWrapperRef.current;
+ document.addEventListener("keydown", handleKeyDown);
+ if (wrapper) {
+ if (window.matchMedia("(any-hover: none)").matches) {
+ wrapper.addEventListener("touchend", handleTouchEnd);
+ } else {
+ wrapper.addEventListener("mouseenter", handleMouseEnter);
+ wrapper.addEventListener("mouseleave", handleMouseLeave);
+ }
+ }
+
+ return () => {
+ document.removeEventListener("keydown", handleKeyDown);
+ if (wrapper) {
+ wrapper.removeEventListener("touchend", handleTouchEnd);
+ wrapper.removeEventListener("mouseenter", handleMouseEnter);
+ wrapper.removeEventListener("mouseleave", handleMouseLeave);
+ }
+ window.removeEventListener("mousemove", handleMouseMove);
+ if (showElementsMouseMoveInterval.current) {
+ clearTimeout(showElementsMouseMoveInterval.current);
+ }
+ };
+ }, [playing, autoHideDuration, togglePlay, isFullScreen, toggleFullScreen]);
+
+ const contextValue: VideoPlayerContextType = {
+ showElements,
+ playing,
+ volume,
+ videoMuted,
+ duration,
+ time,
+ percentagePlayed,
+ playBackRate,
+ showSubtitles,
+ subtitlesConfig,
+ isFullScreen,
+ play,
+ pause,
+ togglePlay,
+ toggleMute,
+ seekTo,
+ seekToPercentage,
+ setPlayBackRate,
+ setVolume,
+ convertTimeToDuration,
+ toggleFullScreen,
+ togglePictureInPicture,
+ toggleSubtitles: toggleSubtitlesHandler,
+ };
+
+ return (
+
+
+
+
+
+ {subtitlesConfig?.src && (
+
+ )}
+
+
+ {/* Backlayer */}
+
+
+ {!defaultOverlay ? (
+ overlayContent
+ ) : (
+
+ )}
+
+
+
+ {!defaultControls ? (
+ controlsContent
+ ) : (
+
+ )}
+
+
+
+
+
+ );
+ },
+);
+
+export default VideoPlayer;
diff --git a/packages/player-react/src/context.ts b/packages/player-react/src/context.ts
new file mode 100644
index 0000000..8936696
--- /dev/null
+++ b/packages/player-react/src/context.ts
@@ -0,0 +1,47 @@
+import { createContext, useContext } from "react";
+
+export type SubtitlesConfig = {
+ src: string;
+ kind?: string;
+ lang?: string;
+ label?: string;
+};
+
+export type VideoPlayerContextType = {
+ showElements: boolean;
+ playing: boolean;
+ volume: number;
+ videoMuted: boolean;
+ duration: number;
+ time: number;
+ percentagePlayed: number;
+ playBackRate: number;
+ showSubtitles: boolean;
+ subtitlesConfig: SubtitlesConfig;
+ isFullScreen: boolean;
+ play: () => void;
+ pause: () => void;
+ togglePlay: () => void;
+ toggleMute: () => void;
+ seekTo: (seconds: number) => void;
+ seekToPercentage: (percent: number) => void;
+ setPlayBackRate: (rate: number) => void;
+ setVolume: (volume: number) => void;
+ convertTimeToDuration: (time: number) => string;
+ toggleFullScreen: (value?: boolean) => void;
+ togglePictureInPicture: () => void;
+ toggleSubtitles: (value: boolean) => void;
+};
+
+export const VideoPlayerContext = createContext<
+ VideoPlayerContextType | undefined
+>(undefined);
+
+export const useVideoPlayerContext = (): VideoPlayerContextType => {
+ const context = useContext(VideoPlayerContext);
+ if (!context)
+ throw new Error(
+ "useVideoPlayerContext must be used within a VideoPlayerProvider",
+ );
+ return context;
+};
diff --git a/packages/player-react/src/hooks/useVideoJSPlayer.ts b/packages/player-react/src/hooks/useVideoJSPlayer.ts
new file mode 100644
index 0000000..8e7012c
--- /dev/null
+++ b/packages/player-react/src/hooks/useVideoJSPlayer.ts
@@ -0,0 +1,254 @@
+import { useCallback, useEffect, useRef, useState } from "react";
+import videojs from "video.js";
+import type Player from "video.js/dist/types/player";
+
+type PlayerProps = {
+ streamUrl: string;
+ autoPlay?: boolean;
+ muted?: boolean;
+ startAt?: number;
+ thumbnailUrl?: string;
+ defaultPlayBackRate?: number;
+ debug?: boolean;
+ onVideoError?: (error: Error) => void;
+};
+
+type PlayerEvents =
+ | "play"
+ | "pause"
+ | "ended"
+ | "loadeddata"
+ | "waiting"
+ | "playing"
+ | "timeupdate"
+ | "canplay"
+ | "canplaythrough";
+
+type EventEmitter = (event: PlayerEvents, data: { event: Event }) => void;
+
+export default function useVideoDBPlayer(
+ emit: EventEmitter,
+ props: PlayerProps,
+) {
+ const [playing, setPlaying] = useState(false);
+ const [volume, setVolume] = useState(1);
+ const [videoMuted, setVideoMuted] = useState(props.muted || false);
+ const [time, setTime] = useState(props.startAt || 0);
+ const [duration, setDuration] = useState(0);
+ const [percentagePlayed, setPercentagePlayed] = useState(0);
+ const [playBackRate, setPlayBackRate] = useState(
+ props.defaultPlayBackRate || 1,
+ );
+
+ const playerRef = useRef(null);
+
+ const getSource = () => {
+ const src = props.streamUrl;
+ const type = "application/x-mpegURL";
+
+ return { src, type };
+ };
+
+ const events: PlayerEvents[] = [
+ "play",
+ "pause",
+ "ended",
+ "loadeddata",
+ "waiting",
+ "playing",
+ "timeupdate",
+ "canplay",
+ "canplaythrough",
+ ];
+
+ const initializePlayer = (playerElement: HTMLVideoElement | null) => {
+ if (playerElement) {
+ try {
+ const source = getSource();
+ playerRef.current = videojs(playerElement, {
+ autoplay: props.autoPlay,
+ controls: false,
+ html5: {
+ nativeTextTracks: false,
+ },
+ preload: true,
+ poster: props.thumbnailUrl,
+ sources: [source],
+ crossorigin: "anonymous",
+ });
+ bindEvents(events, emit);
+ } catch (err) {
+ if (props.onVideoError) {
+ props.onVideoError(err as Error);
+ }
+ console.error("Error in initializing player ", err);
+ return;
+ }
+ }
+ };
+
+ const play = async () => {
+ if (playerRef.current) {
+ await playerRef.current.play();
+ setPlaying(true);
+ }
+ };
+
+ const pause = () => {
+ if (playerRef.current) {
+ playerRef.current.pause();
+ setPlaying(false);
+ }
+ };
+
+ const togglePlay = () => {
+ if (playing) {
+ pause();
+ } else {
+ play();
+ }
+ };
+
+ const setMuted = (state: boolean) => {
+ if (playerRef.current) {
+ playerRef.current.muted(state);
+ setVideoMuted(state);
+ }
+ };
+
+ const toggleMute = () => {
+ if (videoMuted) {
+ setMuted(false);
+ } else {
+ setMuted(true);
+ }
+ };
+
+ const setVolumeValue = (percentAsDecimal: number) => {
+ if (playerRef.current) {
+ playerRef.current.volume(percentAsDecimal);
+ setVolume(percentAsDecimal);
+ }
+ };
+
+ const seekTo = useCallback(
+ (timeValue: number) => {
+ if (playerRef.current) {
+ let newTime = parseInt(timeValue.toString());
+ if (isNaN(newTime) && !isFinite(newTime)) return;
+
+ if (newTime < 0) {
+ newTime = 0;
+ }
+
+ if (newTime > duration) {
+ newTime = duration;
+ pause();
+ }
+ playerRef.current.currentTime(timeValue);
+ }
+ },
+ [duration],
+ );
+
+ const seekToPercentage = (percentage: number) => {
+ const newTime = (percentage / 100) * duration;
+ seekTo(newTime);
+ };
+
+ const setPlayBackRateValue = (value: number) => {
+ if (playerRef.current) {
+ setPlayBackRate(value);
+ playerRef.current.playbackRate(value);
+ }
+ };
+
+ const convertTimeToDuration = (seconds: number) => {
+ return [Math.floor((seconds / 60) % 60), Math.floor(seconds % 60)]
+ .map((num) => num.toString().padStart(2, "0"))
+ .join(":");
+ };
+
+ const togglePictureInPicture = () => {
+ if (document.pictureInPictureElement) {
+ document.exitPictureInPicture();
+ } else if (document.pictureInPictureEnabled && playerRef.current) {
+ playerRef.current.requestPictureInPicture();
+ }
+ };
+
+ const bindEvents = (
+ eventList: PlayerEvents[],
+ eventEmitter: EventEmitter,
+ ) => {
+ if (playerRef.current !== null) {
+ eventList.forEach((customEvent) => {
+ playerRef.current?.on(customEvent, (event: Event) => {
+ if (props.debug) console.log("Player event ", customEvent, event);
+ switch (customEvent) {
+ case "loadeddata":
+ if (playerRef.current) {
+ setDuration(playerRef.current.duration() ?? 0);
+ seekTo(props.startAt || 0);
+ }
+ break;
+ case "canplay":
+ if (playerRef.current) {
+ setDuration(playerRef.current.duration() ?? 0);
+ }
+ break;
+ case "timeupdate":
+ if (playerRef.current) {
+ const currentTime = playerRef.current.currentTime();
+ const percent =
+ ((currentTime ?? 0) / (playerRef.current.duration() ?? 1)) *
+ 100;
+ setPercentagePlayed(percent);
+ setTime(currentTime ?? 0);
+ }
+ break;
+ case "play":
+ setPlaying(true);
+ break;
+ case "ended":
+ togglePlay();
+ break;
+ }
+ eventEmitter(customEvent, { event });
+ });
+ });
+ }
+ };
+
+ useEffect(() => {
+ return () => {
+ if (playerRef.current && playerRef.current.isDisposed()) {
+ playerRef.current.dispose();
+ playerRef.current = null;
+ }
+ };
+ }, []);
+
+ return {
+ playing,
+ volume,
+ videoMuted,
+ time,
+ duration,
+ percentagePlayed,
+ playBackRate,
+ events,
+ play,
+ pause,
+ togglePlay,
+ toggleMute,
+ setVolume: setVolumeValue,
+ seekTo,
+ seekToPercentage,
+ setPlayBackRate: setPlayBackRateValue,
+ convertTimeToDuration,
+ togglePictureInPicture,
+ bindEvents,
+ initializePlayer,
+ };
+}
diff --git a/packages/player-react/src/index.tsx b/packages/player-react/src/index.tsx
new file mode 100644
index 0000000..6743500
--- /dev/null
+++ b/packages/player-react/src/index.tsx
@@ -0,0 +1,30 @@
+import TimeCode from "./components/atoms/time-code";
+import VideoPlayer from "./components/videos/videodb-player";
+import SearchInsideMedia from "./components/search/search-inside-media";
+import useVideoDBPlayer from "./hooks/useVideoJSPlayer";
+import BigCenterButton from "./components/buttons/big-center-button";
+import ProgressBar from "./components/videos/progress-bar";
+import PlayPauseButton from "./components/buttons/play-pause-button";
+import VolumeControlButton from "./components/buttons/volume-control-button";
+import SearchResults from "./components/search/search-results";
+import SpeedControlButton from "./components/buttons/speed-control-button";
+import CaptionToggleButton from "./components/buttons/caption-button";
+import FullscreenToggleButton from "./components/buttons/full-screen-button";
+import "./styles.css";
+import "./videojs.css";
+
+export {
+ VideoPlayer,
+ useVideoDBPlayer,
+ TimeCode,
+ SearchInsideMedia,
+ BigCenterButton,
+ ProgressBar,
+ PlayPauseButton,
+ VolumeControlButton,
+ SearchResults,
+ SpeedControlButton,
+ CaptionToggleButton,
+ FullscreenToggleButton,
+};
+export default VideoPlayer;
diff --git a/packages/player-react/src/styles.css b/packages/player-react/src/styles.css
new file mode 100644
index 0000000..a5e104a
--- /dev/null
+++ b/packages/player-react/src/styles.css
@@ -0,0 +1,114 @@
+@import "./videojs.css";
+
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+.chapter {
+ position: relative;
+ background-color: rgba(255, 255, 255, 0.2);
+ height: 6px;
+ transition: all 0.2s ease-in-out;
+}
+
+.chaptersCont {
+ min-height: 10px;
+}
+
+.progress-bar .main-timeline .chapter.manualSlid {
+ background-color: rgb(251, 220, 150, 0.5);
+}
+
+.progress-bar .main-timeline .chapter.manualSlid.active {
+ background-color: #f8c450;
+}
+
+.progress-bar .main-timeline .chapter.active {
+ /* backdrop-filter: blur(16px); */
+ /* background: rgba(0, 0, 0, 0.24); */
+ height: 10px;
+}
+
+.chapter:hover {
+ height: 10px;
+}
+
+/* .progress-bar:hover .head {
+ opacity: 1;
+ } */
+
+.head:hover {
+ border-width: 2px;
+ width: 14px;
+ height: 14px;
+}
+
+/*
+ @media (any-hover: none) {
+ .head {
+ opacity: 1 !important;
+ }
+ } */
+
+@media (max-width: 641px) {
+ .chapter {
+ height: 4px;
+ }
+
+ .progress-bar .main-timeline .chapter.active {
+ height: 6px;
+ }
+
+ .chaptersCont {
+ min-height: 6px;
+ }
+}
+
+.summary-card {
+ /* height: 20vw;
+ max-height: 220px;
+ min-width: 280px; */
+
+ height: auto;
+ max-height: 220px;
+ width: auto;
+ max-width: 280px;
+}
+
+.popover-width {
+ width: 130px;
+}
+
+.three-line-ellipses {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ line-clamp: 3;
+ -webkit-line-clamp: 3;
+ -webkit-box-orient: vertical;
+}
+
+.title-blur {
+ background: rgba(20, 20, 20, 0.39);
+ backdrop-filter: blur(24px);
+}
+
+.title-blur {
+ text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.4);
+}
+
+.chapter-title-cont {
+ height: 62px;
+}
+
+.chapter-title-cont>p {
+ font-size: 11px;
+ line-height: 16px;
+}
+
+@media (max-width: 640px) {
+ .chapter-title-cont {
+ width: 130%;
+ transform: translateX(-12.5%);
+ }
+}
\ No newline at end of file
diff --git a/packages/player-react/src/videojs.css b/packages/player-react/src/videojs.css
new file mode 100644
index 0000000..98ffc06
--- /dev/null
+++ b/packages/player-react/src/videojs.css
@@ -0,0 +1,1908 @@
+@charset "UTF-8";
+
+.video-js .vjs-big-play-button .vjs-icon-placeholder:before,
+.video-js .vjs-modal-dialog,
+.vjs-button>.vjs-icon-placeholder:before,
+.vjs-modal-dialog .vjs-modal-dialog-content {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.video-js .vjs-big-play-button .vjs-icon-placeholder:before,
+.vjs-button>.vjs-icon-placeholder:before {
+ text-align: center;
+}
+
+@font-face {
+ font-family: VideoJS;
+ src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABDkAAsAAAAAG6gAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAAPgAAAFZRiV3hY21hcAAAAYQAAADaAAADPv749/pnbHlmAAACYAAAC3AAABHQZg6OcWhlYWQAAA3QAAAAKwAAADYZw251aGhlYQAADfwAAAAdAAAAJA+RCLFobXR4AAAOHAAAABMAAACM744AAGxvY2EAAA4wAAAASAAAAEhF6kqubWF4cAAADngAAAAfAAAAIAE0AIFuYW1lAAAOmAAAASUAAAIK1cf1oHBvc3QAAA/AAAABJAAAAdPExYuNeJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGS7wTiBgZWBgaWQ5RkDA8MvCM0cwxDOeI6BgYmBlZkBKwhIc01hcPjI+FGJHcRdyA4RZgQRADK3CxEAAHic7dFZbsMgAEXRS0ycyZnnOeG7y+qC8pU1dHusIOXxuoxaOlwZYWQB0Aea4quIEN4E9LzKbKjzDeM6H/mua6Lmc/p8yhg0lvdYx15ZG8uOLQOGjMp3EzqmzJizYMmKNRu27Nhz4MiJMxeu3Ljz4Ekqm7T8P52G8PP3lnTOVk++Z6iN6QZzNN1F7ptuN7eGOjDUoaGODHVsuvU8MdTO9Hd5aqgzQ50b6sJQl4a6MtS1oW4MdWuoO0PdG+rBUI+GejLUs6FeDPVqqDdDvRvqw1CfhpqM9At0iFLaAAB4nJ1YDXBTVRZ+5/22TUlJ8we0pHlJm7RJf5O8F2j6EymlSPkpxaL8U2xpa3DKj0CBhc2IW4eWKSokIoLsuMqssM64f+jA4HSdWXXXscBq67IOs3FXZ1ZYWVyRFdo899yXtIBQZ90k7717zz3v3HPPOfd854YCCj9cL9dL0RQFOqCbGJnrHb5EayiKIWN8iA/hWBblo6hUWm8TtCDwE80WMJus/irwyxOdxeB0MDb14VNJHnXYoLLSl6FfCUYO9nYPTA8Epg9090LprfbBbZ2hY0UlJUXHQp3/vtWkS6EBv8+rPMq5u9692f/dNxJNiqwC1xPE9TCUgCsSdQWgE3XQD25lkG4CN2xmTcOXWBOyser6RN6KnGbKSbmQ3+d0OI1m2W8QzLLkI2sykrWAgJJEtA8vGGW/2Q+CmT3n8zS9wZwu2DCvtuZKZN3xkrLh36yCZuUomQSqGpY8t/25VfHVhw8z4ebGBtfLb0ya9PCaDc+8dGTvk2dsh6z7WzvowlXKUSWo9MJ15a3KrEP2loOr2Ojhw6iW6hf2BDdEccQvZGpaAy7YovSwq8kr7HGllxpd71rkS6G0Sf11sl9OvMK1+jwPPODxjUwkOim9CU3ix1wNjXDfmJSEn618Bs6lpWwUpU+8PCqLMY650zjq8VhCIP17NEKTx3eaLL+s5Pi6yJWaWjTHLR1jYzPSV9VF/6Ojdb/1kO3Mk3uhHC0x6gc1BjlKQ+nQFxTYdaJkZ7ySVxLBbhR1dsboNXp1tCYKW2LRaEzpYcIx2BKNxaL0ZaUnSqfFoiNhHKR/GkX6PWUSAaJelQaqZL1EpoHNsajSEyPSoJ9IjhIxTdjHLmwZvhRDOiFTY/YeQnvrVZmiTQtGncECXtFTBZLOVwwMRgoXHAkXzMzPn1nAJJ8jYSbMDaqN2waGLzNhih/bZynUBMpIWSg7VYi7DRx2m8ALkIdRCJwI6ArJx2EI8kaDWeTQKeAFk9fjl/1AvwktjQ1P7NjyMGQyfd4vjipX6M/i52D7Cq80kqlcxEcGXRr/FEcgs0u5uGgB4VWuMFfpdn2Re6Hi3PqzmxWKsz6+ae2Pn9hXXw/fqM859UiGC0oKYYILJBqJrsn1Z1E5qOs9rQCiUQRREjm8yJcbHF5cUJufX1vAHlefw0XgUoboS3ETfQlTxBC4SOtuE8VPRJTBSCQSjZCpk7Gqzu+masaZ2y7Zjehho4F3g82BNDkAHpORG4+OCS+f6JTPmtRn/PH1kch6d04sp7AQb25aQ/pqUyXeQ8vrebG8OYQdXOQ+585u0sdW9rqalzRURiJ+9F4MweRFrKUjl1GUYhH1A27WOHw5cTFSFPMo9EeUIGnQTZHIaJ7AHLaOKsOODaNF9jkBjYG2QEsQ2xjMUAx2bBEbeTBWMHwskBjngq56S/yfgkBnWBa4K9sqKtq2t1UI8S9He5XuBRbawAdatrQEAi30Aks2+LM8WeCbalVZkWNylvJ+dqJnzVb+OHlSoKW8nPCP7Rd+CcZ2DdWAGqJ2CBFOphgywFFCFBNtfAbGtNPBCwxvygHeYMZMY9ZboBqwq/pVrsbgN5tkv152ODlbMfiqwGMBgxa4Exz3QhovRIUp6acqZmQzRq0ypDXS2TPLT02YIkQETnOE445oOGxOmXAqUJNNG7XgupMjPq2ua9asrj5yY/yuKteO1Kx0YNJTufrirLe1mZnat7OL6rnUdCWenpW6I8mAnbsY8KWs1PuSovCW9A/Z25PQ24a7cNOqgmTkLmBMgh4THgc4b9k2IVv1/g/F5nGljwPLfOgHAzJzh45V/4+WenTzmMtR5Z7us2Tys909UHqrPY7KbckoxRvRHhmVc3cJGE97uml0R1S0jdULVl7EvZtDFVBF35N9cEdjpgmAiOlFZ+Dtoh93+D3zzHr8RRNZQhnCNMNbcegOvpEwZoL+06cJQ07h+th3fZ/7PVbVC6ngTAV/KoLFuO6+2KFcU651gEb5ugPSIb1D+Xp8V4+k3sEIGnw5mYe4If4k1lFYr6SCzmM2EQ8iWtmwjnBI9kTwe1TlfAmXh7H02by9fW2gsjKwtv0aaURKil4OdV7rDL1MXIFNrhdxohcZXYTnq47WisrKitaObbf5+yvkLi5J6lCNZZ+B6GC38VNBZBDidSS/+mSvh6s+srgC8pyKMvDtt+de3c9fU76ZPfuM8ud4Kv0fyP/LqfepMT/3oZxSqpZaTa1DaQYLY8TFsHYbWYsPoRhRWfL5eSSQbhUGgGC3YLbVMk6PitTFNGpAsNrC6D1VNBKgBHMejaiuRWEWGgsSDBTJjqWIl8kJLlsaLJ2tXDr6xGfT85bM2Q06a46x2HTgvdnV8z5YDy/27J4zt6x2VtkzjoYpkq36kaBr4eQSg7tyiVweWubXZugtadl58ydapfbORfKsDTuZ0OBgx4cfdjCf5tbWNITnL120fdOi1RV1C3uKGzNdwYLcMvZ3BxoPyTOCD1XvXTp7U10gWCVmTV9b3r2z0SkGWovb2hp9I89O8a2smlyaO8muMU+dRmtzp60IzAoFpjLr1n388boLyf0dRvxhsHZ0qbWqDkwqvvpkj4l0fY6EIXRi5sQSrAvsVYwXRy4qJ2EVtD1AN7a0HWth9ymvL1xc3WTUKK/TAHA/bXDVtVWfOMfuGxGZv4Ln/jVr9jc3j1yMv0tndmyt9Vq88Y9gH1wtLX3KWjot5++jWHgAoZZkQ14wGQ20Fli71UmKJAy4xKMSTGbVdybW7FDDAut9XpD5AzWrYO7zQ8qffqF8+Ynd/clrHcdyxGy3a/3+mfNnzC/cBsveTjnTvXf1o6vzOlZw7WtqtdmPK/Errz/6NNtD72zmNOZfbmYdTGHfoofqI79Oc+R2n1lrnL6pOm0Up7kwxhTW12Amm7WYkXR2qYrF2AmgmbAsxZjwy1xpg/m1Je2vrp8v/nz2xpmlBg4E9hrMU341wVpTOh/OfmGvAnra8q6uctr60ZQHV3Q+WMQJykMj8ZsWn2QBOmmHMB+m5pDIpTFonYigiaKAhGEiAHF7EliVnQkjoLVIMPtJpBKHYd3A8GYH9jJzrWwmHx5Qjp7vDAX0suGRym1vtm/9W1/HyR8vczfMs6Sk8DSv855/5dlX9oQq52hT8syyp2rx5Id17IAyAM3wIjQPMOHzytEB64q6D5zT91yNbnx3V/nqnd017S9Y0605k3izoXLpsxde2n38yoOV9s1LcjwzNjbdX6asnBVaBj/6/DwKwPkpcqbDG7BnsXoSqWnUAmottYF6jMSdVyYZh3zVXCjwTiwwHH6sGuRiEHQGzuRX6whZkp123oy1BWE2mEfJ/tvIRtM4ZM5bDXiMsPMaAKOTyc5uL57rqyyc5y5JE5pm1i2S2iUX0CcaQ6lC6Zog7JqSqZmYlosl2K6pwNA84zRnQW6SaALYZQGW5lhCtU/W34N6o+bKfZ8cf3/Cl/+iTX3wBzpOY4mRkeNf3rptycGSshQWgGbYt5jFc2e0+DglIrwl6DVWQ7BuwaJ3Xk1J4VL5urnLl/Wf+gHU/hZoZdKNym6lG+I34FaNeZKcSpJIo2IeCVvpdsDGfKvzJnAwmeD37Ow65ZWwSowpgwX5T69s/rB55dP5BcpgDKFV8p7q2sn/1uc93bVzT/w6UrCqDTWvfCq/oCD/qZXNoUj8BL5Kp6GU017frfNXkAtiiyf/SOCEeLqnd8R/Ql9GlCRfctS6k5chvIBuQ1zCCjoCHL2DHNHIXxMJ3kQeO8lbsUXONeSfA5EjcG6/E+KdhN4bP04vBhdi883+BFBzQbxFbvZzQeY9LNBZc0FNfn5NwfDn6rCTnTw6R8o+gfpf5hCom33cRuiTlss3KHmZjD+BPN+5gXuA2ziS/Q73mLxUkpbKN/eqwz5uK0X9F3h2d1V4nGNgZGBgAOJd776+iue3+crAzc4AAje5Bfcg0xz9YHEOBiYQBQA8FQlFAHicY2BkYGBnAAGOPgaG//85+hkYGVCBMgBGGwNYAAAAeJxjYGBgYB8EmKOPgQEAQ04BfgAAAAAAAA4AaAB+AMwA4AECAUIBbAGYAcICGAJYArQC4AMwA7AD3gQwBJYE3AUkBWYFigYgBmYGtAbqB1gIEghYCG4IhAi2COh4nGNgZGBgUGYoZWBnAAEmIOYCQgaG/2A+AwAYCQG2AHicXZBNaoNAGIZfE5PQCKFQ2lUps2oXBfOzzAESyDKBQJdGR2NQR3QSSE/QE/QEPUUPUHqsvsrXjTMw83zPvPMNCuAWP3DQDAejdm1GjzwS7pMmwi75XngAD4/CQ/oX4TFe4Qt7uMMbOzjuDc0EmXCP/C7cJ38Iu+RP4QEe8CU8pP8WHmOPX2EPz87TPo202ey2OjlnQSXV/6arOjWFmvszMWtd6CqwOlKHq6ovycLaWMWVydXKFFZnmVFlZU46tP7R2nI5ncbi/dDkfDtFBA2DDXbYkhKc+V0Bqs5Zt9JM1HQGBRTm/EezTmZNKtpcAMs9Yu6AK9caF76zoLWIWcfMGOSkVduvSWechqZsz040Ib2PY3urxBJTzriT95lipz+TN1fmAAAAeJxtkMl2wjAMRfOAhABlKm2h80C3+ajgCKKDY6cegP59TYBzukAL+z1Zsq8ctaJTTKPrsUQLbXQQI0EXKXroY4AbDDHCGBNMcYsZ7nCPB8yxwCOe8IwXvOIN7/jAJ76wxHfUqWX+OzgumWAjJMV17i0Ndlr6irLKO+qftdT7i6y4uFSUvCknay+lFYZIZaQcmfH/xIFdYn98bqhra1aKTM/6lWMnyaYirx1rFUQZFBkb2zJUtoXeJCeg0WnLtHeSFc3OtrnozNwqi0TkSpBMDB1nSde5oJXW23hTS2/T0LilglXX7dmFVxLnq5U0vYATHFk3zX3BOisoQHNDFDeZnqKDy9hRNawN7Vh727hFzcJ5c8TILrKZfH7tIPxAFP0BpLeJPA==) format('woff');
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-big-play-button .vjs-icon-placeholder:before,
+.video-js .vjs-play-control .vjs-icon-placeholder,
+.vjs-icon-play {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-big-play-button .vjs-icon-placeholder:before,
+.video-js .vjs-play-control .vjs-icon-placeholder:before,
+.vjs-icon-play:before {
+ content: '\f101';
+}
+
+.vjs-icon-play-circle {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.vjs-icon-play-circle:before {
+ content: '\f102';
+}
+
+.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder,
+.vjs-icon-pause {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder:before,
+.vjs-icon-pause:before {
+ content: '\f103';
+}
+
+.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder,
+.vjs-icon-volume-mute {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder:before,
+.vjs-icon-volume-mute:before {
+ content: '\f104';
+}
+
+.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder,
+.vjs-icon-volume-low {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder:before,
+.vjs-icon-volume-low:before {
+ content: '\f105';
+}
+
+.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder,
+.vjs-icon-volume-mid {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder:before,
+.vjs-icon-volume-mid:before {
+ content: '\f106';
+}
+
+.video-js .vjs-mute-control .vjs-icon-placeholder,
+.vjs-icon-volume-high {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-mute-control .vjs-icon-placeholder:before,
+.vjs-icon-volume-high:before {
+ content: '\f107';
+}
+
+.video-js .vjs-fullscreen-control .vjs-icon-placeholder,
+.vjs-icon-fullscreen-enter {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-fullscreen-control .vjs-icon-placeholder:before,
+.vjs-icon-fullscreen-enter:before {
+ content: '\f108';
+}
+
+.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder,
+.vjs-icon-fullscreen-exit {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder:before,
+.vjs-icon-fullscreen-exit:before {
+ content: '\f109';
+}
+
+.vjs-icon-square {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.vjs-icon-square:before {
+ content: '\f10a';
+}
+
+.vjs-icon-spinner {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.vjs-icon-spinner:before {
+ content: '\f10b';
+}
+
+.video-js .vjs-subs-caps-button .vjs-icon-placeholder,
+.video-js .vjs-subtitles-button .vjs-icon-placeholder,
+.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder,
+.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder,
+.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder,
+.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder,
+.vjs-icon-subtitles {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-subs-caps-button .vjs-icon-placeholder:before,
+.video-js .vjs-subtitles-button .vjs-icon-placeholder:before,
+.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder:before,
+.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder:before,
+.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder:before,
+.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder:before,
+.vjs-icon-subtitles:before {
+ content: '\f10c';
+}
+
+.video-js .vjs-captions-button .vjs-icon-placeholder,
+.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder,
+.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder,
+.vjs-icon-captions {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-captions-button .vjs-icon-placeholder:before,
+.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder:before,
+.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder:before,
+.vjs-icon-captions:before {
+ content: '\f10d';
+}
+
+.video-js .vjs-chapters-button .vjs-icon-placeholder,
+.vjs-icon-chapters {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-chapters-button .vjs-icon-placeholder:before,
+.vjs-icon-chapters:before {
+ content: '\f10e';
+}
+
+.vjs-icon-share {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.vjs-icon-share:before {
+ content: '\f10f';
+}
+
+.vjs-icon-cog {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.vjs-icon-cog:before {
+ content: '\f110';
+}
+
+.video-js .vjs-play-progress,
+.video-js .vjs-volume-level,
+.vjs-icon-circle,
+.vjs-seek-to-live-control .vjs-icon-placeholder {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-play-progress:before,
+.video-js .vjs-volume-level:before,
+.vjs-icon-circle:before,
+.vjs-seek-to-live-control .vjs-icon-placeholder:before {
+ content: '\f111';
+}
+
+.vjs-icon-circle-outline {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.vjs-icon-circle-outline:before {
+ content: '\f112';
+}
+
+.vjs-icon-circle-inner-circle {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.vjs-icon-circle-inner-circle:before {
+ content: '\f113';
+}
+
+.vjs-icon-hd {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.vjs-icon-hd:before {
+ content: '\f114';
+}
+
+.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder,
+.vjs-icon-cancel {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder:before,
+.vjs-icon-cancel:before {
+ content: '\f115';
+}
+
+.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder,
+.vjs-icon-replay {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder:before,
+.vjs-icon-replay:before {
+ content: '\f116';
+}
+
+.vjs-icon-facebook {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.vjs-icon-facebook:before {
+ content: '\f117';
+}
+
+.vjs-icon-gplus {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.vjs-icon-gplus:before {
+ content: '\f118';
+}
+
+.vjs-icon-linkedin {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.vjs-icon-linkedin:before {
+ content: '\f119';
+}
+
+.vjs-icon-twitter {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.vjs-icon-twitter:before {
+ content: '\f11a';
+}
+
+.vjs-icon-tumblr {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.vjs-icon-tumblr:before {
+ content: '\f11b';
+}
+
+.vjs-icon-pinterest {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.vjs-icon-pinterest:before {
+ content: '\f11c';
+}
+
+.video-js .vjs-descriptions-button .vjs-icon-placeholder,
+.vjs-icon-audio-description {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-descriptions-button .vjs-icon-placeholder:before,
+.vjs-icon-audio-description:before {
+ content: '\f11d';
+}
+
+.video-js .vjs-audio-button .vjs-icon-placeholder,
+.vjs-icon-audio {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-audio-button .vjs-icon-placeholder:before,
+.vjs-icon-audio:before {
+ content: '\f11e';
+}
+
+.vjs-icon-next-item {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.vjs-icon-next-item:before {
+ content: '\f11f';
+}
+
+.vjs-icon-previous-item {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.vjs-icon-previous-item:before {
+ content: '\f120';
+}
+
+.video-js .vjs-picture-in-picture-control .vjs-icon-placeholder,
+.vjs-icon-picture-in-picture-enter {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js .vjs-picture-in-picture-control .vjs-icon-placeholder:before,
+.vjs-icon-picture-in-picture-enter:before {
+ content: '\f121';
+}
+
+.video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder,
+.vjs-icon-picture-in-picture-exit {
+ font-family: VideoJS;
+ font-weight: 400;
+ font-style: normal;
+}
+
+.video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder:before,
+.vjs-icon-picture-in-picture-exit:before {
+ content: '\f122';
+}
+
+.video-js {
+ display: block;
+ box-sizing: border-box;
+ color: #fff;
+ background-color: #000;
+ position: relative;
+ padding: 0;
+ font-size: 10px;
+ line-height: 1;
+ font-weight: 400;
+ font-style: normal;
+ font-family: Arial, Helvetica, sans-serif;
+ word-break: initial;
+}
+
+.video-js:-moz-full-screen {
+ position: absolute;
+}
+
+.video-js:-webkit-full-screen {
+ width: 100% !important;
+ height: 100% !important;
+}
+
+.video-js[tabindex='-1'] {
+ outline: 0;
+}
+
+.video-js *,
+.video-js :after,
+.video-js :before {
+ box-sizing: inherit;
+}
+
+.video-js ul {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+ list-style-position: outside;
+ margin-left: 0;
+ margin-right: 0;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+.video-js.vjs-1-1,
+.video-js.vjs-16-9,
+.video-js.vjs-4-3,
+.video-js.vjs-9-16,
+.video-js.vjs-fluid {
+ width: 100%;
+ max-width: 100%;
+ height: 0;
+}
+
+.video-js.vjs-16-9 {
+ padding-top: 56.25%;
+}
+
+.video-js.vjs-4-3 {
+ padding-top: 75%;
+}
+
+.video-js.vjs-9-16 {
+ padding-top: 177.7777777778%;
+}
+
+.video-js.vjs-1-1 {
+ padding-top: 100%;
+}
+
+.video-js.vjs-fill {
+ width: 100%;
+ height: 100%;
+}
+
+.video-js .vjs-tech {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+body.vjs-full-window {
+ padding: 0;
+ margin: 0;
+ height: 100%;
+}
+
+.vjs-full-window .video-js.vjs-fullscreen {
+ position: fixed;
+ overflow: hidden;
+ z-index: 1000;
+ left: 0;
+ top: 0;
+ bottom: 0;
+ right: 0;
+}
+
+.video-js.vjs-fullscreen:not(.vjs-ios-native-fs) {
+ width: 100% !important;
+ height: 100% !important;
+ padding-top: 0 !important;
+}
+
+.video-js.vjs-fullscreen.vjs-user-inactive {
+ cursor: none;
+}
+
+.vjs-hidden {
+ display: none !important;
+}
+
+.vjs-disabled {
+ opacity: 0.5;
+ cursor: default;
+}
+
+.video-js .vjs-offscreen {
+ height: 1px;
+ left: -9999px;
+ position: absolute;
+ top: 0;
+ width: 1px;
+}
+
+.vjs-lock-showing {
+ display: block !important;
+ opacity: 1 !important;
+ visibility: visible !important;
+}
+
+.vjs-no-js {
+ padding: 20px;
+ color: #fff;
+ background-color: #000;
+ font-size: 18px;
+ font-family: Arial, Helvetica, sans-serif;
+ text-align: center;
+ width: 300px;
+ height: 150px;
+ margin: 0 auto;
+}
+
+.vjs-no-js a,
+.vjs-no-js a:visited {
+ color: #66a8cc;
+}
+
+.video-js .vjs-big-play-button {
+ font-size: 3em;
+ line-height: 1.5em;
+ height: 1.63332em;
+ width: 3em;
+ display: block;
+ position: absolute;
+ top: 10px;
+ left: 10px;
+ padding: 0;
+ cursor: pointer;
+ opacity: 1;
+ border: 0.06666em solid #fff;
+ background-color: #2b333f;
+ background-color: rgba(43, 51, 63, 0.7);
+ border-radius: 0.3em;
+ transition: all 0.4s;
+}
+
+.vjs-big-play-centered .vjs-big-play-button {
+ top: 50%;
+ left: 50%;
+ margin-top: -0.81666em;
+ margin-left: -1.5em;
+}
+
+.video-js .vjs-big-play-button:focus,
+.video-js:hover .vjs-big-play-button {
+ border-color: #fff;
+ background-color: #73859f;
+ background-color: rgba(115, 133, 159, 0.5);
+ transition: all 0s;
+}
+
+.vjs-controls-disabled .vjs-big-play-button,
+.vjs-error .vjs-big-play-button,
+.vjs-has-started .vjs-big-play-button,
+.vjs-using-native-controls .vjs-big-play-button {
+ display: none;
+}
+
+.vjs-has-started.vjs-paused.vjs-show-big-play-button-on-pause .vjs-big-play-button {
+ display: block;
+}
+
+.video-js button {
+ background: 0 0;
+ border: none;
+ color: inherit;
+ display: inline-block;
+ font-size: inherit;
+ line-height: inherit;
+ text-transform: none;
+ text-decoration: none;
+ transition: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+}
+
+.vjs-control .vjs-button {
+ width: 100%;
+ height: 100%;
+}
+
+.video-js .vjs-control.vjs-close-button {
+ cursor: pointer;
+ height: 3em;
+ position: absolute;
+ right: 0;
+ top: 0.5em;
+ z-index: 2;
+}
+
+.video-js .vjs-modal-dialog {
+ background: rgba(0, 0, 0, 0.8);
+ background: linear-gradient(180deg,
+ rgba(0, 0, 0, 0.8),
+ rgba(255, 255, 255, 0));
+ overflow: auto;
+}
+
+.video-js .vjs-modal-dialog>* {
+ box-sizing: border-box;
+}
+
+.vjs-modal-dialog .vjs-modal-dialog-content {
+ font-size: 1.2em;
+ line-height: 1.5;
+ padding: 20px 24px;
+ z-index: 1;
+}
+
+.vjs-menu-button {
+ cursor: pointer;
+}
+
+.vjs-menu-button.vjs-disabled {
+ cursor: default;
+}
+
+.vjs-workinghover .vjs-menu-button.vjs-disabled:hover .vjs-menu {
+ display: none;
+}
+
+.vjs-menu .vjs-menu-content {
+ display: block;
+ padding: 0;
+ margin: 0;
+ font-family: Arial, Helvetica, sans-serif;
+ overflow: auto;
+}
+
+.vjs-menu .vjs-menu-content>* {
+ box-sizing: border-box;
+}
+
+.vjs-scrubbing .vjs-control.vjs-menu-button:hover .vjs-menu {
+ display: none;
+}
+
+.vjs-menu li {
+ list-style: none;
+ margin: 0;
+ padding: 0.2em 0;
+ line-height: 1.4em;
+ font-size: 1.2em;
+ text-align: center;
+ text-transform: lowercase;
+}
+
+.js-focus-visible .vjs-menu li.vjs-menu-item:hover,
+.vjs-menu li.vjs-menu-item:focus,
+.vjs-menu li.vjs-menu-item:hover {
+ background-color: #73859f;
+ background-color: rgba(115, 133, 159, 0.5);
+}
+
+.js-focus-visible .vjs-menu li.vjs-selected:hover,
+.vjs-menu li.vjs-selected,
+.vjs-menu li.vjs-selected:focus,
+.vjs-menu li.vjs-selected:hover {
+ background-color: #fff;
+ color: #2b333f;
+}
+
+.js-focus-visible .vjs-menu :not(.vjs-selected):focus:not(.focus-visible),
+.video-js .vjs-menu :not(.vjs-selected):focus:not(:focus-visible) {
+ background: 0 0;
+}
+
+.vjs-menu li.vjs-menu-title {
+ text-align: center;
+ text-transform: uppercase;
+ font-size: 1em;
+ line-height: 2em;
+ padding: 0;
+ margin: 0 0 0.3em 0;
+ font-weight: 700;
+ cursor: default;
+}
+
+.vjs-menu-button-popup .vjs-menu {
+ display: none;
+ position: absolute;
+ bottom: 0;
+ width: 10em;
+ left: -3em;
+ height: 0;
+ margin-bottom: 1.5em;
+ border-top-color: rgba(43, 51, 63, 0.7);
+}
+
+.vjs-menu-button-popup .vjs-menu .vjs-menu-content {
+ background-color: #2b333f;
+ background-color: rgba(43, 51, 63, 0.7);
+ position: absolute;
+ width: 100%;
+ bottom: 1.5em;
+ max-height: 15em;
+}
+
+.vjs-layout-tiny .vjs-menu-button-popup .vjs-menu .vjs-menu-content,
+.vjs-layout-x-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content {
+ max-height: 5em;
+}
+
+.vjs-layout-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content {
+ max-height: 10em;
+}
+
+.vjs-layout-medium .vjs-menu-button-popup .vjs-menu .vjs-menu-content {
+ max-height: 14em;
+}
+
+.vjs-layout-huge .vjs-menu-button-popup .vjs-menu .vjs-menu-content,
+.vjs-layout-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,
+.vjs-layout-x-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content {
+ max-height: 25em;
+}
+
+.vjs-menu-button-popup .vjs-menu.vjs-lock-showing,
+.vjs-workinghover .vjs-menu-button-popup.vjs-hover .vjs-menu {
+ display: block;
+}
+
+.video-js .vjs-menu-button-inline {
+ transition: all 0.4s;
+ overflow: hidden;
+}
+
+.video-js .vjs-menu-button-inline:before {
+ width: 2.222222222em;
+}
+
+.video-js .vjs-menu-button-inline.vjs-slider-active,
+.video-js .vjs-menu-button-inline:focus,
+.video-js .vjs-menu-button-inline:hover,
+.video-js.vjs-no-flex .vjs-menu-button-inline {
+ width: 12em;
+}
+
+.vjs-menu-button-inline .vjs-menu {
+ opacity: 0;
+ height: 100%;
+ width: auto;
+ position: absolute;
+ left: 4em;
+ top: 0;
+ padding: 0;
+ margin: 0;
+ transition: all 0.4s;
+}
+
+.vjs-menu-button-inline.vjs-slider-active .vjs-menu,
+.vjs-menu-button-inline:focus .vjs-menu,
+.vjs-menu-button-inline:hover .vjs-menu {
+ display: block;
+ opacity: 1;
+}
+
+.vjs-no-flex .vjs-menu-button-inline .vjs-menu {
+ display: block;
+ opacity: 1;
+ position: relative;
+ width: auto;
+}
+
+.vjs-no-flex .vjs-menu-button-inline.vjs-slider-active .vjs-menu,
+.vjs-no-flex .vjs-menu-button-inline:focus .vjs-menu,
+.vjs-no-flex .vjs-menu-button-inline:hover .vjs-menu {
+ width: auto;
+}
+
+.vjs-menu-button-inline .vjs-menu-content {
+ width: auto;
+ height: 100%;
+ margin: 0;
+ overflow: hidden;
+}
+
+.video-js .vjs-control-bar {
+ display: none;
+ width: 100%;
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ height: 3em;
+ background-color: #2b333f;
+ background-color: rgba(43, 51, 63, 0.7);
+}
+
+.vjs-has-started .vjs-control-bar {
+ display: flex;
+ visibility: visible;
+ opacity: 1;
+ transition: visibility 0.1s, opacity 0.1s;
+}
+
+.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar {
+ visibility: visible;
+ opacity: 0;
+ transition: visibility 1s, opacity 1s;
+}
+
+.vjs-controls-disabled .vjs-control-bar,
+.vjs-error .vjs-control-bar,
+.vjs-using-native-controls .vjs-control-bar {
+ display: none !important;
+}
+
+.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar {
+ opacity: 1;
+ visibility: visible;
+}
+
+.vjs-has-started.vjs-no-flex .vjs-control-bar {
+ display: table;
+}
+
+.video-js .vjs-control {
+ position: relative;
+ text-align: center;
+ margin: 0;
+ padding: 0;
+ height: 100%;
+ width: 4em;
+ flex: none;
+}
+
+.vjs-button>.vjs-icon-placeholder:before {
+ font-size: 1.8em;
+ line-height: 1.67;
+}
+
+.vjs-button>.vjs-icon-placeholder {
+ display: block;
+}
+
+.video-js .vjs-control:focus,
+.video-js .vjs-control:focus:before,
+.video-js .vjs-control:hover:before {
+ text-shadow: 0 0 1em #fff;
+}
+
+.video-js .vjs-control-text {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+}
+
+.vjs-no-flex .vjs-control {
+ display: table-cell;
+ vertical-align: middle;
+}
+
+.video-js .vjs-custom-control-spacer {
+ display: none;
+}
+
+.video-js .vjs-progress-control {
+ cursor: pointer;
+ flex: auto;
+ display: flex;
+ align-items: center;
+ min-width: 4em;
+ touch-action: none;
+}
+
+.video-js .vjs-progress-control.disabled {
+ cursor: default;
+}
+
+.vjs-live .vjs-progress-control {
+ display: none;
+}
+
+.vjs-liveui .vjs-progress-control {
+ display: flex;
+ align-items: center;
+}
+
+.vjs-no-flex .vjs-progress-control {
+ width: auto;
+}
+
+.video-js .vjs-progress-holder {
+ flex: auto;
+ transition: all 0.2s;
+ height: 0.3em;
+}
+
+.video-js .vjs-progress-control .vjs-progress-holder {
+ margin: 0 10px;
+}
+
+.video-js .vjs-progress-control:hover .vjs-progress-holder {
+ font-size: 1.6666666667em;
+}
+
+.video-js .vjs-progress-control:hover .vjs-progress-holder.disabled {
+ font-size: 1em;
+}
+
+.video-js .vjs-progress-holder .vjs-load-progress,
+.video-js .vjs-progress-holder .vjs-load-progress div,
+.video-js .vjs-progress-holder .vjs-play-progress {
+ position: absolute;
+ display: block;
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ width: 0;
+}
+
+.video-js .vjs-play-progress {
+ background-color: #fff;
+}
+
+.video-js .vjs-play-progress:before {
+ font-size: 0.9em;
+ position: absolute;
+ right: -0.5em;
+ top: -0.3333333333em;
+ z-index: 1;
+}
+
+.video-js .vjs-load-progress {
+ background: rgba(115, 133, 159, 0.5);
+}
+
+.video-js .vjs-load-progress div {
+ background: rgba(115, 133, 159, 0.75);
+}
+
+.video-js .vjs-time-tooltip {
+ background-color: #fff;
+ background-color: rgba(255, 255, 255, 0.8);
+ border-radius: 0.3em;
+ color: #000;
+ float: right;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 1em;
+ padding: 6px 8px 8px 8px;
+ pointer-events: none;
+ position: absolute;
+ top: -3.4em;
+ visibility: hidden;
+ z-index: 1;
+}
+
+.video-js .vjs-progress-holder:focus .vjs-time-tooltip {
+ display: none;
+}
+
+.video-js .vjs-progress-control:hover .vjs-progress-holder:focus .vjs-time-tooltip,
+.video-js .vjs-progress-control:hover .vjs-time-tooltip {
+ display: block;
+ font-size: 0.6em;
+ visibility: visible;
+}
+
+.video-js .vjs-progress-control.disabled:hover .vjs-time-tooltip {
+ font-size: 1em;
+}
+
+.video-js .vjs-progress-control .vjs-mouse-display {
+ display: none;
+ position: absolute;
+ width: 1px;
+ height: 100%;
+ background-color: #000;
+ z-index: 1;
+}
+
+.vjs-no-flex .vjs-progress-control .vjs-mouse-display {
+ z-index: 0;
+}
+
+.video-js .vjs-progress-control:hover .vjs-mouse-display {
+ display: block;
+}
+
+.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display {
+ visibility: hidden;
+ opacity: 0;
+ transition: visibility 1s, opacity 1s;
+}
+
+.video-js.vjs-user-inactive.vjs-no-flex .vjs-progress-control .vjs-mouse-display {
+ display: none;
+}
+
+.vjs-mouse-display .vjs-time-tooltip {
+ color: #fff;
+ background-color: #000;
+ background-color: rgba(0, 0, 0, 0.8);
+}
+
+.video-js .vjs-slider {
+ position: relative;
+ cursor: pointer;
+ padding: 0;
+ margin: 0 0.45em 0 0.45em;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ background-color: #73859f;
+ background-color: rgba(115, 133, 159, 0.5);
+}
+
+.video-js .vjs-slider.disabled {
+ cursor: default;
+}
+
+.video-js .vjs-slider:focus {
+ text-shadow: 0 0 1em #fff;
+ box-shadow: 0 0 1em #fff;
+}
+
+.video-js .vjs-mute-control {
+ cursor: pointer;
+ flex: none;
+}
+
+.video-js .vjs-volume-control {
+ cursor: pointer;
+ margin-right: 1em;
+ display: flex;
+}
+
+.video-js .vjs-volume-control.vjs-volume-horizontal {
+ width: 5em;
+}
+
+.video-js .vjs-volume-panel .vjs-volume-control {
+ visibility: visible;
+ opacity: 0;
+ width: 1px;
+ height: 1px;
+ margin-left: -1px;
+}
+
+.video-js .vjs-volume-panel {
+ transition: width 1s;
+}
+
+.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active,
+.video-js .vjs-volume-panel .vjs-volume-control:active,
+.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control,
+.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control,
+.video-js .vjs-volume-panel:active .vjs-volume-control,
+.video-js .vjs-volume-panel:focus .vjs-volume-control {
+ visibility: visible;
+ opacity: 1;
+ position: relative;
+ transition: visibility 0.1s, opacity 0.1s, height 0.1s, width 0.1s, left 0s,
+ top 0s;
+}
+
+.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-horizontal,
+.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-horizontal,
+.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control.vjs-volume-horizontal,
+.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-horizontal,
+.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-horizontal,
+.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-horizontal {
+ width: 5em;
+ height: 3em;
+ margin-right: 0;
+}
+
+.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-vertical,
+.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-vertical,
+.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control.vjs-volume-vertical,
+.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-vertical,
+.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-vertical,
+.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-vertical {
+ left: -3.5em;
+ transition: left 0s;
+}
+
+.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,
+.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,
+.video-js .vjs-volume-panel.vjs-volume-panel-horizontal:active {
+ width: 10em;
+ transition: width 0.1s;
+}
+
+.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-mute-toggle-only {
+ width: 4em;
+}
+
+.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical {
+ height: 8em;
+ width: 3em;
+ left: -3000em;
+ transition: visibility 1s, opacity 1s, height 1s 1s, width 1s 1s, left 1s 1s,
+ top 1s 1s;
+}
+
+.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal {
+ transition: visibility 1s, opacity 1s, height 1s 1s, width 1s, left 1s 1s,
+ top 1s 1s;
+}
+
+.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal {
+ width: 5em;
+ height: 3em;
+ visibility: visible;
+ opacity: 1;
+ position: relative;
+ transition: none;
+}
+
+.video-js.vjs-no-flex .vjs-volume-control.vjs-volume-vertical,
+.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical {
+ position: absolute;
+ bottom: 3em;
+ left: 0.5em;
+}
+
+.video-js .vjs-volume-panel {
+ display: flex;
+}
+
+.video-js .vjs-volume-bar {
+ margin: 1.35em 0.45em;
+}
+
+.vjs-volume-bar.vjs-slider-horizontal {
+ width: 5em;
+ height: 0.3em;
+}
+
+.vjs-volume-bar.vjs-slider-vertical {
+ width: 0.3em;
+ height: 5em;
+ margin: 1.35em auto;
+}
+
+.video-js .vjs-volume-level {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ background-color: #fff;
+}
+
+.video-js .vjs-volume-level:before {
+ position: absolute;
+ font-size: 0.9em;
+ z-index: 1;
+}
+
+.vjs-slider-vertical .vjs-volume-level {
+ width: 0.3em;
+}
+
+.vjs-slider-vertical .vjs-volume-level:before {
+ top: -0.5em;
+ left: -0.3em;
+ z-index: 1;
+}
+
+.vjs-slider-horizontal .vjs-volume-level {
+ height: 0.3em;
+}
+
+.vjs-slider-horizontal .vjs-volume-level:before {
+ top: -0.3em;
+ right: -0.5em;
+}
+
+.video-js .vjs-volume-panel.vjs-volume-panel-vertical {
+ width: 4em;
+}
+
+.vjs-volume-bar.vjs-slider-vertical .vjs-volume-level {
+ height: 100%;
+}
+
+.vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level {
+ width: 100%;
+}
+
+.video-js .vjs-volume-vertical {
+ width: 3em;
+ height: 8em;
+ bottom: 8em;
+ background-color: #2b333f;
+ background-color: rgba(43, 51, 63, 0.7);
+}
+
+.video-js .vjs-volume-horizontal .vjs-menu {
+ left: -2em;
+}
+
+.video-js .vjs-volume-tooltip {
+ background-color: #fff;
+ background-color: rgba(255, 255, 255, 0.8);
+ border-radius: 0.3em;
+ color: #000;
+ float: right;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 1em;
+ padding: 6px 8px 8px 8px;
+ pointer-events: none;
+ position: absolute;
+ top: -3.4em;
+ visibility: hidden;
+ z-index: 1;
+}
+
+.video-js .vjs-volume-control:hover .vjs-progress-holder:focus .vjs-volume-tooltip,
+.video-js .vjs-volume-control:hover .vjs-volume-tooltip {
+ display: block;
+ font-size: 1em;
+ visibility: visible;
+}
+
+.video-js .vjs-volume-vertical:hover .vjs-progress-holder:focus .vjs-volume-tooltip,
+.video-js .vjs-volume-vertical:hover .vjs-volume-tooltip {
+ left: 1em;
+ top: -12px;
+}
+
+.video-js .vjs-volume-control.disabled:hover .vjs-volume-tooltip {
+ font-size: 1em;
+}
+
+.video-js .vjs-volume-control .vjs-mouse-display {
+ display: none;
+ position: absolute;
+ width: 100%;
+ height: 1px;
+ background-color: #000;
+ z-index: 1;
+}
+
+.video-js .vjs-volume-horizontal .vjs-mouse-display {
+ width: 1px;
+ height: 100%;
+}
+
+.vjs-no-flex .vjs-volume-control .vjs-mouse-display {
+ z-index: 0;
+}
+
+.video-js .vjs-volume-control:hover .vjs-mouse-display {
+ display: block;
+}
+
+.video-js.vjs-user-inactive .vjs-volume-control .vjs-mouse-display {
+ visibility: hidden;
+ opacity: 0;
+ transition: visibility 1s, opacity 1s;
+}
+
+.video-js.vjs-user-inactive.vjs-no-flex .vjs-volume-control .vjs-mouse-display {
+ display: none;
+}
+
+.vjs-mouse-display .vjs-volume-tooltip {
+ color: #fff;
+ background-color: #000;
+ background-color: rgba(0, 0, 0, 0.8);
+}
+
+.vjs-poster {
+ display: inline-block;
+ vertical-align: middle;
+ background-repeat: no-repeat;
+ background-position: 50% 50%;
+ background-size: contain;
+ background-color: #000;
+ cursor: pointer;
+ margin: 0;
+ padding: 0;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 100%;
+}
+
+.vjs-has-started .vjs-poster {
+ display: none;
+}
+
+.vjs-audio.vjs-has-started .vjs-poster {
+ display: block;
+}
+
+.vjs-using-native-controls .vjs-poster {
+ display: none;
+}
+
+.video-js .vjs-live-control {
+ display: flex;
+ align-items: flex-start;
+ flex: auto;
+ font-size: 1em;
+ line-height: 3em;
+}
+
+.vjs-no-flex .vjs-live-control {
+ display: table-cell;
+ width: auto;
+ text-align: left;
+}
+
+.video-js.vjs-liveui .vjs-live-control,
+.video-js:not(.vjs-live) .vjs-live-control {
+ display: none;
+}
+
+.video-js .vjs-seek-to-live-control {
+ align-items: center;
+ cursor: pointer;
+ flex: none;
+ display: inline-flex;
+ height: 100%;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ font-size: 1em;
+ line-height: 3em;
+ width: auto;
+ min-width: 4em;
+}
+
+.vjs-no-flex .vjs-seek-to-live-control {
+ display: table-cell;
+ width: auto;
+ text-align: left;
+}
+
+.video-js.vjs-live:not(.vjs-liveui) .vjs-seek-to-live-control,
+.video-js:not(.vjs-live) .vjs-seek-to-live-control {
+ display: none;
+}
+
+.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge {
+ cursor: auto;
+}
+
+.vjs-seek-to-live-control .vjs-icon-placeholder {
+ margin-right: 0.5em;
+ color: #888;
+}
+
+.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge .vjs-icon-placeholder {
+ color: red;
+}
+
+.video-js .vjs-time-control {
+ flex: none;
+ font-size: 1em;
+ line-height: 3em;
+ min-width: 2em;
+ width: auto;
+ padding-left: 1em;
+ padding-right: 1em;
+}
+
+.vjs-live .vjs-time-control {
+ display: none;
+}
+
+.video-js .vjs-current-time,
+.vjs-no-flex .vjs-current-time {
+ display: none;
+}
+
+.video-js .vjs-duration,
+.vjs-no-flex .vjs-duration {
+ display: none;
+}
+
+.vjs-time-divider {
+ display: none;
+ line-height: 3em;
+}
+
+.vjs-live .vjs-time-divider {
+ display: none;
+}
+
+.video-js .vjs-play-control {
+ cursor: pointer;
+}
+
+.video-js .vjs-play-control .vjs-icon-placeholder {
+ flex: none;
+}
+
+.vjs-text-track-display {
+ position: absolute;
+ bottom: 3em;
+ left: 0;
+ right: 0;
+ top: 0;
+ pointer-events: none;
+}
+
+.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display {
+ bottom: 1em;
+}
+
+.video-js .vjs-text-track {
+ font-size: 1.4em;
+ text-align: center;
+ margin-bottom: 0.1em;
+}
+
+.vjs-subtitles {
+ color: #fff;
+}
+
+.vjs-captions {
+ color: #fc6;
+}
+
+.vjs-tt-cue {
+ display: block;
+}
+
+video::-webkit-media-text-track-display {
+ transform: translateY(-3em);
+}
+
+.video-js.vjs-user-inactive.vjs-playing video::-webkit-media-text-track-display {
+ transform: translateY(-1.5em);
+}
+
+.video-js .vjs-picture-in-picture-control {
+ cursor: pointer;
+ flex: none;
+}
+
+.video-js .vjs-fullscreen-control {
+ cursor: pointer;
+ flex: none;
+}
+
+.vjs-playback-rate .vjs-playback-rate-value,
+.vjs-playback-rate>.vjs-menu-button {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.vjs-playback-rate .vjs-playback-rate-value {
+ pointer-events: none;
+ font-size: 1.5em;
+ line-height: 2;
+ text-align: center;
+}
+
+.vjs-playback-rate .vjs-menu {
+ width: 4em;
+ left: 0;
+}
+
+.vjs-error .vjs-error-display .vjs-modal-dialog-content {
+ font-size: 1.4em;
+ text-align: center;
+}
+
+.vjs-error .vjs-error-display:before {
+ color: #fff;
+ content: 'X';
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 4em;
+ left: 0;
+ line-height: 1;
+ margin-top: -0.5em;
+ position: absolute;
+ text-shadow: 0.05em 0.05em 0.1em #000;
+ text-align: center;
+ top: 50%;
+ vertical-align: middle;
+ width: 100%;
+}
+
+.vjs-loading-spinner {
+ display: none;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ margin: -25px 0 0 -25px;
+ opacity: 0.85;
+ text-align: left;
+ border: 6px solid rgba(43, 51, 63, 0.7);
+ box-sizing: border-box;
+ background-clip: padding-box;
+ width: 50px;
+ height: 50px;
+ border-radius: 25px;
+ visibility: hidden;
+}
+
+.vjs-seeking .vjs-loading-spinner,
+.vjs-waiting .vjs-loading-spinner {
+ display: block;
+ -webkit-animation: vjs-spinner-show 0s linear 0.3s forwards;
+ animation: vjs-spinner-show 0s linear 0.3s forwards;
+}
+
+.vjs-loading-spinner:after,
+.vjs-loading-spinner:before {
+ content: '';
+ position: absolute;
+ margin: -6px;
+ box-sizing: inherit;
+ width: inherit;
+ height: inherit;
+ border-radius: inherit;
+ opacity: 1;
+ border: inherit;
+ border-color: transparent;
+ border-top-color: #fff;
+}
+
+.vjs-seeking .vjs-loading-spinner:after,
+.vjs-seeking .vjs-loading-spinner:before,
+.vjs-waiting .vjs-loading-spinner:after,
+.vjs-waiting .vjs-loading-spinner:before {
+ -webkit-animation: vjs-spinner-spin 1.1s cubic-bezier(0.6, 0.2, 0, 0.8) infinite,
+ vjs-spinner-fade 1.1s linear infinite;
+ animation: vjs-spinner-spin 1.1s cubic-bezier(0.6, 0.2, 0, 0.8) infinite,
+ vjs-spinner-fade 1.1s linear infinite;
+}
+
+.vjs-seeking .vjs-loading-spinner:before,
+.vjs-waiting .vjs-loading-spinner:before {
+ border-top-color: #fff;
+}
+
+.vjs-seeking .vjs-loading-spinner:after,
+.vjs-waiting .vjs-loading-spinner:after {
+ border-top-color: #fff;
+ -webkit-animation-delay: 0.44s;
+ animation-delay: 0.44s;
+}
+
+@keyframes vjs-spinner-show {
+ to {
+ visibility: visible;
+ }
+}
+
+@-webkit-keyframes vjs-spinner-show {
+ to {
+ visibility: visible;
+ }
+}
+
+@keyframes vjs-spinner-spin {
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
+@-webkit-keyframes vjs-spinner-spin {
+ 100% {
+ -webkit-transform: rotate(360deg);
+ }
+}
+
+@keyframes vjs-spinner-fade {
+ 0% {
+ border-top-color: #73859f;
+ }
+
+ 20% {
+ border-top-color: #73859f;
+ }
+
+ 35% {
+ border-top-color: #fff;
+ }
+
+ 60% {
+ border-top-color: #73859f;
+ }
+
+ 100% {
+ border-top-color: #73859f;
+ }
+}
+
+@-webkit-keyframes vjs-spinner-fade {
+ 0% {
+ border-top-color: #73859f;
+ }
+
+ 20% {
+ border-top-color: #73859f;
+ }
+
+ 35% {
+ border-top-color: #fff;
+ }
+
+ 60% {
+ border-top-color: #73859f;
+ }
+
+ 100% {
+ border-top-color: #73859f;
+ }
+}
+
+.vjs-chapters-button .vjs-menu ul {
+ width: 24em;
+}
+
+.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder {
+ vertical-align: middle;
+ display: inline-block;
+ margin-bottom: -0.1em;
+}
+
+.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before {
+ font-family: VideoJS;
+ content: '๏';
+ font-size: 1.5em;
+ line-height: inherit;
+}
+
+.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder {
+ vertical-align: middle;
+ display: inline-block;
+ margin-bottom: -0.1em;
+}
+
+.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before {
+ font-family: VideoJS;
+ content: ' ๏';
+ font-size: 1.5em;
+ line-height: inherit;
+}
+
+.video-js.vjs-layout-small .vjs-audio-button,
+.video-js.vjs-layout-small .vjs-captions-button,
+.video-js.vjs-layout-small .vjs-chapters-button,
+.video-js.vjs-layout-small .vjs-current-time,
+.video-js.vjs-layout-small .vjs-descriptions-button,
+.video-js.vjs-layout-small .vjs-duration,
+.video-js.vjs-layout-small .vjs-playback-rate,
+.video-js.vjs-layout-small .vjs-remaining-time,
+.video-js.vjs-layout-small .vjs-subtitles-button,
+.video-js.vjs-layout-small .vjs-time-divider,
+.video-js.vjs-layout-small .vjs-volume-control,
+.video-js.vjs-layout-tiny .vjs-audio-button,
+.video-js.vjs-layout-tiny .vjs-captions-button,
+.video-js.vjs-layout-tiny .vjs-chapters-button,
+.video-js.vjs-layout-tiny .vjs-current-time,
+.video-js.vjs-layout-tiny .vjs-descriptions-button,
+.video-js.vjs-layout-tiny .vjs-duration,
+.video-js.vjs-layout-tiny .vjs-playback-rate,
+.video-js.vjs-layout-tiny .vjs-remaining-time,
+.video-js.vjs-layout-tiny .vjs-subtitles-button,
+.video-js.vjs-layout-tiny .vjs-time-divider,
+.video-js.vjs-layout-tiny .vjs-volume-control,
+.video-js.vjs-layout-x-small .vjs-audio-button,
+.video-js.vjs-layout-x-small .vjs-captions-button,
+.video-js.vjs-layout-x-small .vjs-chapters-button,
+.video-js.vjs-layout-x-small .vjs-current-time,
+.video-js.vjs-layout-x-small .vjs-descriptions-button,
+.video-js.vjs-layout-x-small .vjs-duration,
+.video-js.vjs-layout-x-small .vjs-playback-rate,
+.video-js.vjs-layout-x-small .vjs-remaining-time,
+.video-js.vjs-layout-x-small .vjs-subtitles-button,
+.video-js.vjs-layout-x-small .vjs-time-divider,
+.video-js.vjs-layout-x-small .vjs-volume-control {
+ display: none !important;
+}
+
+.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,
+.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,
+.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover,
+.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,
+.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:active,
+.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:hover,
+.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,
+.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,
+.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover {
+ width: auto;
+ width: initial;
+}
+
+.video-js.vjs-layout-tiny .vjs-subs-caps-button,
+.video-js.vjs-layout-x-small:not(.vjs-live) .vjs-subs-caps-button,
+.video-js.vjs-layout-x-small:not(.vjs-liveui) .vjs-subs-caps-button {
+ display: none;
+}
+
+.video-js.vjs-layout-tiny .vjs-custom-control-spacer,
+.video-js.vjs-layout-x-small.vjs-liveui .vjs-custom-control-spacer {
+ flex: auto;
+ display: block;
+}
+
+.video-js.vjs-layout-tiny.vjs-no-flex .vjs-custom-control-spacer,
+.video-js.vjs-layout-x-small.vjs-liveui.vjs-no-flex .vjs-custom-control-spacer {
+ width: auto;
+}
+
+.video-js.vjs-layout-tiny .vjs-progress-control,
+.video-js.vjs-layout-x-small.vjs-liveui .vjs-progress-control {
+ display: none;
+}
+
+.vjs-modal-dialog.vjs-text-track-settings {
+ background-color: #2b333f;
+ background-color: rgba(43, 51, 63, 0.75);
+ color: #fff;
+ height: 70%;
+}
+
+.vjs-text-track-settings .vjs-modal-dialog-content {
+ display: table;
+}
+
+.vjs-text-track-settings .vjs-track-settings-colors,
+.vjs-text-track-settings .vjs-track-settings-controls,
+.vjs-text-track-settings .vjs-track-settings-font {
+ display: table-cell;
+}
+
+.vjs-text-track-settings .vjs-track-settings-controls {
+ text-align: right;
+ vertical-align: bottom;
+}
+
+@supports (display: grid) {
+ .vjs-text-track-settings .vjs-modal-dialog-content {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ grid-template-rows: 1fr;
+ padding: 20px 24px 0 24px;
+ }
+
+ .vjs-track-settings-controls .vjs-default-button {
+ margin-bottom: 20px;
+ }
+
+ .vjs-text-track-settings .vjs-track-settings-controls {
+ grid-column: 1/-1;
+ }
+
+ .vjs-layout-small .vjs-text-track-settings .vjs-modal-dialog-content,
+ .vjs-layout-tiny .vjs-text-track-settings .vjs-modal-dialog-content,
+ .vjs-layout-x-small .vjs-text-track-settings .vjs-modal-dialog-content {
+ grid-template-columns: 1fr;
+ }
+}
+
+.vjs-track-setting>select {
+ margin-right: 1em;
+ margin-bottom: 0.5em;
+}
+
+.vjs-text-track-settings fieldset {
+ margin: 5px;
+ padding: 3px;
+ border: none;
+}
+
+.vjs-text-track-settings fieldset span {
+ display: inline-block;
+}
+
+.vjs-text-track-settings fieldset span>select {
+ max-width: 7.3em;
+}
+
+.vjs-text-track-settings legend {
+ color: #fff;
+ margin: 0 0 5px 0;
+}
+
+.vjs-text-track-settings .vjs-label {
+ position: absolute;
+ clip: rect(1px 1px 1px 1px);
+ clip: rect(1px, 1px, 1px, 1px);
+ display: block;
+ margin: 0 0 5px 0;
+ padding: 0;
+ border: 0;
+ height: 1px;
+ width: 1px;
+ overflow: hidden;
+}
+
+.vjs-track-settings-controls button:active,
+.vjs-track-settings-controls button:focus {
+ outline-style: solid;
+ outline-width: medium;
+ background-image: linear-gradient(0deg, #fff 88%, #73859f 100%);
+}
+
+.vjs-track-settings-controls button:hover {
+ color: rgba(43, 51, 63, 0.75);
+}
+
+.vjs-track-settings-controls button {
+ background-color: #fff;
+ background-image: linear-gradient(-180deg, #fff 88%, #73859f 100%);
+ color: #2b333f;
+ cursor: pointer;
+ border-radius: 2px;
+}
+
+.vjs-track-settings-controls .vjs-default-button {
+ margin-right: 1em;
+}
+
+@media print {
+ .video-js> :not(.vjs-tech):not(.vjs-poster) {
+ visibility: hidden;
+ }
+}
+
+@media (max-width: 638px) {
+ .video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display {
+ bottom: 1em;
+ }
+}
+
+.vjs-resize-manager {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ border: none;
+ z-index: -1000;
+}
+
+.js-focus-visible .video-js :focus:not(.focus-visible) {
+ outline: 0;
+}
+
+.video-js :focus:not(:focus-visible) {
+ outline: 0;
+}
\ No newline at end of file
diff --git a/packages/player-react/src/vite-env.d.ts b/packages/player-react/src/vite-env.d.ts
new file mode 100644
index 0000000..11f02fe
--- /dev/null
+++ b/packages/player-react/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/packages/player-react/tailwind.config.js b/packages/player-react/tailwind.config.js
new file mode 100644
index 0000000..b4c2bad
--- /dev/null
+++ b/packages/player-react/tailwind.config.js
@@ -0,0 +1,541 @@
+/** @type {import('tailwindcss').Config} */
+export default {
+ prefix: "vdb-p-",
+ purge: {
+ content: ["./src/**/*.{html,js,ts,jsx,tsx}"],
+ options: {
+ safelist: [
+ "vdb-p-my-auto",
+ "vdb-p-text-others-doctormanhattan",
+ "vdb-p-text-others-superman",
+ "vdb-p-text-kilvish",
+ "vdb-p-text-red",
+ "group-hover:vdb-p-border-kilvish-600",
+ "group-hover:vdb-p-bg-others-superman100",
+ "group-hover:vdb-p-border-others-superman",
+ "group-hover:vdb-p-bg-kilvish-100",
+ "group-hover:vdb-p-border-kilvish",
+ "group-hover:vdb-p-bg-red-100",
+ "group-hover:vdb-p-border-red",
+ "group-hover:vdb-p-border-kilvish-600",
+ "group-hover:vdb-p-border-others-doctormanhattan",
+ "group-hover:vdb-p-bg-others-doctormanhattan-100",
+ "vdb-p-max-h-288",
+ "vdb-p-max-h-182",
+ "vdb-p-bg-gradient-to-r",
+ "vdb-p-from-sky-500",
+ ],
+ },
+ },
+ darkMode: false,
+ theme: {
+ fontFamily: {
+ primary: "Inter",
+ secondary: "Gilroy",
+ curgloria: "Gloria Hallelujah",
+ },
+ minWidth: {
+ 1: "1px",
+ 2: "0.125rem",
+ 3: "0.188rem",
+ 4: "0.25rem",
+ 6: "0.375rem",
+ 8: "0.5rem",
+ 12: "0.75rem",
+ 14: "0.875rem",
+ 16: "1rem",
+ 18: "1.125rem",
+ 20: "1.25rem",
+ 24: "1.5rem",
+ 25: "1.563rem",
+ 28: "1.75rem",
+ 32: "2rem",
+ 34: "2.125rem",
+ 40: "2.5rem",
+ 42: "2.625rem",
+ 44: "2.75rem",
+ 48: "3rem",
+ 56: "3.5rem",
+ 60: "3.75rem",
+ 64: "4rem",
+ 72: "4.5rem",
+ 76: "4.75rem",
+ 80: "5rem",
+ 88: "5.5rem",
+ 96: "6rem",
+ 100: "6.25rem",
+ 104: "6.5rem",
+ 106: "6.625",
+ 112: "7rem",
+ 128: "8rem",
+ 136: "8.5rem",
+ 142: "8.875rem",
+ 152: "9.5rem",
+ 168: "10.5rem",
+ 176: "11rem",
+ 182: "11.375rem",
+ 185: "11.563rem",
+ 200: "12.5rem",
+ 352: "22rem",
+ 220: "13.75rem",
+ 250: "15.625rem",
+ 400: "25rem",
+ 432: "27rem",
+ 512: "32rem",
+ 640: "40rem",
+ "1/4": "25%",
+ "1/2": "50%",
+ "3/4": "75%",
+ full: "100%",
+ },
+ maxWidth: {
+ 1: "1px",
+ 2: "0.125rem",
+ 4: "0.25rem",
+ 6: "0.375rem",
+ 8: "0.5rem",
+ 12: "0.75rem",
+ 14: "0.875rem",
+ 16: "1rem",
+ 18: "1.125rem",
+ 20: "1.25rem",
+ 24: "1.5rem",
+ 28: "1.75rem",
+ 32: "2rem",
+ 34: "2.125rem",
+ 40: "2.5rem",
+ 42: "2.625rem",
+ 44: "2.75rem",
+ 48: "3rem",
+ 56: "3.5rem",
+ 60: "3.75rem",
+ 64: "4rem",
+ 72: "4.5rem",
+ 76: "4.75rem",
+ 80: "5rem",
+ 88: "5.5rem",
+ 96: "6rem",
+ 100: "6.25rem",
+ 104: "6.5rem",
+ 106: "6.625",
+ 112: "7rem",
+ 128: "8rem",
+ 136: "8.5rem",
+ 142: "8.875rem",
+ 152: "9.5rem",
+ 168: "10.5rem",
+ 176: "11rem",
+ 182: "11.375rem",
+ 185: "11.563rem",
+ 200: "12.5rem",
+ 330: "20.625rem",
+ 352: "22rem",
+ 220: "13.75rem",
+ 250: "15.625rem",
+ 400: "25rem",
+ 432: "27rem",
+ 512: "32rem",
+ 640: "40rem",
+ 768: "48rem",
+ "1/4": "25%",
+ "1/2": "50%",
+ "3/4": "75%",
+ full: "100%",
+ },
+ boxShadow: {
+ none: "none",
+ 1: "0px 1px 1px rgba(0, 0, 0, 0.1)",
+ 2: "0px 3px 3px rgba(0, 0, 0, 0.1)",
+ 3: "0px 6px 6px rgba(0, 0, 0, 0.08)",
+ 4: "0px 16px 16px rgba(0, 0, 0, 0.1)",
+ 5: "0px 32px 40px rgba(0, 0, 0, 0.1)",
+ spextlg: "0px 5px 20px 1px rgba(0, 2, 40, 0.1)",
+ searchbox: "0px 4px 18x 0.5x rgba(0, 2, 40, 0.1)",
+ up2: "0px -3px 3px rgba(0, 0, 0, 0.08)",
+ key: "0px 4px 16px rgba(0, 2, 40, 0.35)",
+ lg: "0px 5px 20px 1px #DBE0E9",
+ blur: "0px 0px 6px rgba(0,0,0,0.1)",
+ "minimal-up": "0px -1px 5px rgba(0, 0, 0, 0.1)",
+ "minimal-down": "0px 1px 5px rgba(0, 0, 0, 0.1)",
+ },
+ extend: {
+ fontSize: {
+ small: ["8px", "12px"],
+ overline: [
+ "10px",
+ {
+ lineHeight: "16px",
+ letterSpacing: "0.04em",
+ textTransform: "uppercase",
+ },
+ ],
+ captionsm: ["10px", "12px"],
+ caption2: ["10px", "16px"],
+ caption18: ["10px", "20px"],
+ caption15: ["12px", "14px"],
+ caption1: ["12px", "20px"],
+ caption3: ["11px", "16px"],
+ body: ["14px", "24px"],
+ subheader: ["16px", "24px"],
+ subheader2: ["18px", "20px"],
+ title: ["20px", "28px"],
+ heading2: ["24px", "36px"],
+ heading1: ["28px", "40px"],
+ display6: ["30px", "35px"],
+ display5: ["36px", "48px"],
+ display4: ["48px", "56px"],
+ display3: ["56px", "64px"],
+ display2: ["64px", "72px"],
+ display1: ["80px", "88px"],
+ },
+ spacing: {
+ 1: "1px",
+ 2: "0.125rem",
+ 3: "0.188rem",
+ 4: "0.25rem",
+ 6: "0.375rem",
+ 8: "0.5rem",
+ 10: "0.625rem",
+ 12: "0.75rem",
+ 14: "0.875rem",
+ 16: "1rem",
+ 18: "1.125rem",
+ 20: "1.25rem",
+ 22: "1.375rem",
+ 24: "1.5rem",
+ 25: "1.563rem",
+ 28: "1.75rem",
+ 30: "1.875rem",
+ 32: "2rem",
+ 34: "2.125rem",
+ 38: "2.375rem",
+ 40: "2.5rem",
+ 44: "2.75rem",
+ 42: "2.625rem",
+ 46: "2.875rem",
+ 48: "3rem",
+ 56: "3.5rem",
+ 60: "3.75rem",
+ 64: "4rem",
+ 72: "4.5rem",
+ 76: "4.75rem",
+ 80: "5rem",
+ 88: "5.5rem",
+ 96: "6rem",
+ 100: "6.25rem",
+ 104: "6.5rem",
+ 106: "6.625",
+ 112: "7rem",
+ 124: "7.75rem",
+ 128: "8rem",
+ 136: "8.5rem",
+ 142: "8.875rem",
+ 152: "9.5rem",
+ 168: "10.5rem",
+ 176: "11rem",
+ 180: "11.25rem",
+ 182: "11.375rem",
+ 185: "11.563rem",
+ 200: "12.5rem",
+ 224: "14rem",
+ 240: "15rem",
+ 256: "16rem",
+ 288: "18rem",
+ 294: "18.375rem",
+ 326: "20.375rem",
+ 330: "20.625rem",
+ 352: "22rem",
+ 372: "23.25rem",
+ 400: "25rem",
+ 432: "27rem",
+ 512: "32rem",
+ 580: "36.25rem",
+ 640: "40rem",
+ 700: "43.75rem",
+ fit: "fit-content",
+ },
+ borderRadius: {
+ 2: "2px",
+ 4: "4px",
+ 6: "6px",
+ 8: "8px",
+ 12: "12px",
+ 16: "16px",
+ 20: "20px",
+ 24: "24px",
+ },
+ borderWidth: {
+ DEFAULT: "1px",
+ 0: "0",
+ 2: "2px",
+ 3: "3px",
+ 4: "4px",
+ 6: "6px",
+ 7: "7px",
+ 8: "8px",
+ },
+ colors: {
+ textdark: "#0F1D40",
+ textmedium: "#525C76",
+ textlight: "#8C93A3",
+ textdisabled: "#B2B7C2",
+ outline: {
+ DEFAULT: "#EEEFF2",
+ dark: "#B2B7C2",
+ medium: "#CACDD5",
+ light: "#E2E4E8",
+ xlight: "#EEEFF2",
+ },
+ black: {
+ DEFAULT: "#000000",
+ 80: "rgba(0, 0, 0, 0.8)",
+ 64: "rgba(0, 0, 0, 0.64)",
+ 45: "rgba(0,0,0,0.45)",
+ 40: "rgba(0, 0, 0, 0.4)",
+ 32: "rgba(0, 0, 0, 0.32)",
+ 24: "rgba(0, 0, 0, 0.24)",
+ 16: "rgba(0, 0, 0, 0.16)",
+ 12: "rgba(0, 0, 0, 0.12)",
+ 10: "rgba(0,0,0,0.10)",
+ 8: "rgba(0, 0, 0, 0.08)",
+ 4: "rgba(0, 0, 0, 0.04)",
+ },
+ white: {
+ DEFAULT: "#ffffff",
+ 80: "rgba(255, 255, 255, 0.8)",
+ 64: "rgba(255, 255, 255, 0.64)",
+ 56: "rgba(255, 255, 255, 0.56)",
+ 40: "rgba(255, 255, 255, 0.4)",
+ 32: "rgba(255, 255, 255, 0.32)",
+ 24: "rgba(255, 255, 255, 0.24)",
+ 16: "rgba(255, 255, 255, 0.16)",
+ 12: "rgba(255, 255, 255, 0.12)",
+ 8: "rgba(255, 255, 255, 0.08)",
+ 4: "rgba(255, 255, 255, 0.04)",
+ },
+ primary: {
+ DEFAULT: "#E2462C",
+ 100: "#FFF6F4",
+ 200: "#FFE8E4",
+ 300: "#F8ACA0",
+ 400: "#F9907F",
+ 500: "#ED7663",
+ 600: "#EB5B44",
+ 700: "#E2462C",
+ 800: "#CC3016",
+ 900: "#B5240C",
+ },
+ secondary: {
+ DEFAULT: "#4D7797",
+ 100: "#E9EEF2",
+ 200: "#C9D8E2",
+ 300: "#B4C6D3",
+ 400: "#9CB6C9",
+ 500: "#8CA8BD",
+ 600: "#6D90AB",
+ 700: "#4D7797",
+ 800: "#36668A",
+ 900: "#20557D",
+ },
+ kilvish: {
+ // Kilvish
+ dark: "#000114",
+ DEFAULT: "#000228", // same as pure
+ 100: "#F9FAFB",
+ 200: "#F3F4F6",
+ 300: "#E5E7EB",
+ 400: "#D1D5DB",
+ 500: "#949BA8",
+ 600: "#666C7C",
+ 700: "#475160",
+ 800: "#343E4F",
+ 900: "#1D2736",
+ },
+ red: {
+ // Shaktiman
+ brand: "#D93121",
+ dark: "#A9250F",
+ DEFAULT: "#E2462C", // same as pure
+ 50: "#FDF2F2",
+ 100: "#FDF2F2",
+ 200: "#FBE5E5",
+ 300: "#F6C8C0",
+ 400: "#F3B5AB",
+ 500: "#F0A295",
+ 600: "#EE9080",
+ 700: "#EB7E6B",
+ 800: "#E86B56",
+ 900: "#E55841",
+ },
+ steelblue: {
+ // Nightwing
+ DEFAULT: "#20557D", // same as pure
+ 100: "#E9EEF2",
+ 200: "#D2DDE5",
+ 300: "#BCCCD8",
+ 400: "#A6BBCB",
+ 500: "#8FAABE",
+ 600: "#7999B1",
+ 700: "#6388A4",
+ 800: "#4D7797",
+ 900: "#36668A",
+ },
+ "dark-gray": {
+ DEFAULT: "#2C3857",
+ 100: "#747C90",
+ 200: "#656E85",
+ 300: "#5C657D",
+ 400: "#525C76",
+ 500: "#49536E",
+ 600: "#3A4662",
+ 700: "#2C3857",
+ 800: "#192648",
+ 900: "#0F1D40",
+ },
+ gray: {
+ DEFAULT: "#A4A9B6",
+ 100: "#FAFAFB",
+ 200: "#F5F6F7",
+ 300: "#EEEFF2",
+ 400: "#E2E4E8",
+ 450: "#9CA3AF",
+ 500: "#CACDD5",
+ 600: "#B2B7C2",
+ 700: "#A4A9B6",
+ 750: "#374151",
+ 800: "#959CAB",
+ 900: "#8C93A3",
+ 950: "#111827",
+ },
+ green: {
+ // Joker
+ DEFAULT: "#53B745",
+ 50: "#F9FFF8",
+ 100: "#DDF1DA",
+ 200: "#D9F3D6",
+ 600: "#429637",
+ 700: "#317727",
+ },
+ info: {
+ DEFAULT: "#0284FE",
+ 100: "#F8FBFF",
+ 300: "#DCEEFF",
+ 500: "#78BEFF",
+ 700: "#0284FE",
+ 900: "#01408F",
+ },
+ success: {
+ DEFAULT: "#0BB07B",
+ 100: "#EAFCF7",
+ 300: "#BDF0E0",
+ 500: "#3ED3A3",
+ 700: "#0BB07B",
+ 900: "#006242",
+ },
+ warning: {
+ DEFAULT: "#FFAD0D",
+ 100: "#FFFCF5",
+ 300: "#FFECC7",
+ 500: "#FFCA65",
+ 700: "#FFAD0D",
+ 900: "#F07300",
+ },
+ yellow: {
+ // Wolverine
+ DEFAULT: "#F8C450", // same as pure
+ 50: "#FEF9EE",
+ 100: "#FEF9EE",
+ 200: "#FEF3DC",
+ 300: "#FDEDCB",
+ 400: "#FCE7B9",
+ 500: "#FBE1A7",
+ 600: "#FBDC96",
+ 700: "#FAD685",
+ 800: "#F9D073",
+ 900: "#F9CA61",
+ },
+ danger: {
+ DEFAULT: "#F03D3D",
+ 100: "#FFF8F8",
+ 300: "#FFDFDF",
+ 500: "#FF6666",
+ 700: "#F03D3D",
+ 900: "#A50000",
+ },
+ random: {
+ 222222: "#222222",
+ 313131: "#313131",
+ "8e6200": "#8E6200",
+ },
+ superman: {
+ DEFAULT: "#52AADB",
+ 100: "#EEF7FB",
+ 200: "#DCEEF8",
+ },
+ ogray: {
+ 500: "#262626",
+ },
+ others: {
+ black181818: "#181818",
+ gray42: "#6b6b6b",
+ doctormanhattan: "#0075FF",
+ doctormanhattan100: "#F3F9FC",
+ superman: "#52AADB",
+ superman100: "#EEF7FB",
+ redfaded: "#BB412C",
+ summaryBlack: "#171717",
+ summaryHover: "#272727",
+ summaryBorderHover: "#525252",
+ ytBanner: "#151515",
+ suggLoader: "#3B3B3B",
+ nightwing: "#21557D",
+ },
+ },
+ },
+ },
+ variants: {
+ extend: {
+ cursor: ["disabled"],
+ opacity: ["group-hover"],
+ backgroundColor: ["group-hover"],
+ background: ["group-hover", "active"],
+ display: ["group-hover"],
+ border: ["group-hover", "active"],
+ margin: ["group-hover"],
+ padding: ["group-hover"],
+ height: ["group-hover"],
+ justifyBetween: ["group-hover"],
+ },
+ },
+ corePlugins: {
+ container: false,
+ },
+ plugins: [
+ function ({ addComponents }) {
+ addComponents({
+ ".container": {
+ maxWidth: "100%",
+ paddingLeft: "20px",
+ paddingRight: "20px",
+ marginLeft: "auto",
+ marginRight: "auto",
+
+ "@screen sm": {
+ maxWidth: "600px",
+ },
+ "@screen md": {
+ maxWidth: "700px",
+ },
+ "@screen lg": {
+ maxWidth: "1280px",
+ paddingLeft: "56px",
+ paddingRight: "56px",
+ },
+ "@screen xl": {
+ maxWidth: "1344px",
+ },
+ },
+ });
+ },
+ ],
+};
diff --git a/packages/player-react/tsconfig.app.json b/packages/player-react/tsconfig.app.json
new file mode 100644
index 0000000..d851c00
--- /dev/null
+++ b/packages/player-react/tsconfig.app.json
@@ -0,0 +1,27 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "module": "ESNext",
+ "lib": ["DOM", "ESNext"],
+ "jsx": "react-jsx",
+ "jsxImportSource": "react",
+ "declaration": true,
+ "outDir": "dist",
+ "moduleResolution": "bundler",
+ "allowJs": true,
+ "resolveJsonModule": true,
+ "esModuleInterop": true,
+ "allowSyntheticDefaultImports": true,
+ "forceConsistentCasingInFileNames": true,
+ "isolatedModules": true,
+ "strict": true,
+ "skipLibCheck": true,
+ "baseUrl": ".",
+ "rootDir": "src",
+ "paths": {
+ "@/*": ["src/*"]
+ }
+ },
+ "include": ["src", "src/**/*.ts", "src/**/*.tsx"],
+ "exclude": ["node_modules", "dist"]
+}
diff --git a/packages/player-react/tsconfig.app.tsbuildinfo b/packages/player-react/tsconfig.app.tsbuildinfo
new file mode 100644
index 0000000..56de9c7
--- /dev/null
+++ b/packages/player-react/tsconfig.app.tsbuildinfo
@@ -0,0 +1 @@
+{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.esnext.iterator.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./src/context.ts","./node_modules/video.js/dist/types/utils/dom.d.ts","./node_modules/video.js/dist/types/component.d.ts","./node_modules/video.js/dist/types/event-target.d.ts","./node_modules/video.js/dist/types/spatial-navigation.d.ts","./node_modules/video.js/dist/types/utils/time.d.ts","./node_modules/video.js/dist/types/media-error.d.ts","./node_modules/video.js/dist/types/tracks/track.d.ts","./node_modules/video.js/dist/types/tracks/track-list.d.ts","./node_modules/video.js/dist/types/tracks/text-track.d.ts","./node_modules/video.js/dist/types/tracks/text-track-list.d.ts","./node_modules/video.js/dist/types/tech/tech.d.ts","./node_modules/video.js/dist/types/tracks/html-track-element.d.ts","./node_modules/video.js/dist/types/modal-dialog.d.ts","./node_modules/video.js/dist/types/player.d.ts","./node_modules/video.js/dist/types/utils/hooks.d.ts","./node_modules/video.js/dist/types/tech/middleware.d.ts","./node_modules/video.js/dist/types/utils/browser.d.ts","./node_modules/video.js/dist/types/utils/obj.d.ts","./node_modules/video.js/dist/types/plugin.d.ts","./node_modules/video.js/dist/types/utils/log.d.ts","./node_modules/video.js/dist/types/utils/events.d.ts","./node_modules/@videojs/xhr/index.d.ts","./node_modules/video.js/dist/types/tracks/audio-track.d.ts","./node_modules/video.js/dist/types/tracks/video-track.d.ts","./node_modules/video.js/dist/types/utils/fn.d.ts","./node_modules/video.js/dist/types/utils/num.d.ts","./node_modules/video.js/dist/types/utils/str.d.ts","./node_modules/video.js/dist/types/utils/url.d.ts","./node_modules/video.js/dist/types/consts/errors.d.ts","./node_modules/video.js/dist/types/video.d.ts","./src/hooks/usevideojsplayer.ts","./src/components/atoms/time-code/index.tsx","./src/components/atoms/transparent-btn/index.tsx","./src/components/icons/pause.tsx","./src/components/icons/play.tsx","./src/components/buttons/big-center-button/index.tsx","./node_modules/@floating-ui/utils/dist/floating-ui.utils.d.ts","./node_modules/@floating-ui/core/dist/floating-ui.core.d.ts","./node_modules/@floating-ui/utils/dom/floating-ui.utils.dom.d.ts","./node_modules/@floating-ui/dom/dist/floating-ui.dom.d.ts","./node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.d.ts","./node_modules/@floating-ui/react/dist/floating-ui.react.d.ts","./src/components/atoms/with-popper/index.tsx","./src/components/buttons/caption-button/index.tsx","./src/components/icons/full-screen.tsx","./src/components/icons/full-screen-exit.tsx","./src/components/buttons/full-screen-button/index.tsx","./src/components/buttons/play-pause-button/index.tsx","./src/components/buttons/speed-control-button/index.tsx","./src/components/icons/volume.tsx","./src/components/icons/volume-mute.tsx","./src/components/buttons/volume-control-button/index.tsx","./node_modules/@types/lodash/common/common.d.ts","./node_modules/@types/lodash/common/array.d.ts","./node_modules/@types/lodash/common/collection.d.ts","./node_modules/@types/lodash/common/date.d.ts","./node_modules/@types/lodash/common/function.d.ts","./node_modules/@types/lodash/common/lang.d.ts","./node_modules/@types/lodash/common/math.d.ts","./node_modules/@types/lodash/common/number.d.ts","./node_modules/@types/lodash/common/object.d.ts","./node_modules/@types/lodash/common/seq.d.ts","./node_modules/@types/lodash/common/string.d.ts","./node_modules/@types/lodash/common/util.d.ts","./node_modules/@types/lodash/index.d.ts","./node_modules/@types/lodash.debounce/index.d.ts","./src/components/videos/progress-bar/index.tsx","./src/components/videos/videodb-player/index.tsx","./src/index.tsx","./node_modules/vite/types/hmrpayload.d.ts","./node_modules/vite/types/customevent.d.ts","./node_modules/vite/types/hot.d.ts","./node_modules/vite/types/importglob.d.ts","./node_modules/vite/types/importmeta.d.ts","./node_modules/vite/client.d.ts","./src/vite-env.d.ts","./src/components/videoplayer.tsx","./src/components/atoms/ellipse-loading/index.tsx","./src/components/atoms/loading/index.tsx","./src/components/icons/arrow-left.tsx","./src/components/icons/arrow-right.tsx","./src/components/icons/close.tsx","./src/components/icons/search.tsx","./node_modules/swiper/types/modules/a11y.d.ts","./node_modules/swiper/types/modules/autoplay.d.ts","./node_modules/swiper/types/modules/controller.d.ts","./node_modules/swiper/types/modules/effect-coverflow.d.ts","./node_modules/swiper/types/modules/effect-cube.d.ts","./node_modules/swiper/types/modules/effect-fade.d.ts","./node_modules/swiper/types/modules/effect-flip.d.ts","./node_modules/swiper/types/modules/effect-creative.d.ts","./node_modules/swiper/types/modules/effect-cards.d.ts","./node_modules/swiper/types/modules/hash-navigation.d.ts","./node_modules/swiper/types/modules/history.d.ts","./node_modules/swiper/types/modules/keyboard.d.ts","./node_modules/swiper/types/modules/navigation.d.ts","./node_modules/swiper/types/modules/pagination.d.ts","./node_modules/swiper/types/modules/parallax.d.ts","./node_modules/swiper/types/modules/scrollbar.d.ts","./node_modules/swiper/types/modules/thumbs.d.ts","./node_modules/swiper/types/modules/virtual.d.ts","./node_modules/swiper/types/modules/zoom.d.ts","./node_modules/swiper/types/modules/free-mode.d.ts","./node_modules/swiper/types/swiper-events.d.ts","./node_modules/swiper/types/modules/grid.d.ts","./node_modules/swiper/types/modules/manipulation.d.ts","./node_modules/swiper/types/modules/public-api.d.ts","./node_modules/swiper/types/index.d.ts","./node_modules/swiper/types/shared.d.ts","./node_modules/swiper/types/modules/mousewheel.d.ts","./node_modules/swiper/types/swiper-options.d.ts","./node_modules/swiper/types/swiper-class.d.ts","./node_modules/swiper/swiper.d.ts","./node_modules/swiper/types/modules/index.d.ts","./node_modules/swiper/swiper-react.d.ts","./src/components/search/search-result-slide/index.tsx","./src/components/search/search-results/index.tsx","./src/components/search/search-inside-media/index.tsx","./node_modules/@babel/types/lib/index.d.ts","./node_modules/@types/babel__generator/index.d.ts","./node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/@types/babel__template/index.d.ts","./node_modules/@types/babel__traverse/index.d.ts","./node_modules/@types/babel__core/index.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@types/react-dom/index.d.ts","../../../node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts"],"fileIdsList":[[201,215,257],[215,257],[119,215,257],[120,121,215,257],[80,122,215,257],[80,123,215,257],[201,202,203,204,205,215,257],[201,203,215,257],[147,215,257],[135,137,138,139,140,141,142,143,144,145,146,147,215,257],[135,136,138,139,140,141,142,143,144,145,146,147,215,257],[136,137,138,139,140,141,142,143,144,145,146,147,215,257],[135,136,137,139,140,141,142,143,144,145,146,147,215,257],[135,136,137,138,140,141,142,143,144,145,146,147,215,257],[135,136,137,138,139,141,142,143,144,145,146,147,215,257],[135,136,137,138,139,140,142,143,144,145,146,147,215,257],[135,136,137,138,139,140,141,143,144,145,146,147,215,257],[135,136,137,138,139,140,141,142,144,145,146,147,215,257],[135,136,137,138,139,140,141,142,143,145,146,147,215,257],[135,136,137,138,139,140,141,142,143,144,146,147,215,257],[135,136,137,138,139,140,141,142,143,144,145,147,215,257],[135,136,137,138,139,140,141,142,143,144,145,146,215,257],[80,215,257],[78,79,215,257],[80,190,215,257],[194,215,257],[186,189,191,193,194,215,257],[191,215,257],[191,194,215,257],[166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,187,188,192,215,257],[190,215,257],[166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,188,191,192,193,215,257],[166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,192,193,194,215,257],[166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,191,192,215,257],[83,96,215,257],[83,84,96,215,257],[84,86,87,88,93,94,95,215,257],[96,215,257],[84,85,96,215,257],[93,96,215,257],[84,87,88,92,215,257],[89,215,257],[85,93,215,257],[90,91,215,257],[89,93,215,257],[85,89,215,257],[85,215,257],[83,84,85,87,91,93,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,215,257],[156,215,257],[152,215,257],[153,215,257],[154,155,215,257],[80,81,157,215,257],[80,81,82,215,257],[80,81,124,215,257],[80,81,82,115,116,117,215,257],[80,81,82,115,125,215,257],[80,81,82,115,125,127,128,215,257],[80,81,82,115,116,117,125,215,257],[80,81,82,115,125,132,133,215,257],[80,81,215,257],[80,81,160,161,164,165,199,215,257],[80,81,117,157,215,257],[80,81,157,162,163,195,196,197,198,215,257],[80,81,82,96,112,148,215,257],[80,81,82,113,114,118,126,129,130,131,134,149,215,257],[80,81,96,112,215,257],[81,150,157,215,257],[157,215,257],[215,254,257],[215,256,257],[257],[215,257,262,292],[215,257,258,263,269,270,277,289,300],[215,257,258,259,269,277],[210,211,212,215,257],[215,257,260,301],[215,257,261,262,270,278],[215,257,262,289,297],[215,257,263,265,269,277],[215,256,257,264],[215,257,265,266],[215,257,269],[215,257,267,269],[215,256,257,269],[215,257,269,270,271,289,300],[215,257,269,270,271,284,289,292],[215,252,257,305],[215,252,257,265,269,272,277,289,300],[215,257,269,270,272,273,277,289,297,300],[215,257,272,274,289,297,300],[213,214,215,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306],[215,257,269,275],[215,257,276,300],[215,257,265,269,277,289],[215,257,278],[215,257,279],[215,256,257,280],[215,254,255,256,257,258,259,260,261,262,263,264,265,266,267,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306],[215,257,282],[215,257,283],[215,257,269,284,285],[215,257,284,286,301,303],[215,257,269,289,290,292],[215,257,291,292],[215,257,289,290],[215,257,292],[215,257,293],[215,254,257,289],[215,257,269,295,296],[215,257,295,296],[215,257,262,277,289,297],[215,257,298],[215,257,277,299],[215,257,272,283,300],[215,257,262,301],[215,257,289,302],[215,257,276,303],[215,257,304],[215,257,262,269,271,280,289,300,303,305],[215,257,289,306],[215,224,228,257,300],[215,224,257,289,300],[215,219,257],[215,221,224,257,297,300],[215,257,277,297],[215,257,307],[215,219,257,307],[215,221,224,257,277,300],[215,216,217,220,223,257,269,289,300],[215,224,231,257],[215,216,222,257],[215,224,245,246,257],[215,220,224,257,292,300,307],[215,245,257,307],[215,218,219,257,307],[215,224,257],[215,218,219,220,221,222,223,224,225,226,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,246,247,248,249,250,251,257],[215,224,239,257],[215,224,231,232,257],[215,222,224,232,233,257],[215,223,257],[215,216,219,224,257],[215,224,228,232,233,257],[215,228,257],[215,222,224,227,257,300],[215,216,221,224,231,257],[215,257,289],[215,219,224,245,257,305,307]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"e12a46ce14b817d4c9e6b2b478956452330bf00c9801b79de46f7a1815b5bd40","impliedFormat":1},{"version":"4fd3f3422b2d2a3dfd5cdd0f387b3a8ec45f006c6ea896a4cb41264c2100bb2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"bab26767638ab3557de12c900f0b91f710c7dc40ee9793d5a27d32c04f0bf646","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"61d6a2092f48af66dbfb220e31eea8b10bc02b6932d6e529005fd2d7b3281290","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"742d4b7b02ffc3ba3c4258a3d196457da2b3fec0125872fd0776c50302a11b9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"5f2c3a441535395e794d439bbd5e57e71c61995ff27f06e898a25b00d7e0926f","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"305ca8a914dd1a032c2b7602006b7613472ee5218e07b0b3455f3fd991c4b90b","signature":"3e48fb636c408135cddbe9dd45fc0946295ee4ca4f8c14cf0886f0a9b7db61c0"},{"version":"ee2d45ab5c31d5d8c7a7e6715ae20337be5ab97a17e47e1df3db478bfaaa811b","impliedFormat":1},{"version":"0a85ad7c51947c8ca37b8d99a61d7816709169da8f130ab311afadc0e4be8d4e","impliedFormat":1},{"version":"f762e8e3711b277f5c9333155f530b82658aae806ecf88891eb64d1246880b83","impliedFormat":1},{"version":"5307616797668e30c9ea70acc1ffd94b37e4ba55373947a1c25517cc797eb32d","impliedFormat":1},{"version":"f1a5b8890fbaec2b080945208810906faf8639ebceb133a4f4c9624bac1f7678","impliedFormat":1},{"version":"98baa9c0c7954fb0010d2b4156f5dd9ea46664a404c5b0b74bf6fa75310c4f11","impliedFormat":1},{"version":"a72e367f7d19d38c51816b91ea0807e6bd18abfc28f0205763414ba90c200288","impliedFormat":1},{"version":"14c571ae10bc3c603c2b64008e84bcbf1e539047734bd0097fe9dfc6e08414e8","impliedFormat":1},{"version":"d955bd62c58cac36d12719d0894bdc2bcf15625b3b1278d0ffb88330f300d259","impliedFormat":1},{"version":"088ed75c5398471bbd8ef3d50548d11d6ff923bcfe921b7093e013f294e9152b","impliedFormat":1},{"version":"38f0bfa6fd76457a797c2708b8438404a50ac7545b08a50d91ff642254e400af","impliedFormat":1},{"version":"97eb479d9358edd8847db1ce6194ae234d868bc4997e17ccdb7cfe8ce6b4d1c5","impliedFormat":1},{"version":"666cc0bca4c7f55acf06a0f2d10fbb4ba02191697199d309923688cf205fcd22","impliedFormat":1},{"version":"4a6e9d5c7649e0db08b6b2e96b54ed47d284ae7c26d9cf1cdfa565024a3c072c","impliedFormat":1},{"version":"a717a699bee5bd2bead8586710ac540a6c0e4b6aaed92556f893fd99e850ced2","impliedFormat":1},{"version":"0a07fb8e07c89ea86024213e57e3bf56c636f4d6fa919d206aeb526167f3e72b","impliedFormat":1},{"version":"ace8b866af798bcc3f9b2505e0194cd4fde5bc833dc263f78e1d1dc289ff6616","impliedFormat":1},{"version":"2afcc8f1df2d7bd86e1079a6b5f68eb9e8f7fe70b4744654af56654498a6bf31","impliedFormat":1},{"version":"da044c0cf13ff9ce970a8273755131d282d6ec72ff5b0a02d52b8d2debb368ad","impliedFormat":1},{"version":"1989deb5255a8919697060fbebc17d4641749405d35977dc82315d60f089e554","impliedFormat":1},{"version":"d29315f7315943b00b05987f8a680a7096356e4457d410a44f0784d9edb77cfa","impliedFormat":1},{"version":"320786b12262967aafb0fe0b20161b358eec366c579ef4b22923952261336797","impliedFormat":1},{"version":"c35691fffac8ddbb7209c9fa4cfa62ced80442894b83b66e5c57cba5219d7d81","impliedFormat":1},{"version":"c7faa5bd3a56519aaf87e0998bae0fb4893d57d8bca1e317ee087f701aa4da5b","impliedFormat":1},{"version":"0c0417f9102921bef8d68f0329b0c3290cfa7a7a4cd8281b26c0dffa7b513295","impliedFormat":1},{"version":"e962339bd3b777117e3d7974c286eb7ac081203b1cca5c4750bd7879391b22b3","impliedFormat":1},{"version":"d304a924b560fa72fa1f90bb506e205fe9307e59f2f4707d3270a11547c4c133","impliedFormat":1},{"version":"0eec5ca3bea3286f9c22107e848a3499fe79588c96ddc3d824fcfc98231970f6","impliedFormat":1},{"version":"d549b6b0a4c3e73af2f5f9f4cc67c20a5ca9f7cdabd95b8a5ecae24e5342f290","impliedFormat":1},{"version":"ee1005c57a72aa6738d9cde4d89ea0572c60f527a269014965969837db498bf5","impliedFormat":1},{"version":"8682abbfc4c377902237df0a9a858ed79aa968718c155aac89d65f4bb5b80db4","signature":"c30ab038876e8e7019367a114ce07e5806127c78b559c7d5e0b66d32d1fda047"},{"version":"f4810a1ca2f58d66f756b61f324f68d8a03a070e2956827c3ebf395c5c97634b","signature":"581477d6f1126d74692e892feb9f323535aa53e8f993fa28a317fdc0df9b275f"},{"version":"536ecb988f7874496f7f09b086288d1861d1ab490e7934559dc7247b1288475f","signature":"3ab368d865d82a7d11a5b2e3c5c7726f878cf20700bd9ebdc4bf31294cc90ecc"},{"version":"d87cb4d0a8334178d92727cc679e879b52d19d1b433cee2907db0042c53c73ef","signature":"5a288467b0a101018bfda35cc31526eced0b7048ca1029ee1264aead0ce63cd8"},{"version":"992b97aece47cc4f8adef013a78a359497c0af575e82f6214996c2c875219943","signature":"8dac1fb640ad3fefec4861b3e94eacb15bcc20a5f3f8c16ceab36a7ca516b9ea"},{"version":"2c6df2cb7750affca45c75adde9577d1da61c91371520b2aa8980a4e1e9a94b5","signature":"9f9a0d348772babf432b9ba1097ad6fc4c205eb6cdb007b4d5dcb5d67c55d5ee"},{"version":"2b4276dde46aa2faf0dd86119999c76b81e6488cd6b0d0fcf9fb985769cd11c0","impliedFormat":1},{"version":"56a37fc13e7a1756e3964204c146a056b48cbec22f74d8253b67901b271f9900","impliedFormat":1},{"version":"5ecea63968444d55f7c3cf677cbec9525db9229953b34f06be0386a24b0fffd2","impliedFormat":1},{"version":"b50ee4bde16b52ecb08e2407dca49a5649b38e046e353485335aa024f6efb8ef","impliedFormat":1},{"version":"0eb4089c3ae7e97d85c04dc70d78bac4b1e8ada6e9510f109fe8a86cdb42bb69","impliedFormat":1},{"version":"e9d1d96cc55be993848bcea8598afa6c53bdf774934e22fb6c1749a9762681e4","impliedFormat":1},{"version":"56df8f68ebb755338bbc8e912ca2e6799c3a5e67538f866ef928b134b8b20e2c","signature":"a37c28d21b06f10b22d9d78ceb59b1326f415c65b88dab80ab177926e6003c1d"},{"version":"9da3c24b3d330916e4493feb03fd55791cfc4bf1f5055089d2ec638b798d9fe0","signature":"45aa4c0dbc0c0aa8f925d30702bcbcba2c72365ce5286b0ea548138492c9e025"},{"version":"e44d91dd2ccde6634cee1cf2f0702ffbb002214a6882ac4b65525f142520d39e","signature":"ef6795971450fdcb2201b9a73f7ddfb7399045f7b9a328a5e581f98171abaffe"},{"version":"fbcf134a5bb84bf9392af604f341b77246eabfb9c75b647a8a958e13cde6c599","signature":"44137d466a26af1a6fb04e20063f415aad7672404047a495e18f821143c33eac"},{"version":"37aa8959d9a949d515056f8dfeb81976a5f2b9aaeb38f9461c23877bde230190","signature":"121645bfd9c0d76927a97e00716ba764f5ef5876a2505264f268838271c4727a"},{"version":"63a765b15ca1802df49f83690b428dbb5583e8ea363acd229e1a1ee772c1af07","signature":"24889de3a75195c47e2fb3f93bd51f05378f6ee1225fb6ef63ca046c27289f92"},{"version":"6eff02eecdb27c15401ff9d7fdc1cadaedc9927e2f118600969fdd039d6090ff","signature":"6725b7754f3d444bfd3b496ae0052f4227ac88700cf939db81c7222240e7cd52"},{"version":"38a424092aa580b91ac9e30a620ba4f29bd90240657d16cbe904f7b6a549860d","signature":"82b9c047ad6fa6e58738cbdb4d6e4bdeb5cd97963cfc07a9e6ae845a4a79b1e4"},{"version":"927539b5b317c8f90e667d18f45417cf8e4d6e9593578e56e042fa4465d32ba9","signature":"a7cb163a4aab949a6b884e6c40a554a51ad7490e532196cd1ebc1d2344937c8a"},{"version":"2037ef39c336b349321195a7d234630120ec03c9e64a111ae3299c2ea1168d64","signature":"fc7238a0e23e432830b1fc3872a2e63a99064cf4c1e33dc0b70376b1cc56ee83"},{"version":"7220461ab7f6d600b313ce621346c315c3a0ebc65b5c6f268488c5c55b68d319","impliedFormat":1},{"version":"f90d4c1ae3af9afb35920b984ba3e41bdd43f0dc7bae890b89fbd52b978f0cac","impliedFormat":1},{"version":"fcf79300e5257a23ed3bacaa6861d7c645139c6f7ece134d15e6669447e5e6db","impliedFormat":1},{"version":"187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","impliedFormat":1},{"version":"aa2c18a1b5a086bbcaae10a4efba409cc95ba7287d8cf8f2591b53704fea3dea","impliedFormat":1},{"version":"b88749bdb18fc1398370e33aa72bc4f88274118f4960e61ce26605f9b33c5ba2","impliedFormat":1},{"version":"0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","impliedFormat":1},{"version":"00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","impliedFormat":1},{"version":"a873c50d3e47c21aa09fbe1e2023d9a44efb07cc0cb8c72f418bf301b0771fd3","impliedFormat":1},{"version":"7c14ccd2eaa82619fffc1bfa877eb68a012e9fb723d07ee98db451fadb618906","impliedFormat":1},{"version":"49c36529ee09ea9ce19525af5bb84985ea8e782cb7ee8c493d9e36d027a3d019","impliedFormat":1},{"version":"df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","impliedFormat":1},{"version":"4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","impliedFormat":1},{"version":"7605dd065ecbd2d8ff5f80a0b3813fc163ed593f4f24f3b6f6a7e98ac0e2157f","impliedFormat":1},{"version":"cda19b3293c6192e59121ab43f0d07baeb3520309d9aa756dabf948371646aa1","signature":"0fe75ebf7e19ce8123d913315e257eca9d153860fde5580bbc361e1fd36995ca"},{"version":"2df3a39237d832c15ff8bd2e066348aad301f8c9012af0d3df3d4873973e0125","signature":"93dde6e9afe83c1176f48966c9ceace60043cbda7d190c010a04c5dabd961c68"},{"version":"6768934783c85a5ace12b59f3a088107b29fd9f85106024a2f2f4a6b79fca3a8","signature":"b93eb8b9eb61229c0a4c1a8cc7309fbdba103b27cde744dc02e93d711a3fb900"},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"19efad8495a7a6b064483fccd1d2b427403dd84e67819f86d1c6ee3d7abf749c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1eef826bc4a19de22155487984e345a34c9cd511dd1170edc7a447cb8231dd4a","affectsGlobalScope":true,"impliedFormat":99},"65996936fbb042915f7b74a200fcdde7e410f32a669b1ab9597cfaa4b0faddb5",{"version":"822362d19bc2318ea94c652784f0b4523abf9953c24075fc581f37a6a37026a8","signature":"347123cd3d225d8f99b29ed9f70c1d2fd37d2dd5dfddea29570db2aa06163a8a"},{"version":"4ae2c557f4b7bbb286dd208c06617550b5152ac661bd21aa33166a87080075f0","signature":"9cf488a3257fa7568d51b6322afdf0ae2ad06f8b252d3563b0d6aa43aef7aeba"},{"version":"4057b05cfbe94659c9be3febc89624221f34c8ed27c4afa88dbed0c1aa71d4b1","signature":"3fba005a8b87bf5de9db0d65a959acead65cc99bf95376fbf52f66598a199074"},{"version":"76aefdabcafdaa033f068c43b9d0928b9fa49995f39044c80cf0327fc7978374","signature":"1345a0bcc994804c2e7c3a5ef42d34a30961b30f27c9ad2b05caa38c092fe139"},{"version":"7c99c25135b6d7565d434f1c082f6c4015ff22345e9bf24d009e99e21af48b44","signature":"bcf9327632d6df5ad3858d111a7a063bd445bd0c6f0b5a6154731995287d40f5"},{"version":"3d94cc800f2a36219d7fbd6faff55a1f659b70a5fc2cab06d3f42737c28f9593","signature":"44810902d956b682b58d1793574525155eb8ffd9e299c04a94b3bf2bf5648897"},{"version":"a969fe75ff0743a225de81401b36966a0d3b15faf3de0c765891aef0cef5fbfc","signature":"35c36af81b74fe821c48226cd9849b2b262606098638bf467c04ff1b45014bda"},{"version":"ce22a5344d55865982a77d6388a952339bf12229487dc5520e3b4742f0c38e77","impliedFormat":99},{"version":"2c70a1945560b056df69579b882fc0bfd17b3883ecad1d42def8f1045750ad87","impliedFormat":99},{"version":"b7dbc555bb4b8bdedadbcafe44ffeb95bcddee0690df208aa12de90cb7d61ae0","impliedFormat":99},{"version":"2a36a3babb94e9cae40df81497d8562693ba0c5d517f8f84ff166efe5fc4ad73","impliedFormat":99},{"version":"d2a32b1c9e3cfbceb0107710704602ea3003d2b27cd337fd22009dc838e02413","impliedFormat":99},{"version":"24d1e5df3991bdbd57f9fb28ecd812d75111c0936ff1ebd5745780fbdf9476d5","impliedFormat":99},{"version":"f8950e45e7ecd995228300925f97361e9eda95051838da237f2943c0ff6249d6","impliedFormat":99},{"version":"111f32c5f5312e3d23ded8553803438ddb08a03d6ce4487c87988b58aa6928a3","impliedFormat":99},{"version":"395f4afd053339c013d0fdbea2f395fc9b941493c37ad3e36fa3edde92d9e06c","impliedFormat":99},{"version":"194d779446ee6695dfde84b1128a5f25651c368fb30441a26dc865b69d629b43","impliedFormat":99},{"version":"2b0fac9ec2bef8cb832a82b6c827e827099913779f94b5124ebac051ce63c75e","impliedFormat":99},{"version":"75fe380cfe6f7e4e9bfaf1e5296e40015cc8d1f24b741476a01d7ad2be03c912","impliedFormat":99},{"version":"ff0289a765e3941b98ddbbf52df87aaa69446a27ffea4efbcedd25b9db0b3257","impliedFormat":99},{"version":"8b2ff2738bbbcec301caae6caf15b90e3bc69189b9539acf5bde0bbb3261e057","impliedFormat":99},{"version":"af51cdc4aac8d3d3ef578d092edb86ff7a240a50ae4dd0b843667fb7a23363e6","impliedFormat":99},{"version":"91fe39810e6370b7858faee456b54efdadd94d17a8326b1a083c3cd83317fc41","impliedFormat":99},{"version":"ffc5a293c41d0a34041673337b47fae8d2efdf05da554d312d804ba8409fbd5e","impliedFormat":99},{"version":"41d05f925a2e26c4fb6abd3ea69946f723331e1c2454749c452cf6ba2c5b4383","impliedFormat":99},{"version":"de8f37e67941d4d946375cbcf81c1f160c47e27a0f320d403fe322fef0458e9e","impliedFormat":99},{"version":"21c9dd0dd9301bdd86c3b56889971803ace4c4b263b4de7361db0abe5e3bfcc2","impliedFormat":99},{"version":"fd0816b2efe3cb8c2bb07b62f373ec32a12d17a9bd26d861398600574d1a533c","impliedFormat":99},{"version":"0f33756fe6cfabac9a7554c9044b0a2e7eaace182048c36fe2dbb5f33818d0f1","impliedFormat":99},{"version":"c9d433d2bd63f22107d3d5f70d255a9240cde0d25c7df5096685126930d560f6","impliedFormat":99},{"version":"405d7ab019ef6081661c574712a23461e84e3c8c9e55dbb706bf6d624ada6683","impliedFormat":99},{"version":"09e9d3f5ccdb9b6074e4046860f9effc64d80247bbb4bd3e5a87dcb21b766983","impliedFormat":99},{"version":"50585e6aecee4e903109eb423731d632b0ede60d6619dfce8f8c85e748743684","impliedFormat":99},{"version":"8a51b23adf34c05ecb161be43eb02e773e439eed0d35a9524aadb63776b0fc88","impliedFormat":99},{"version":"29eb86554f1c112ffce8e7ca4baf009fb064798a45cc5e536b3a6ab995c3f6fd","impliedFormat":99},{"version":"0ef1b9dd2cb8776aa1920375cb70a9bcdcbfc07497c886518618f8f5965ea46c","impliedFormat":99},{"version":"556a2c12db55f76171e97cb568d3c811f163f511514abe0f48d128aa7c867a2e","impliedFormat":99},{"version":"6f0786ef52beecf487be30aebe2817a5659c1ddc5f378212b6e2261e2d2290a7","impliedFormat":99},{"version":"0cc8916e447085b2479a36c79c8842f93dd606b6b2f5d223cee3cbec3303e0dd","impliedFormat":99},{"version":"dbf4d043d3b9540892096ca2e39792b6b2d01e8c3ce83e2a583d978e9fe533e7","signature":"24f7327df28bbebeb727fde56a8560382cdb83284c56272b07515b0c6b319dde"},{"version":"29bce28b6cc26fb177bbf00b176ae8ef4c11fca1bf714edadcf64142baef015b","signature":"eb66d53911d6c961cd6da97e6d36c3cddcdf0f08b0d8369fbc99ce5e0af55d0e"},{"version":"ed6662c92df1eecca734c450fee8bec8d96cb8964736b4f6cd44801d1853740a","signature":"79689473e8c574c4ee41fc2c8fc796c18320a79480d1f678e2fd1a9c0130d8e6"},{"version":"d50ab0815120231ab511558a753c33b2806b42cabe006356fb0bb763fc30e865","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"32ddc6ad753ae79571bbf28cebff7a383bf7f562ac5ef5d25c94ef7f71609d49","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"81df92841a7a12d551fcbc7e4e83dbb7d54e0c73f33a82162d13e9ae89700079","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"e2b48abff5a8adc6bb1cd13a702b9ef05e6045a98e7cfa95a8779b53b6d0e69d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"a0acca63c9e39580f32a10945df231815f0fe554c074da96ba6564010ffbd2d8","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"8fa51737611c21ba3a5ac02c4e1535741d58bec67c9bdf94b1837a31c97a2263","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"d2bc987ae352271d0d615a420dcf98cc886aa16b87fb2b569358c1fe0ca0773d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4f0539c58717cbc8b73acb29f9e992ab5ff20adba5f9b57130691c7f9b186a4d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"f9677e434b7a3b14f0a9367f9dfa1227dfe3ee661792d0085523c3191ae6a1a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"9057f224b79846e3a95baf6dad2c8103278de2b0c5eebda23fc8188171ad2398","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0476e6b51a47a8eaf5ee6ecab0d686f066f3081de9a572f1dde3b2a8a7fb055","impliedFormat":1},{"version":"1e289f30a48126935a5d408a91129a13a59c9b0f8c007a816f9f16ef821e144e","impliedFormat":1},{"version":"f96a023e442f02cf551b4cfe435805ccb0a7e13c81619d4da61ec835d03fe512","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"5b2e73adcb25865d31c21accdc8f82de1eaded23c6f73230e474df156942380e","affectsGlobalScope":true,"impliedFormat":1},{"version":"23459c1915878a7c1e86e8bdb9c187cddd3aea105b8b1dfce512f093c969bc7e","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"1dc73f8854e5c4506131c4d95b3a6c24d0c80336d3758e95110f4c7b5cb16397","affectsGlobalScope":true,"impliedFormat":1},{"version":"64ede330464b9fd5d35327c32dd2770e7474127ed09769655ebce70992af5f44","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"bcd0418abb8a5c9fe7db36a96ca75fc78455b0efab270ee89b8e49916eac5174","impliedFormat":1},{"version":"c878f74b6d10b267f6075c51ac1d8becd15b4aa6a58f79c0cfe3b24908357f60","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"fbf68fc8057932b1c30107ebc37420f8d8dc4bef1253c4c2f9e141886c0df5ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"7d8b16d7f33d5081beac7a657a6d13f11a72cf094cc5e37cda1b9d8c89371951","affectsGlobalScope":true,"impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"e679ff5aba9041b932fd3789f4a1c69ddaf015ee54c5879b5b1f4727bcbe00dd","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"b02784111b3fc9c38590cd4339ff8718f9329a6f4d3fd66e9744a1dcd1d7e191","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"63b05afa6121657f25e99e1519596b0826cda026f09372c9100dfe21417f4bd6","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1}],"root":[82,[113,118],[125,134],[149,151],[158,165],[198,200]],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":4,"module":99,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"strict":true,"target":99},"referencedMap":[[203,1],[201,2],[120,3],[122,4],[123,5],[124,6],[119,2],[121,2],[206,7],[202,1],[204,8],[205,1],[207,2],[208,2],[148,9],[136,10],[137,11],[135,12],[138,13],[139,14],[140,15],[141,16],[142,17],[143,18],[144,19],[145,20],[146,21],[147,22],[209,23],[78,2],[80,24],[81,23],[104,2],[79,2],[197,25],[195,26],[190,27],[166,2],[167,26],[168,26],[174,2],[169,2],[173,2],[170,2],[171,2],[172,2],[185,2],[187,2],[175,26],[176,2],[196,28],[177,26],[188,2],[192,29],[178,29],[179,29],[180,2],[189,30],[181,29],[182,26],[183,2],[184,26],[191,31],[194,32],[186,33],[193,34],[76,2],[77,2],[13,2],[15,2],[14,2],[2,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[3,2],[24,2],[25,2],[4,2],[26,2],[30,2],[27,2],[28,2],[29,2],[31,2],[32,2],[33,2],[5,2],[34,2],[35,2],[36,2],[37,2],[6,2],[41,2],[38,2],[39,2],[40,2],[42,2],[7,2],[43,2],[48,2],[49,2],[44,2],[45,2],[46,2],[47,2],[8,2],[53,2],[50,2],[51,2],[52,2],[54,2],[9,2],[55,2],[56,2],[57,2],[59,2],[58,2],[60,2],[61,2],[10,2],[62,2],[63,2],[64,2],[11,2],[65,2],[66,2],[67,2],[68,2],[69,2],[1,2],[70,2],[71,2],[12,2],[74,2],[73,2],[72,2],[75,2],[84,35],[111,2],[85,2],[88,2],[95,36],[96,37],[101,38],[86,39],[98,40],[93,41],[105,42],[94,43],[92,44],[91,45],[90,46],[89,47],[106,42],[99,2],[83,2],[103,2],[107,2],[97,2],[102,2],[108,2],[100,2],[109,2],[87,2],[110,2],[112,48],[157,49],[153,50],[152,2],[154,51],[155,2],[156,52],[160,53],[161,53],[114,54],[115,53],[125,55],[118,56],[126,57],[129,58],[130,59],[131,57],[134,60],[162,61],[163,61],[164,61],[128,61],[127,61],[116,61],[117,61],[165,61],[133,61],[132,61],[200,62],[198,63],[199,64],[159,61],[149,65],[150,66],[82,61],[113,67],[151,68],[158,69],[254,70],[255,70],[256,71],[215,72],[257,73],[258,74],[259,75],[210,2],[213,76],[211,2],[212,2],[260,77],[261,78],[262,79],[263,80],[264,81],[265,82],[266,82],[268,83],[267,84],[269,85],[270,86],[271,87],[253,88],[214,2],[272,89],[273,90],[274,91],[307,92],[275,93],[276,94],[277,95],[278,96],[279,97],[280,98],[281,99],[282,100],[283,101],[284,102],[285,102],[286,103],[287,2],[288,2],[289,104],[291,105],[290,106],[292,107],[293,108],[294,109],[295,110],[296,111],[297,112],[298,113],[299,114],[300,115],[301,116],[302,117],[303,118],[304,119],[305,120],[306,121],[231,122],[241,123],[230,122],[251,124],[222,125],[221,126],[250,127],[244,128],[249,129],[224,130],[238,131],[223,132],[247,133],[219,134],[218,127],[248,135],[220,136],[225,137],[226,2],[229,137],[216,2],[252,138],[242,139],[233,140],[234,141],[236,142],[232,143],[235,144],[245,127],[227,145],[228,146],[237,147],[217,148],[240,139],[239,137],[243,2],[246,149]],"latestChangedDtsFile":"./dist/index.d.ts","version":"5.7.3"}
\ No newline at end of file
diff --git a/packages/player-react/tsconfig.tsbuildinfo b/packages/player-react/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..7947126
--- /dev/null
+++ b/packages/player-react/tsconfig.tsbuildinfo
@@ -0,0 +1 @@
+{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.esnext.iterator.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@eslint/core/dist/esm/types.d.ts","./node_modules/eslint/lib/types/use-at-your-own-risk.d.ts","./node_modules/eslint/lib/types/index.d.ts","./node_modules/@eslint/js/types/index.d.ts","./node_modules/eslint-plugin-react-hooks/cjs/eslint-plugin-react-hooks.d.ts","./node_modules/eslint-plugin-react-hooks/index.d.ts","./eslint.config.js","./postcss.config.js","./node_modules/source-map-js/source-map.d.ts","./node_modules/postcss/lib/previous-map.d.ts","./node_modules/postcss/lib/input.d.ts","./node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/postcss/lib/declaration.d.ts","./node_modules/postcss/lib/root.d.ts","./node_modules/postcss/lib/warning.d.ts","./node_modules/postcss/lib/lazy-result.d.ts","./node_modules/postcss/lib/no-work-result.d.ts","./node_modules/postcss/lib/processor.d.ts","./node_modules/postcss/lib/result.d.ts","./node_modules/postcss/lib/document.d.ts","./node_modules/postcss/lib/rule.d.ts","./node_modules/postcss/lib/node.d.ts","./node_modules/postcss/lib/comment.d.ts","./node_modules/postcss/lib/container.d.ts","./node_modules/postcss/lib/at-rule.d.ts","./node_modules/postcss/lib/list.d.ts","./node_modules/postcss/lib/postcss.d.ts","./node_modules/tailwindcss/types/generated/corepluginlist.d.ts","./node_modules/tailwindcss/types/generated/colors.d.ts","./node_modules/tailwindcss/types/config.d.ts","./node_modules/tailwindcss/types/index.d.ts","./tailwind.config.js","./node_modules/@vitest/pretty-format/dist/index.d.ts","./node_modules/@vitest/utils/dist/types.d.ts","./node_modules/@vitest/utils/dist/helpers.d.ts","./node_modules/tinyrainbow/dist/index-8b61d5bc.d.ts","./node_modules/tinyrainbow/dist/node.d.ts","./node_modules/@vitest/utils/dist/index.d.ts","./node_modules/@vitest/runner/dist/tasks.d-hsdzc98-.d.ts","./node_modules/@vitest/utils/dist/types.d-bcelap-c.d.ts","./node_modules/@vitest/utils/dist/diff.d.ts","./node_modules/@vitest/utils/diff.d.ts","./node_modules/@vitest/runner/dist/types.d.ts","./node_modules/@vitest/utils/dist/error.d.ts","./node_modules/@vitest/utils/error.d.ts","./node_modules/@vitest/runner/dist/index.d.ts","./node_modules/vitest/optional-types.d.ts","./node_modules/vitest/dist/chunks/environment.d.dmw5ulng.d.ts","../../../node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","./node_modules/rollup/dist/rollup.d.ts","./node_modules/vite/types/hmrpayload.d.ts","./node_modules/vite/types/customevent.d.ts","./node_modules/vite/types/hot.d.ts","./node_modules/vite/dist/node/modulerunnertransport.d-dj_me5sf.d.ts","./node_modules/vite/dist/node/module-runner.d.ts","./node_modules/esbuild/lib/main.d.ts","./node_modules/lightningcss/node/ast.d.ts","./node_modules/lightningcss/node/targets.d.ts","./node_modules/lightningcss/node/index.d.ts","./node_modules/vite/types/internal/lightningcssoptions.d.ts","./node_modules/vite/types/internal/csspreprocessoroptions.d.ts","./node_modules/vite/types/importglob.d.ts","./node_modules/vite/types/metadata.d.ts","./node_modules/vite/dist/node/index.d.ts","./node_modules/@vitest/mocker/dist/registry.d-d765pazg.d.ts","./node_modules/@vitest/mocker/dist/types.d-d_arzrdy.d.ts","./node_modules/@vitest/mocker/dist/index.d.ts","./node_modules/@vitest/utils/dist/source-map.d.ts","./node_modules/vite-node/dist/trace-mapping.d-dlvdeqop.d.ts","./node_modules/vite-node/dist/index.d-cwzbpocv.d.ts","./node_modules/vite-node/dist/index.d.ts","./node_modules/@vitest/snapshot/dist/environment.d-dhdq1csl.d.ts","./node_modules/@vitest/snapshot/dist/rawsnapshot.d-lfsmjfud.d.ts","./node_modules/@vitest/snapshot/dist/index.d.ts","./node_modules/@vitest/snapshot/dist/environment.d.ts","./node_modules/@vitest/snapshot/environment.d.ts","./node_modules/vitest/dist/chunks/config.d.uqe-kr0o.d.ts","./node_modules/vitest/dist/chunks/worker.d.chgsog0s.d.ts","./node_modules/@vitest/runner/dist/utils.d.ts","./node_modules/@vitest/runner/utils.d.ts","./node_modules/tinybench/dist/index.d.cts","./node_modules/vitest/dist/chunks/benchmark.d.bwvbvtda.d.ts","./node_modules/vite-node/dist/client.d.ts","./node_modules/vitest/dist/chunks/coverage.d.s9rmnxie.d.ts","./node_modules/@vitest/snapshot/dist/manager.d.ts","./node_modules/@vitest/snapshot/manager.d.ts","./node_modules/vitest/dist/chunks/reporters.d.79o4mouw.d.ts","./node_modules/vitest/dist/chunks/worker.d.c-kn07ls.d.ts","./node_modules/@vitest/expect/dist/chai.d.cts","./node_modules/@vitest/spy/dist/index.d.ts","./node_modules/@vitest/expect/dist/index.d.ts","./node_modules/@vitest/expect/index.d.ts","./node_modules/vitest/dist/chunks/global.d.cxraxnwc.d.ts","./node_modules/vitest/dist/chunks/vite.d.bvr6nvdj.d.ts","./node_modules/vitest/dist/chunks/mocker.d.be_2ls6u.d.ts","./node_modules/vitest/dist/chunks/suite.d.fvehnv49.d.ts","./node_modules/expect-type/dist/utils.d.ts","./node_modules/expect-type/dist/overloads.d.ts","./node_modules/expect-type/dist/branding.d.ts","./node_modules/expect-type/dist/messages.d.ts","./node_modules/expect-type/dist/index.d.ts","./node_modules/vitest/dist/index.d.ts","./node_modules/@babel/types/lib/index.d.ts","./node_modules/@types/babel__generator/index.d.ts","./node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/@types/babel__template/index.d.ts","./node_modules/@types/babel__traverse/index.d.ts","./node_modules/@types/babel__core/index.d.ts","./node_modules/@vitejs/plugin-react/dist/index.d.mts","./vite.config.ts","./node_modules/@types/lodash/common/common.d.ts","./node_modules/@types/lodash/common/array.d.ts","./node_modules/@types/lodash/common/collection.d.ts","./node_modules/@types/lodash/common/date.d.ts","./node_modules/@types/lodash/common/function.d.ts","./node_modules/@types/lodash/common/lang.d.ts","./node_modules/@types/lodash/common/math.d.ts","./node_modules/@types/lodash/common/number.d.ts","./node_modules/@types/lodash/common/object.d.ts","./node_modules/@types/lodash/common/seq.d.ts","./node_modules/@types/lodash/common/string.d.ts","./node_modules/@types/lodash/common/util.d.ts","./node_modules/@types/lodash/index.d.ts","./node_modules/@types/lodash.debounce/index.d.ts","./node_modules/@types/react-dom/index.d.ts"],"fileIdsList":[[81,87,89,137,179],[137,179,283],[137,179],[83,137,179],[86,137,179],[137,179,283,284,285,286,287],[137,179,283,285],[137,179,303],[137,179,291,293,294,295,296,297,298,299,300,301,302,303],[137,179,291,292,294,295,296,297,298,299,300,301,302,303],[137,179,292,293,294,295,296,297,298,299,300,301,302,303],[137,179,291,292,293,295,296,297,298,299,300,301,302,303],[137,179,291,292,293,294,296,297,298,299,300,301,302,303],[137,179,291,292,293,294,295,297,298,299,300,301,302,303],[137,179,291,292,293,294,295,296,298,299,300,301,302,303],[137,179,291,292,293,294,295,296,297,299,300,301,302,303],[137,179,291,292,293,294,295,296,297,298,300,301,302,303],[137,179,291,292,293,294,295,296,297,298,299,301,302,303],[137,179,291,292,293,294,295,296,297,298,299,300,302,303],[137,179,291,292,293,294,295,296,297,298,299,300,301,303],[137,179,291,292,293,294,295,296,297,298,299,300,301,302],[80,137,179],[78,79,137,179],[137,179,244,274,288],[120,121,125,137,179,270],[137,179,271],[137,179,245,246],[121,122,125,126,128,137,179],[121,137,179],[121,122,125,137,179],[121,122,137,179],[137,179,259],[137,179,252],[116,137,179,252,253],[116,137,179,252],[137,179,255],[137,179,265],[124,137,179],[116,123,137,179],[117,137,179],[116,117,118,120,137,179],[116,137,179],[127,137,179],[82,86,137,179,230],[88,137,179],[82,83,84,85,137,179,230],[137,179,277,278],[137,179,277,278,279,280],[137,179,277,279],[137,179,277],[137,179,237,238],[107,137,179],[105,107,137,179],[96,104,105,106,108,137,179],[94,137,179],[97,102,107,110,137,179],[93,110,137,179],[97,98,101,102,103,110,137,179],[97,98,99,101,102,110,137,179],[94,95,96,97,98,102,103,104,106,107,108,110,137,179],[92,94,95,96,97,98,99,101,102,103,104,105,106,107,108,109,137,179],[92,110,137,179],[97,99,100,102,103,110,137,179],[101,110,137,179],[102,103,107,110,137,179],[95,105,137,179],[82,137,179,230],[111,112,137,179],[110,113,137,179],[119,137,179],[137,179,249,250],[137,179,249],[110,137,179,191,192,194,195,196,199,211,219,222,228,229,230,231,232,234,235,236,240,241,242,243,244],[137,179,231,232,233,234],[137,179,231],[137,179,232],[137,179,239],[137,179,230,244],[129,137,179,260,261,273],[116,125,129,137,179,254,256,273],[137,179,263],[130,137,179],[116,129,131,137,179,254,262,272,273],[137,179,247],[116,121,125,129,131,137,179,182,192,211,244,247,248,251,254,257,258,262,264,266,269,273,274],[129,137,179,260,261,262,273],[137,179,244,267,274],[137,179,227,258],[129,131,137,179,251,254,257,273],[116,121,125,129,130,131,137,179,182,192,211,227,244,247,248,251,254,256,257,258,260,261,262,263,264,266,267,268,269,270,272,273,274,275,276,281],[81,137,179],[81,114,137,179],[81,137,179,222,244,274,282,289],[137,176,179],[137,178,179],[179],[137,179,184,214],[137,179,180,185,191,192,199,211,222],[137,179,180,181,191,199],[132,133,134,137,179],[137,179,182,223],[137,179,183,184,192,200],[137,179,184,211,219],[137,179,185,187,191,199],[137,178,179,186],[137,179,187,188],[137,179,191],[137,179,189,191],[137,178,179,191],[137,179,191,192,193,211,222],[137,179,191,192,193,206,211,214],[137,174,179,227],[137,174,179,187,191,194,199,211,222],[137,179,191,192,194,195,199,211,219,222],[137,179,194,196,211,219,222],[135,136,137,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228],[137,179,191,197],[137,179,198,222],[137,179,187,191,199,211],[137,179,200],[137,179,201],[137,178,179,202],[137,176,177,178,179,180,181,182,183,184,185,186,187,188,189,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228],[137,179,204],[137,179,205],[137,179,191,206,207],[137,179,206,208,223,225],[137,179,191,211,212,214],[137,179,213,214],[137,179,211,212],[137,179,214],[137,179,215],[137,176,179,211],[137,179,191,217,218],[137,179,217,218],[137,179,184,199,211,219],[137,179,220],[137,179,199,221],[137,179,194,205,222],[137,179,184,223],[137,179,211,224],[137,179,198,225],[137,179,226],[137,179,184,191,193,202,211,222,225,227],[137,179,211,228],[137,146,150,179,222],[137,146,179,211,222],[137,141,179],[137,143,146,179,219,222],[137,179,199,219],[137,179,229],[137,141,179,229],[137,143,146,179,199,222],[137,138,139,142,145,179,191,211,222],[137,146,153,179],[137,138,144,179],[137,146,167,168,179],[137,142,146,179,214,222,229],[137,167,179,229],[137,140,141,179,229],[137,146,179],[137,140,141,142,143,144,145,146,147,148,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,168,169,170,171,172,173,179],[137,146,161,179],[137,146,153,154,179],[137,144,146,154,155,179],[137,145,179],[137,138,141,146,179],[137,146,150,154,155,179],[137,150,179],[137,144,146,149,179,222],[137,138,143,146,153,179],[137,179,211],[137,141,146,167,179,227,229]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"e12a46ce14b817d4c9e6b2b478956452330bf00c9801b79de46f7a1815b5bd40","impliedFormat":1},{"version":"4fd3f3422b2d2a3dfd5cdd0f387b3a8ec45f006c6ea896a4cb41264c2100bb2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"bab26767638ab3557de12c900f0b91f710c7dc40ee9793d5a27d32c04f0bf646","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"61d6a2092f48af66dbfb220e31eea8b10bc02b6932d6e529005fd2d7b3281290","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"742d4b7b02ffc3ba3c4258a3d196457da2b3fec0125872fd0776c50302a11b9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"5f2c3a441535395e794d439bbd5e57e71c61995ff27f06e898a25b00d7e0926f","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"e2b48abff5a8adc6bb1cd13a702b9ef05e6045a98e7cfa95a8779b53b6d0e69d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"1bdaa3481f2a66ed1f54354f2fb3cf791006679fcec9a5688dc90a017bf5b24a","impliedFormat":99},{"version":"8a190298d0ff502ad1c7294ba6b0abb3a290fc905b3a00603016a97c363a4c7a","impliedFormat":1},{"version":"31ee714209f3b2dd27fd40570c324cd0d1cd6afb688cca50d90dccd111449dc5","impliedFormat":1},{"version":"0cbdc76a71578cb1a06a59fbc0b42efe0a89aecbcf9924b55bccd969de595e8a","impliedFormat":1},{"version":"bab47134cac9d2cd4c9b9c0157adc9da6c86a376d86f2aad67d4243cd7522927","impliedFormat":1},{"version":"e9fdead46d7e9b485e9a2233605cd778f7dd5258ce1e810feddccc794f1f1437","impliedFormat":1},{"version":"dc00c7db700d03834d04a172ea709593ae5ef1bc750eb55dfc521a60d9e1baa0","signature":"46a0b34e1264c4d25ca6646ff0e6cfaa7275ea1ae5a6bc23d4dfd84edf2f2b2e"},{"version":"cbf726bea0e8d081c4e93e96d2a54d556056925b3b71acd809f15e3c60b9fa92","signature":"4efef16d7af47bc1c0151a9e0d21f112cf8e642abd2d7a4d313264c5fd75e2b7"},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","impliedFormat":1},{"version":"33f3718dababfc26dfd9832c150149ea4e934f255130f8c118a59ae69e5ed441","impliedFormat":1},{"version":"e61df3640a38d535fd4bc9f4a53aef17c296b58dc4b6394fd576b808dd2fe5e6","impliedFormat":1},{"version":"459920181700cec8cbdf2a5faca127f3f17fd8dd9d9e577ed3f5f3af5d12a2e4","impliedFormat":1},{"version":"4719c209b9c00b579553859407a7e5dcfaa1c472994bd62aa5dd3cc0757eb077","impliedFormat":1},{"version":"7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","impliedFormat":1},{"version":"70790a7f0040993ca66ab8a07a059a0f8256e7bb57d968ae945f696cbff4ac7a","impliedFormat":1},{"version":"d1b9a81e99a0050ca7f2d98d7eedc6cda768f0eb9fa90b602e7107433e64c04c","impliedFormat":1},{"version":"a022503e75d6953d0e82c2c564508a5c7f8556fad5d7f971372d2d40479e4034","impliedFormat":1},{"version":"b215c4f0096f108020f666ffcc1f072c81e9f2f95464e894a5d5f34c5ea2a8b1","impliedFormat":1},{"version":"644491cde678bd462bb922c1d0cfab8f17d626b195ccb7f008612dc31f445d2d","impliedFormat":1},{"version":"dfe54dab1fa4961a6bcfba68c4ca955f8b5bbeb5f2ab3c915aa7adaa2eabc03a","impliedFormat":1},{"version":"1bb61aa2f08ab4506d41dbe16c5f3f5010f014bbf46fa3d715c0cbe3b00f4e1c","impliedFormat":1},{"version":"47865c5e695a382a916b1eedda1b6523145426e48a2eae4647e96b3b5e52024f","impliedFormat":1},{"version":"e42820cd611b15910c204cd133f692dcd602532b39317d4f2a19389b27e6f03d","impliedFormat":1},{"version":"331b8f71bfae1df25d564f5ea9ee65a0d847c4a94baa45925b6f38c55c7039bf","impliedFormat":1},{"version":"2a771d907aebf9391ac1f50e4ad37952943515eeea0dcc7e78aa08f508294668","impliedFormat":1},{"version":"0146fd6262c3fd3da51cb0254bb6b9a4e42931eb2f56329edd4c199cb9aaf804","impliedFormat":1},{"version":"b558c9a18ea4e6e4157124465c3ef1063e64640da139e67be5edb22f534f2f08","impliedFormat":1},{"version":"01374379f82be05d25c08d2f30779fa4a4c41895a18b93b33f14aeef51768692","impliedFormat":1},{"version":"b0dee183d4e65cf938242efaf3d833c6b645afb35039d058496965014f158141","impliedFormat":1},{"version":"c0bbbf84d3fbd85dd60d040c81e8964cc00e38124a52e9c5dcdedf45fea3f213","impliedFormat":1},{"version":"df5c26ddf95ed3d35802ccbc0a8541715f8e56c1b381cb91e84b1c9ebcd21eb0","signature":"8c4f8f23ebfcd5b513cb25153bd8a5ecbcec766b2bfbe91303af81b01188b2b8"},{"version":"5c54a34e3d91727f7ae840bfe4d5d1c9a2f93c54cb7b6063d06ee4a6c3322656","impliedFormat":99},{"version":"07c0547e91d0c35c3d1bff1d2b7ffac3334b315e9eb5744a8440940e819ab13a","impliedFormat":99},{"version":"a6f223e9ef29edb1dc1ffa1a8507b9247589077081be99883ec5ac84d74e61d6","impliedFormat":99},{"version":"f9b028d3c3891dd817e24d53102132b8f696269309605e6ed4f0db2c113bbd82","impliedFormat":99},{"version":"fb7c8d90e52e2884509166f96f3d591020c7b7977ab473b746954b0c8d100960","impliedFormat":99},{"version":"373e16d44e57937558478c586396210e4eeac6c895787863381a6588185528e4","impliedFormat":99},{"version":"7c45fbd736e81fd9899cf4d75b242326ccda37eafdd9555e5b64a0ed59e8f6e9","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"daf54402364627db51d8ccdcf98620ca7bd88dbd0036053bff51b87714a299b4","impliedFormat":99},{"version":"05c7aef6a4e496b93c2e682cced8903c0dfe6340d04f3fe616176e2782193435","impliedFormat":99},{"version":"9c2fe4e4ddf257e9b40d4d9fca28f86a8653a98492239a5ba27790019570cb71","impliedFormat":99},{"version":"f8433f2a07ccab79429b2fd66d12731a13f18061d4e7f8dc8559796086b22bc4","impliedFormat":99},{"version":"500a67e158e4025f27570ab6a99831680852bb45a44d4c3647ab7567feb1fb4c","impliedFormat":99},{"version":"e64b03ee2d4d53929ea13a1e2b52aaba0685c86185b0f6f3346fc548b75a2245","impliedFormat":99},{"version":"8124828a11be7db984fcdab052fd4ff756b18edcfa8d71118b55388176210923","impliedFormat":99},{"version":"d06f9f2ba52c62a1d6cc63f4a015bc7ccd155f3bac2c07fbb979aec6013d966f","impliedFormat":99},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"8fa51737611c21ba3a5ac02c4e1535741d58bec67c9bdf94b1837a31c97a2263","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"d2bc987ae352271d0d615a420dcf98cc886aa16b87fb2b569358c1fe0ca0773d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4f0539c58717cbc8b73acb29f9e992ab5ff20adba5f9b57130691c7f9b186a4d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"f9677e434b7a3b14f0a9367f9dfa1227dfe3ee661792d0085523c3191ae6a1a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"9057f224b79846e3a95baf6dad2c8103278de2b0c5eebda23fc8188171ad2398","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0476e6b51a47a8eaf5ee6ecab0d686f066f3081de9a572f1dde3b2a8a7fb055","impliedFormat":1},{"version":"1e289f30a48126935a5d408a91129a13a59c9b0f8c007a816f9f16ef821e144e","impliedFormat":1},{"version":"f96a023e442f02cf551b4cfe435805ccb0a7e13c81619d4da61ec835d03fe512","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"5b2e73adcb25865d31c21accdc8f82de1eaded23c6f73230e474df156942380e","affectsGlobalScope":true,"impliedFormat":1},{"version":"23459c1915878a7c1e86e8bdb9c187cddd3aea105b8b1dfce512f093c969bc7e","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"1dc73f8854e5c4506131c4d95b3a6c24d0c80336d3758e95110f4c7b5cb16397","affectsGlobalScope":true,"impliedFormat":1},{"version":"64ede330464b9fd5d35327c32dd2770e7474127ed09769655ebce70992af5f44","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"bcd0418abb8a5c9fe7db36a96ca75fc78455b0efab270ee89b8e49916eac5174","impliedFormat":1},{"version":"c878f74b6d10b267f6075c51ac1d8becd15b4aa6a58f79c0cfe3b24908357f60","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"fbf68fc8057932b1c30107ebc37420f8d8dc4bef1253c4c2f9e141886c0df5ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"7d8b16d7f33d5081beac7a657a6d13f11a72cf094cc5e37cda1b9d8c89371951","affectsGlobalScope":true,"impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"e679ff5aba9041b932fd3789f4a1c69ddaf015ee54c5879b5b1f4727bcbe00dd","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"b02784111b3fc9c38590cd4339ff8718f9329a6f4d3fd66e9744a1dcd1d7e191","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"63b05afa6121657f25e99e1519596b0826cda026f09372c9100dfe21417f4bd6","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"a02d26c056491b1ddfa53a671ad60ce852969b369f0e71993dbac8ddcf0d038b","affectsGlobalScope":true,"impliedFormat":1},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"035d0934d304483f07148427a5bd5b98ac265dae914a6b49749fe23fbd893ec7","impliedFormat":99},{"version":"e2ed5b81cbed3a511b21a18ab2539e79ac1f4bc1d1d28f8d35d8104caa3b429f","impliedFormat":99},{"version":"b8caba62c0d2ef625f31cbb4fde09d851251af2551086ccf068611b0a69efd81","affectsGlobalScope":true,"impliedFormat":1},{"version":"875ebeac487c4cafe5b14db9b5b36b2b4dc83cf0e49fa82871075388622cd1ba","impliedFormat":1},{"version":"a18642ddf216f162052a16cba0944892c4c4c977d3306a87cb673d46abbb0cbf","impliedFormat":1},{"version":"509f8efdfc5f9f6b52284170e8d7413552f02d79518d1db691ee15acc0088676","impliedFormat":1},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","impliedFormat":1},{"version":"7870becb94cbc11d2d01b77c4422589adcba4d8e59f726246d40cd0d129784d8","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"f70b8328a15ca1d10b1436b691e134a49bc30dcf3183a69bfaa7ba77e1b78ecd","impliedFormat":1},{"version":"ff3660e2664e6096196280deb4e176633b1bb1e58a7dcc9b021ec0e913a6f96f","impliedFormat":99},{"version":"b34b5f6b506abb206b1ea73c6a332b9ee9c8c98be0f6d17cdbda9430ecc1efab","impliedFormat":99},{"version":"75d4c746c3d16af0df61e7b0afe9606475a23335d9f34fcc525d388c21e9058b","impliedFormat":99},{"version":"fa959bf357232201c32566f45d97e70538c75a093c940af594865d12f31d4912","impliedFormat":99},{"version":"7d0eecfbb8fd85a40b3f1218d7b53f193d4194543a4053d0b007fcc869bd2594","impliedFormat":99},{"version":"e6233e1c976265e85aa8ad76c3881febe6264cb06ae3136f0257e1eab4a6cc5a","impliedFormat":99},{"version":"cc99b45397f724c65ab5b16dd2b9add8e2f49513621ccba4e3a564b939bfe706","impliedFormat":99},{"version":"4734f2650122fed32bf168723cbc2e7b64f0c281fec9fc7c37a23d68ee4d4033","impliedFormat":99},{"version":"324ac98294dab54fbd580c7d0e707d94506d7b2c3d5efe981a8495f02cf9ad96","impliedFormat":99},{"version":"9ec72eb493ff209b470467e24264116b6a8616484bca438091433a545dfba17e","impliedFormat":99},{"version":"dd1e40affaae1edc4beefe3d9832e86a683dcfc66fdf8c93c851a47298b04276","impliedFormat":99},{"version":"49747416f08b3ba50500a215e7a55d75268b84e31e896a40313c8053e8dec908","impliedFormat":99},{"version":"f2d1a59a658165341b0e2b7879aa2e19ea6a709146b2d3f70ee8a07159d3d08e","impliedFormat":99},{"version":"bb14e4b17394d59bd9f08459ce36d460dca08bd885c1347cf4fa7166c5af80a3","impliedFormat":99},{"version":"b07c8a8ea750da9dea2d813f9d4f65d14c0090bb00c6dde9372ec1d38b74992e","impliedFormat":99},{"version":"77217723774e80cf137592086cb40cd7607e106155a4c4071773574057863635","impliedFormat":99},{"version":"e666e31d323fef5642f87db0da48a83e58f0aaf9e3823e87eabd8ec7e0441a36","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":1},{"version":"971a2c327ff166c770c5fb35699575ba2d13bba1f6d2757309c9be4b30036c8e","impliedFormat":99},{"version":"3dc60aac181aa635ad323906cdb76d723376299f0f7a4264f2f3e2ae9b8ecc1b","impliedFormat":99},{"version":"7bd51996fb7717941cbe094b05adc0d80b9503b350a77b789bbb0fc786f28053","impliedFormat":99},{"version":"b62006bbc815fe8190c7aee262aad6bff993e3f9ade70d7057dfceab6de79d2f","impliedFormat":99},{"version":"b7e28e06011460436d5c2ec2996846ac0c451e135357fc5a7269e5665a32fbd7","impliedFormat":99},{"version":"3c1b7a726da6885550f1ded3bda6f995c9ae1ca3b5da0c7d282dd6cbe2ed1d1e","impliedFormat":99},{"version":"cb0ec5ea8c0bb861262b62e0fbb899a85d86796de4caaadb53d747706fda82e3","impliedFormat":99},{"version":"3c1291fa957007538097ce38f7f0d65bf4c6ba6c2fad80ab806b71264fd296f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3b8d3c5051687a7454c8f54746ba62b86b91c1e77bce27fea8f86ffc2d0a1325","impliedFormat":99},{"version":"171c0308da0fc6251ea4184989d62c33dff3f277695ab1d556c421c0af59ddd3","affectsGlobalScope":true,"impliedFormat":99},{"version":"fe2d63fcfdde197391b6b70daf7be8c02a60afa90754a5f4a04bdc367f62793d","impliedFormat":99},{"version":"8f86cb232f12a7261a16b4afcd8222327255daac1620b00a734119baf2862fa5","affectsGlobalScope":true,"impliedFormat":99},{"version":"4b2f44e6a64352caffcf08f209cea4ed872be36a859d281cc04df369f88a62c9","impliedFormat":99},{"version":"5a88655bf852c8cc007d6bc874ab61d1d63fba97063020458177173c454e9b4a","impliedFormat":99},{"version":"7e4dfae2da12ec71ffd9f55f4641a6e05610ce0d6784838659490e259e4eb13c","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"4c8ca51077f382498f47074cf304d654aba5d362416d4f809dfdd5d4f6b3aaca","impliedFormat":1},{"version":"c6bddf16578495abc8b5546850b047f30c4b5a2a2b7fecefc0e11a44a6e91399","impliedFormat":1},{"version":"3c35aace73d6afe68bff8509643f964c28c117a63b5f93e1a47f9072b7cea8c8","impliedFormat":99},{"version":"d50ab0815120231ab511558a753c33b2806b42cabe006356fb0bb763fc30e865","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"32ddc6ad753ae79571bbf28cebff7a383bf7f562ac5ef5d25c94ef7f71609d49","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"81df92841a7a12d551fcbc7e4e83dbb7d54e0c73f33a82162d13e9ae89700079","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"50d0f9f7c895c02124a84433b94fde0298450138c893f620f66c9e832ccdf26a","impliedFormat":99},{"version":"2adf9f173d25ca6913086c33acdba41c18295b32baedfea6eb08b7d7f7f6cc2c","signature":"4b96dd19fd2949d28ce80e913412b0026dc421e5bf6c31d87c7b5eb11b5753b4"},{"version":"7220461ab7f6d600b313ce621346c315c3a0ebc65b5c6f268488c5c55b68d319","impliedFormat":1},{"version":"f90d4c1ae3af9afb35920b984ba3e41bdd43f0dc7bae890b89fbd52b978f0cac","impliedFormat":1},{"version":"fcf79300e5257a23ed3bacaa6861d7c645139c6f7ece134d15e6669447e5e6db","impliedFormat":1},{"version":"187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","impliedFormat":1},{"version":"aa2c18a1b5a086bbcaae10a4efba409cc95ba7287d8cf8f2591b53704fea3dea","impliedFormat":1},{"version":"b88749bdb18fc1398370e33aa72bc4f88274118f4960e61ce26605f9b33c5ba2","impliedFormat":1},{"version":"0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","impliedFormat":1},{"version":"00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","impliedFormat":1},{"version":"a873c50d3e47c21aa09fbe1e2023d9a44efb07cc0cb8c72f418bf301b0771fd3","impliedFormat":1},{"version":"7c14ccd2eaa82619fffc1bfa877eb68a012e9fb723d07ee98db451fadb618906","impliedFormat":1},{"version":"49c36529ee09ea9ce19525af5bb84985ea8e782cb7ee8c493d9e36d027a3d019","impliedFormat":1},{"version":"df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","impliedFormat":1},{"version":"4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","impliedFormat":1},{"version":"7605dd065ecbd2d8ff5f80a0b3813fc163ed593f4f24f3b6f6a7e98ac0e2157f","impliedFormat":1},{"version":"a0acca63c9e39580f32a10945df231815f0fe554c074da96ba6564010ffbd2d8","impliedFormat":1}],"root":[90,91,115,290],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationDir":"./types","emitDeclarationOnly":true,"esModuleInterop":true,"jsx":4,"module":99,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"strict":true,"target":99},"referencedMap":[[90,1],[285,2],[283,3],[84,4],[87,5],[288,6],[284,2],[286,7],[287,2],[82,3],[83,3],[304,8],[292,9],[293,10],[291,11],[294,12],[295,13],[296,14],[297,15],[298,16],[299,17],[300,18],[301,19],[302,20],[303,21],[305,22],[78,3],[80,23],[81,22],[289,24],[269,3],[271,25],[272,26],[247,27],[245,3],[246,3],[116,3],[129,28],[122,29],[126,30],[259,31],[260,32],[252,3],[255,33],[254,34],[265,34],[253,35],[256,36],[266,37],[270,3],[125,38],[124,39],[127,39],[118,40],[121,41],[248,40],[123,42],[117,3],[128,43],[79,3],[236,3],[88,44],[89,45],[86,46],[85,5],[279,47],[281,48],[280,49],[278,50],[277,3],[237,3],[239,51],[238,3],[108,52],[106,53],[107,54],[95,55],[96,53],[103,56],[94,57],[99,58],[109,3],[100,59],[105,60],[110,61],[93,62],[101,63],[102,64],[97,65],[104,52],[98,66],[230,67],[92,3],[113,68],[112,3],[111,3],[114,69],[261,3],[119,3],[120,70],[76,3],[77,3],[13,3],[15,3],[14,3],[2,3],[16,3],[17,3],[18,3],[19,3],[20,3],[21,3],[22,3],[23,3],[3,3],[24,3],[25,3],[4,3],[26,3],[30,3],[27,3],[28,3],[29,3],[31,3],[32,3],[33,3],[5,3],[34,3],[35,3],[36,3],[37,3],[6,3],[41,3],[38,3],[39,3],[40,3],[42,3],[7,3],[43,3],[48,3],[49,3],[44,3],[45,3],[46,3],[47,3],[8,3],[53,3],[50,3],[51,3],[52,3],[54,3],[9,3],[55,3],[56,3],[57,3],[59,3],[58,3],[60,3],[61,3],[10,3],[62,3],[63,3],[64,3],[11,3],[65,3],[66,3],[67,3],[68,3],[69,3],[1,3],[70,3],[71,3],[12,3],[74,3],[73,3],[72,3],[75,3],[263,71],[250,72],[251,71],[249,3],[244,73],[235,74],[234,75],[232,75],[231,3],[233,76],[242,3],[241,3],[240,77],[243,78],[262,79],[257,80],[264,81],[131,82],[273,83],[275,84],[267,85],[276,86],[274,87],[268,88],[258,89],[282,90],[130,3],[91,91],[115,92],[290,93],[176,94],[177,94],[178,95],[137,96],[179,97],[180,98],[181,99],[132,3],[135,100],[133,3],[134,3],[182,101],[183,102],[184,103],[185,104],[186,105],[187,106],[188,106],[190,107],[189,108],[191,109],[192,110],[193,111],[175,112],[136,3],[194,113],[195,114],[196,115],[229,116],[197,117],[198,118],[199,119],[200,120],[201,121],[202,122],[203,123],[204,124],[205,125],[206,126],[207,126],[208,127],[209,3],[210,3],[211,128],[213,129],[212,130],[214,131],[215,132],[216,133],[217,134],[218,135],[219,136],[220,137],[221,138],[222,139],[223,140],[224,141],[225,142],[226,143],[227,144],[228,145],[153,146],[163,147],[152,146],[173,148],[144,149],[143,150],[172,151],[166,152],[171,153],[146,154],[160,155],[145,156],[169,157],[141,158],[140,151],[170,159],[142,160],[147,161],[148,3],[151,161],[138,3],[174,162],[164,163],[155,164],[156,165],[158,166],[154,167],[157,168],[167,151],[149,169],[150,170],[159,171],[139,172],[162,163],[161,161],[165,3],[168,173]],"semanticDiagnosticsPerFile":[78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305],"affectedFilesPendingEmit":[90,91,115],"latestChangedDtsFile":"./vite.config.d.ts","version":"5.7.3"}
\ No newline at end of file
diff --git a/packages/player-react/types/components/VideoPlayer.d.ts b/packages/player-react/types/components/VideoPlayer.d.ts
new file mode 100644
index 0000000..4fce754
--- /dev/null
+++ b/packages/player-react/types/components/VideoPlayer.d.ts
@@ -0,0 +1 @@
+export default function VideoPlayer(): import("react/jsx-runtime").JSX.Element;
diff --git a/packages/player-react/types/components/atoms/ellipse-loading/index.d.ts b/packages/player-react/types/components/atoms/ellipse-loading/index.d.ts
new file mode 100644
index 0000000..2f7a269
--- /dev/null
+++ b/packages/player-react/types/components/atoms/ellipse-loading/index.d.ts
@@ -0,0 +1,3 @@
+import React from "react";
+import "./styles.css";
+export default function Ellipses({ children }: React.PropsWithChildren): import("react/jsx-runtime").JSX.Element;
diff --git a/packages/player-react/types/components/atoms/loading/index.d.ts b/packages/player-react/types/components/atoms/loading/index.d.ts
new file mode 100644
index 0000000..788114f
--- /dev/null
+++ b/packages/player-react/types/components/atoms/loading/index.d.ts
@@ -0,0 +1,2 @@
+import "./styles.css";
+export default function Loading(): import("react/jsx-runtime").JSX.Element;
diff --git a/packages/player-react/types/components/atoms/time-code/index.d.ts b/packages/player-react/types/components/atoms/time-code/index.d.ts
new file mode 100644
index 0000000..1ecde0d
--- /dev/null
+++ b/packages/player-react/types/components/atoms/time-code/index.d.ts
@@ -0,0 +1,5 @@
+interface TimeCodeProps {
+ autoHide?: boolean;
+}
+export default function TimeCode({ autoHide }: TimeCodeProps): import("react/jsx-runtime").JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/atoms/transparent-btn/index.d.ts b/packages/player-react/types/components/atoms/transparent-btn/index.d.ts
new file mode 100644
index 0000000..ecf4679
--- /dev/null
+++ b/packages/player-react/types/components/atoms/transparent-btn/index.d.ts
@@ -0,0 +1,15 @@
+import React, { CSSProperties } from "react";
+import "./styles.css";
+type ButtonState = "default" | "active" | "disabled" | "hidden";
+interface CustomButtonProps {
+ buttonState?: ButtonState;
+ defaultStateCss?: string;
+ activeStateCss?: string;
+ disabledStateCss?: string;
+ onClickAction?: () => void;
+ children: React.ReactNode;
+ className?: string;
+ style?: CSSProperties;
+}
+declare const CustomButton: React.FC;
+export default CustomButton;
diff --git a/packages/player-react/types/components/atoms/with-popper/index.d.ts b/packages/player-react/types/components/atoms/with-popper/index.d.ts
new file mode 100644
index 0000000..3ba2818
--- /dev/null
+++ b/packages/player-react/types/components/atoms/with-popper/index.d.ts
@@ -0,0 +1,9 @@
+import React from "react";
+interface CustomPopperProps {
+ popperText?: string;
+ isPopperActive?: boolean;
+ className?: string;
+ children: React.ReactNode;
+}
+declare const CustomPopper: React.FC;
+export default CustomPopper;
diff --git a/packages/player-react/types/components/buttons/big-center-button/index.d.ts b/packages/player-react/types/components/buttons/big-center-button/index.d.ts
new file mode 100644
index 0000000..1888392
--- /dev/null
+++ b/packages/player-react/types/components/buttons/big-center-button/index.d.ts
@@ -0,0 +1,8 @@
+import React from "react";
+interface BigCenterButtonProps {
+ className?: string;
+ isActive?: boolean;
+ autoHide?: boolean;
+}
+declare const BigCenterButton: React.FC;
+export default BigCenterButton;
diff --git a/packages/player-react/types/components/buttons/caption-button/index.d.ts b/packages/player-react/types/components/buttons/caption-button/index.d.ts
new file mode 100644
index 0000000..c117fd1
--- /dev/null
+++ b/packages/player-react/types/components/buttons/caption-button/index.d.ts
@@ -0,0 +1,7 @@
+import { JSX } from "react";
+interface CaptionToggleButtonProps {
+ isActive?: boolean;
+ autoHide?: boolean;
+}
+export default function CaptionToggleButton({ isActive, autoHide, }: CaptionToggleButtonProps): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/buttons/full-screen-button/index.d.ts b/packages/player-react/types/components/buttons/full-screen-button/index.d.ts
new file mode 100644
index 0000000..1406686
--- /dev/null
+++ b/packages/player-react/types/components/buttons/full-screen-button/index.d.ts
@@ -0,0 +1,7 @@
+import { JSX } from "react";
+interface FullscreenToggleButtonProps {
+ isActive?: boolean;
+ autoHide?: boolean;
+}
+export default function FullscreenToggleButton({ isActive, autoHide, }: FullscreenToggleButtonProps): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/buttons/play-pause-button/index.d.ts b/packages/player-react/types/components/buttons/play-pause-button/index.d.ts
new file mode 100644
index 0000000..4056e79
--- /dev/null
+++ b/packages/player-react/types/components/buttons/play-pause-button/index.d.ts
@@ -0,0 +1,7 @@
+import { JSX } from "react";
+interface PlayPauseButtonProps {
+ isActive?: boolean;
+ autoHide?: boolean;
+}
+export default function PlayPauseButton({ isActive, autoHide, }: PlayPauseButtonProps): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/buttons/speed-control-button/index.d.ts b/packages/player-react/types/components/buttons/speed-control-button/index.d.ts
new file mode 100644
index 0000000..ee67a23
--- /dev/null
+++ b/packages/player-react/types/components/buttons/speed-control-button/index.d.ts
@@ -0,0 +1,8 @@
+import { JSX } from "react";
+interface PlaybackRateButtonProps {
+ isActive?: boolean;
+ autoHide?: boolean;
+ speedOptions?: number[];
+}
+export default function PlaybackRateButton({ isActive, autoHide, speedOptions, }: PlaybackRateButtonProps): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/buttons/volume-control-button/index.d.ts b/packages/player-react/types/components/buttons/volume-control-button/index.d.ts
new file mode 100644
index 0000000..c8503c5
--- /dev/null
+++ b/packages/player-react/types/components/buttons/volume-control-button/index.d.ts
@@ -0,0 +1,7 @@
+import { JSX } from "react";
+interface VolumeControlButtonProps {
+ isActive?: boolean;
+ autoHide?: boolean;
+}
+export default function VolumeControlButton({ isActive, autoHide, }: VolumeControlButtonProps): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/icons/arrow-left.d.ts b/packages/player-react/types/components/icons/arrow-left.d.ts
new file mode 100644
index 0000000..8d27702
--- /dev/null
+++ b/packages/player-react/types/components/icons/arrow-left.d.ts
@@ -0,0 +1,6 @@
+import { JSX } from "react";
+interface Props {
+ className?: string;
+}
+export default function LeftArrowIcon(props: Props): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/icons/arrow-right.d.ts b/packages/player-react/types/components/icons/arrow-right.d.ts
new file mode 100644
index 0000000..0f36019
--- /dev/null
+++ b/packages/player-react/types/components/icons/arrow-right.d.ts
@@ -0,0 +1,6 @@
+import { JSX } from "react";
+interface Props {
+ className?: string;
+}
+export default function RightArrowIcon(props: Props): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/icons/close.d.ts b/packages/player-react/types/components/icons/close.d.ts
new file mode 100644
index 0000000..61efc8d
--- /dev/null
+++ b/packages/player-react/types/components/icons/close.d.ts
@@ -0,0 +1,7 @@
+import { JSX } from "react";
+interface Props {
+ className?: string;
+ onClick: () => void;
+}
+export default function CloseCircleIcon({ className, onClick, }: Props): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/icons/full-screen-exit.d.ts b/packages/player-react/types/components/icons/full-screen-exit.d.ts
new file mode 100644
index 0000000..0bddbee
--- /dev/null
+++ b/packages/player-react/types/components/icons/full-screen-exit.d.ts
@@ -0,0 +1,6 @@
+import { JSX } from "react";
+type Props = {
+ className?: string;
+};
+export default function CloseCircleIcon({ className, }: Props): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/icons/full-screen.d.ts b/packages/player-react/types/components/icons/full-screen.d.ts
new file mode 100644
index 0000000..d55cc04
--- /dev/null
+++ b/packages/player-react/types/components/icons/full-screen.d.ts
@@ -0,0 +1,6 @@
+import { JSX } from "react";
+type Props = {
+ className?: string;
+};
+export default function FullScreenIcon({ className }: Props): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/icons/pause.d.ts b/packages/player-react/types/components/icons/pause.d.ts
new file mode 100644
index 0000000..66813f5
--- /dev/null
+++ b/packages/player-react/types/components/icons/pause.d.ts
@@ -0,0 +1,6 @@
+import { JSX } from "react";
+interface Props {
+ className?: string;
+}
+export default function PauseIcon({ className }: Props): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/icons/play.d.ts b/packages/player-react/types/components/icons/play.d.ts
new file mode 100644
index 0000000..104dafc
--- /dev/null
+++ b/packages/player-react/types/components/icons/play.d.ts
@@ -0,0 +1,6 @@
+import { JSX } from "react";
+interface Props {
+ className?: string;
+}
+export default function PlayIcon({ className }: Props): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/icons/search.d.ts b/packages/player-react/types/components/icons/search.d.ts
new file mode 100644
index 0000000..a8f0d50
--- /dev/null
+++ b/packages/player-react/types/components/icons/search.d.ts
@@ -0,0 +1,6 @@
+import { JSX } from "react";
+interface Props {
+ className?: string;
+}
+export default function SearchIcon({ className }: Props): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/icons/volume-mute.d.ts b/packages/player-react/types/components/icons/volume-mute.d.ts
new file mode 100644
index 0000000..eea2453
--- /dev/null
+++ b/packages/player-react/types/components/icons/volume-mute.d.ts
@@ -0,0 +1,6 @@
+import { JSX } from "react";
+interface Props {
+ className?: string;
+}
+export default function VolumeMuteIcon({ className }: Props): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/icons/volume.d.ts b/packages/player-react/types/components/icons/volume.d.ts
new file mode 100644
index 0000000..4f4a2ed
--- /dev/null
+++ b/packages/player-react/types/components/icons/volume.d.ts
@@ -0,0 +1,6 @@
+import { JSX } from "react";
+interface Props {
+ className?: string;
+}
+export default function VolumeIcon({ className }: Props): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/search/search-inside-media/index.d.ts b/packages/player-react/types/components/search/search-inside-media/index.d.ts
new file mode 100644
index 0000000..32fea89
--- /dev/null
+++ b/packages/player-react/types/components/search/search-inside-media/index.d.ts
@@ -0,0 +1,28 @@
+import { JSX } from "react";
+interface Suggestion {
+ text: string;
+}
+interface SearchResult {
+ hits: any[];
+}
+interface Props {
+ autoHide?: boolean;
+ isActive?: boolean;
+ isRaw?: boolean;
+ isAutoPilotLoading?: boolean;
+ searchContent: string;
+ searchResultsLoading?: boolean;
+ searchInputPlaceholder?: string;
+ wordsLoading?: boolean;
+ showSearchResults?: boolean;
+ searchSuggestions?: Suggestion[];
+ searchResults?: SearchResult;
+ updateParentIsFocused?: (focused: boolean) => void;
+ highlights?: any[];
+ isLight?: boolean;
+ onSlideClick?: () => void;
+ onSearchChange: (val: string) => void;
+ onSearchSubmit: (val: string) => void;
+}
+export default function SearchBar({ autoHide, isActive, isRaw, isAutoPilotLoading, searchContent, searchResultsLoading, searchInputPlaceholder, wordsLoading, showSearchResults, searchSuggestions, searchResults, updateParentIsFocused, highlights, isLight, onSlideClick, onSearchChange, onSearchSubmit, }: Props): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/search/search-result-slide/index.d.ts b/packages/player-react/types/components/search/search-result-slide/index.d.ts
new file mode 100644
index 0000000..0ba81a2
--- /dev/null
+++ b/packages/player-react/types/components/search/search-result-slide/index.d.ts
@@ -0,0 +1,17 @@
+import { FC } from "react";
+import "./styles.css";
+interface SearchResultItem {
+ id: string | number;
+ start: number;
+ end?: number;
+ text: string;
+ type: "relevant" | "exact" | string;
+}
+interface Props {
+ searchContent?: string;
+ searchResultItem: SearchResultItem;
+ searchResultItemIndex: number;
+ isLight?: boolean;
+}
+declare const SearchResultSlide: FC;
+export default SearchResultSlide;
diff --git a/packages/player-react/types/components/search/search-results/index.d.ts b/packages/player-react/types/components/search/search-results/index.d.ts
new file mode 100644
index 0000000..9e91961
--- /dev/null
+++ b/packages/player-react/types/components/search/search-results/index.d.ts
@@ -0,0 +1,27 @@
+import { FC } from "react";
+import "swiper/css";
+import "./styles.css";
+interface SearchResultHit {
+ id: string | number;
+ start: number;
+ end: number;
+ type: string;
+}
+interface SearchResults {
+ hits?: SearchResultHit[];
+}
+interface Highlight {
+ time: number;
+}
+interface Props {
+ bg?: string;
+ duration?: number;
+ searchResults?: SearchResults;
+ onSlideClick?: (value: string) => void;
+ highlights?: Highlight[];
+ theme?: string;
+ searchContent?: string;
+ isLight?: boolean;
+}
+declare const SearchResults: FC;
+export default SearchResults;
diff --git a/packages/player-react/types/components/videos/progress-bar/index.d.ts b/packages/player-react/types/components/videos/progress-bar/index.d.ts
new file mode 100644
index 0000000..1cc2123
--- /dev/null
+++ b/packages/player-react/types/components/videos/progress-bar/index.d.ts
@@ -0,0 +1,25 @@
+import { JSX } from "react";
+interface Chapter {
+ id?: string | number;
+ start: number;
+ length: number;
+ title?: string;
+ end?: number;
+}
+interface Props {
+ isActive?: boolean;
+ autoHide?: boolean;
+ streamUrl?: string;
+ chaptersList?: Chapter[];
+ persistentChapter?: boolean;
+ manualSlide?: number | null;
+ activeChapterProp?: string | null;
+ showChapters?: boolean;
+ previewPlayer?: string;
+ isChapterExpanded?: boolean;
+ setActiveChapter?: (chapterIndex: number | null) => void;
+ hideChapterSummary?: (isVisible: boolean) => void;
+ setPreviewVisibility?: (isVisible: boolean) => void;
+}
+export default function SearchBar({ isActive, autoHide, streamUrl, chaptersList, persistentChapter, manualSlide, activeChapterProp: activeChapterPropRaw, showChapters, isChapterExpanded, setActiveChapter, hideChapterSummary, setPreviewVisibility, }: Props): JSX.Element;
+export {};
diff --git a/packages/player-react/types/components/videos/videodb-player/index.d.ts b/packages/player-react/types/components/videos/videodb-player/index.d.ts
new file mode 100644
index 0000000..48e825c
--- /dev/null
+++ b/packages/player-react/types/components/videos/videodb-player/index.d.ts
@@ -0,0 +1,20 @@
+import React, { ReactNode } from "react";
+import { SubtitlesConfig } from "../../../context";
+interface VideoPlayerProps {
+ streamUrl: string;
+ thumbnailUrl?: string;
+ subtitlesConfig?: SubtitlesConfig;
+ startAt?: number;
+ autoPlay?: boolean;
+ autoHideDuration?: number;
+ defaultControls?: boolean;
+ defaultOverlay?: boolean;
+ defaultPlayBackRate?: number;
+ aspectRatio?: string;
+ debug?: boolean;
+ children?: ReactNode;
+ overlayContent?: ReactNode;
+ controlsContent?: ReactNode;
+}
+declare const VideoPlayer: React.FC;
+export default VideoPlayer;
diff --git a/packages/player-react/types/context.d.ts b/packages/player-react/types/context.d.ts
new file mode 100644
index 0000000..1e68be4
--- /dev/null
+++ b/packages/player-react/types/context.d.ts
@@ -0,0 +1,33 @@
+export type SubtitlesConfig = {
+ src: string;
+ kind?: string;
+ lang?: string;
+ label?: string;
+};
+export type VideoPlayerContextType = {
+ showElements: boolean;
+ playing: boolean;
+ volume: number;
+ videoMuted: boolean;
+ duration: number;
+ time: number;
+ percentagePlayed: number;
+ playBackRate: number;
+ showSubtitles: boolean;
+ subtitlesConfig: SubtitlesConfig;
+ isFullScreen: boolean;
+ play: () => void;
+ pause: () => void;
+ togglePlay: () => void;
+ toggleMute: () => void;
+ seekTo: (seconds: number) => void;
+ seekToPercentage: (percent: number) => void;
+ setPlayBackRate: (rate: number) => void;
+ setVolume: (volume: number) => void;
+ convertTimeToDuration: (time: number) => string;
+ toggleFullScreen: (value?: boolean) => void;
+ togglePictureInPicture: () => void;
+ toggleSubtitles: (value: boolean) => void;
+};
+export declare const VideoPlayerContext: import("react").Context;
+export declare const useVideoPlayerContext: () => VideoPlayerContextType;
diff --git a/packages/player-react/types/hooks/useVideoJSPlayer.d.ts b/packages/player-react/types/hooks/useVideoJSPlayer.d.ts
new file mode 100644
index 0000000..dec3ecb
--- /dev/null
+++ b/packages/player-react/types/hooks/useVideoJSPlayer.d.ts
@@ -0,0 +1,54 @@
+type PlayerProps = {
+ streamUrl: string;
+ autoPlay?: boolean;
+ muted?: boolean;
+ startAt?: number;
+ thumbnailUrl?: string;
+ defaultPlayBackRate?: number;
+ debug?: boolean;
+};
+type PlayerEvents =
+ | "play"
+ | "pause"
+ | "ended"
+ | "loadeddata"
+ | "waiting"
+ | "playing"
+ | "timeupdate"
+ | "canplay"
+ | "canplaythrough"
+ | "videoerrror"
+ | "toggleSubtitles"
+ | "fullScreenChange";
+type EventEmitter = (
+ event: PlayerEvents,
+ data: {
+ event: any;
+ },
+) => void;
+export declare function useVideoDBPlayer(
+ emit: EventEmitter,
+ props: PlayerProps,
+): {
+ playing: boolean;
+ volume: number;
+ videoMuted: boolean;
+ time: number;
+ duration: number;
+ percentagePlayed: number;
+ playBackRate: number;
+ events: PlayerEvents[];
+ play: () => void;
+ pause: () => void;
+ togglePlay: () => void;
+ toggleMute: () => void;
+ setVolume: (percentAsDecimal: number) => void;
+ seekTo: (timeValue: number) => void;
+ seekToPercentage: (percentage: number) => void;
+ setPlayBackRate: (value: number) => void;
+ convertTimeToDuration: (seconds: number) => string;
+ togglePictureInPicture: () => void;
+ bindEvents: (eventList: PlayerEvents[], eventEmitter: EventEmitter) => void;
+ initializePlayer: (playerElement: HTMLVideoElement | null) => void;
+};
+export {};
diff --git a/packages/player-react/types/index.d.ts b/packages/player-react/types/index.d.ts
new file mode 100644
index 0000000..0a43137
--- /dev/null
+++ b/packages/player-react/types/index.d.ts
@@ -0,0 +1,4 @@
+import VideoPlayer from "./components/VideoPlayer";
+import "./styles.css";
+import "./videojs.css";
+export { VideoPlayer };
diff --git a/packages/player-react/vite.config.ts b/packages/player-react/vite.config.ts
new file mode 100644
index 0000000..f82ba79
--- /dev/null
+++ b/packages/player-react/vite.config.ts
@@ -0,0 +1,62 @@
+///
+import react from "@vitejs/plugin-react";
+import autoprefixer from "autoprefixer";
+import path from "path";
+import tailwindcss from "tailwindcss";
+import { defineConfig } from "vite";
+import cssInjectedByJsPlugin from "vite-plugin-css-injected-by-js";
+export default defineConfig({
+ plugins: [
+ react({
+ jsxRuntime: "automatic",
+ jsxImportSource: "react",
+ }),
+ cssInjectedByJsPlugin(),
+ ],
+ resolve: {
+ alias: {},
+ },
+ css: {
+ postcss: {
+ plugins: [tailwindcss(), autoprefixer()],
+ },
+ },
+ build: {
+ lib: {
+ name: "VideoPlayerReact",
+ entry: path.resolve(__dirname, "./src/index.tsx"),
+ formats: ["es", "cjs", "iife"],
+ fileName: (format) => {
+ switch (format) {
+ case "es":
+ return "index.mjs";
+ case "cjs":
+ return "index.cjs";
+ case "iife":
+ return "index.js";
+ default:
+ return "index.js";
+ }
+ },
+ },
+ minify: false,
+ rollupOptions: {
+ external: ["react", "react-dom", "react/jsx-runtime"],
+ output: {
+ banner: `/**
+ * Copyright ${new Date(Date.now()).getFullYear()} VideoDB
+ * @license MIT
+**/`,
+ exports: "named",
+ globals: {
+ react: "React",
+ "react-dom": "ReactDOM",
+ "react/jsx-runtime": "jsxRuntime",
+ },
+ },
+ },
+ },
+ test: {
+ environment: "jsdom",
+ },
+});
diff --git a/.gitignore b/packages/player-vue/.gitignore
similarity index 100%
rename from .gitignore
rename to packages/player-vue/.gitignore
diff --git a/.prettierrc b/packages/player-vue/.prettierrc
similarity index 100%
rename from .prettierrc
rename to packages/player-vue/.prettierrc
diff --git a/CHANGELOG.md b/packages/player-vue/CHANGELOG.md
similarity index 100%
rename from CHANGELOG.md
rename to packages/player-vue/CHANGELOG.md
diff --git a/LICENSE b/packages/player-vue/LICENSE
similarity index 100%
rename from LICENSE
rename to packages/player-vue/LICENSE
diff --git a/packages/player-vue/README.md b/packages/player-vue/README.md
new file mode 100644
index 0000000..002d054
--- /dev/null
+++ b/packages/player-vue/README.md
@@ -0,0 +1,443 @@
+
+
+
+[![NPM version][npm-shield]][npm-url]
+[![Stargazers][stars-shield]][stars-url]
+[![Issues][issues-shield]][issues-url]
+[![Website][website-shield]][website-url]
+[![Discord][discord-shield]][discord-url]
+
+
+
+
+
+
+
+
+
VideoDB Player
+
+
+ AI First Video Player
+
+ View Demo ยป
+
+
+ Report Bug
+ ยท
+ Request Feature
+
+
+
+
+
+# ๐บ VideoDB Player
+
+VideoDB Player is an AI-first video player that enhances how we interact with videos.
+
+### ๐ค AI-Powered Interactive Features
+
+- Intelligent search bar and navigation in the video using search results.
+- Automated chapter UI for easy consumpation and navigation.
+- Seamless integration with chat interfaces for interactive experiences.
+
+
+### ๐ Versatile and User-Friendly Experience
+
+- Cross platform support (Web, Android, iOS), features perfectly adjust on mobile devices.
+- Out-of-the-box speed controls allow users to customize their viewing experience.
+- [Designed](https://www.linkedin.com/posts/ashutoshtrivedi_spext-activity-7231616055834505216-UNsw) with both viewers and developers in mind, offering a sleek interface and easy integration.
+
+### ๐ Optimized for [VideoDB](https://videodb.io) Infra
+
+While it can work with any video source, VideoDB Player is specially optimized to leverage the full potential of VideoDB's advanced video infrastructure.
+
+- Enhanced compatibility with VideoDB's advanced video search feature.
+- *(upcoming)* [videodb-chat](https://github.com/video-db/videodb-chat) provides necessary Chat UI components specially designed for "Chat with Video" interfaces.
+
+
+
+
+# โจ See it in Action
+
+
+
+https://github.com/user-attachments/assets/5d674179-16cd-4ec3-b3f5-c8c613562fb8
+
+
+
+## ๐จ Well-Designed UI Components
+
+
+
+
+
+VideoDB Player offers a well crafted UI, composed of modular components that ensure both functionality and aesthetic appeal. Let's break down the key elements:
+
+1. Main Components:
+
+- `VideoDBPlayer` : Main Video Player Component
+
+2. Overlays:
+
+- `SearchInsideMedia`: Allows users to search within the video content. Includes a UI interface specifically designed to show Video Results โจ.
+- `Chapters`: Chapters that overlays on a Video.
+- `BigCenterButton`: Prominent play/pause control for easy interaction
+
+3. Controls:
+
+- `ProgressBar`: Visual indicator of playback progress. With integration of Video Chapter functionality.
+- `PlayPauseButton`: Toggle between play and pause states
+- `VolumeControl`: Adjust audio levels
+- `SpeedControl`: Modify playback speed
+- `Caption`: Toggle closed captions
+- `Fullscreen`: Expand to full-screen mode
+
+
+
+
+# ๐ Quickstart
+
+
+
+### Installation
+
+ Clone this repo or use the following command in your project's directory:
+
+```bash
+npm install @videodb/player-vue
+```
+
+### Usage
+
+ Import the necessary components and styles. ( *Currently supports Vue.js only* )
+
+```html
+
+
+
+
+
+
+
+
+```
+
+
+
+# ๐งโ๐ป Advanced Usage
+
+### ๐งฉ Slots
+
+` ` has two different [slots](https://vuejs.org/guide/components/slots.html) available to add Custom UI components on top of `VideoDBPlayer`.
+
+- `overlay`
+- `controls`
+
+Child Components can access the player state by [injecting](https://vuejs.org/guide/components/provide-inject.html#inject) the state [provided](https://vuejs.org/guide/components/provide-inject.html#provide) under `videodb-player` key.
+Checkout [Accessing State Inside Child Components of `VideoDBPlayer`](#-accessing-player-state-inside-child-components-of-videodbplayer) Section for more details
+
+
+
+
+
+### ๐ง Custom Controls
+
+To create custom controls for the VideoDBPlayer component, you can utilize the provided slot feature. First, you'll need to disable the default controls by setting the `defaultControls` prop to `false`. Here's how you can do it:
+
+```html
+
+
+
+
+
+```
+
+
+
+### ๐ง Custom overlay
+
+Similar to disabling the default controls, you can disable the default overlay by setting the `defaultOverlay` prop to `false` within the VideoDBPlayer component:
+
+```html
+
+
+
+
+
+```
+
+
+
+### ๐ Using ` ` Component
+
+The ` ` component enables in-video search functionality. To use it:
+
+1. Disable the default overlay in ``.
+2. Add the ` ` component in the `#overlay` slot.
+3. To get the search results from Video you can use [VideoDB](https://videodb.io).
+
+```html
+
+
+
+
+
+
+
+
+
+
+```
+
+> โน๏ธ Checkout [SearchInsideMedia interface](#searchinsidemedia) for more details on props and events
+
+
+
+### ๐งโ๐ป Accessing Player State Inside Child Components of `VideoDBPlayer`
+
+The player state and methods are provided through the Vue composition API. You can access them using the `useVideoDBPlayer` hook in Child Components of `VideoDBPlayer`:
+
+```html
+
+```
+
+> โน๏ธ Checkout [VideoDBPlayer interface](#videodbplayer) for more details
+
+
+
+### ๐งโ๐ป Accessing Player Instance
+
+Internal player instance are exposed through a `ref`.
+Useful for accessing player methods and state from outside the component.
+
+```html
+
+
+
+
+
+```
+
+> โน๏ธ Checkout [VideoDBPlayer interface](#videodbplayer) for more details
+
+
+
+### ๐ Events
+
+Emits several events that you can listen to, in the parent component:
+
+1. `play`: Emitted when the video starts playing.
+2. `pause`: Emitted when the video is paused.
+ > โน๏ธ Checkout [VideoDBPlayer interface](#videodbplayer) for full list of events
+
+Example usage:
+
+```html
+
+
+
+
+
+```
+
+
+
+# ๐ก Interface
+
+## VideoDBPlayer
+
+### Props
+
+- `streamUrl`: (String, required): URL of the video stream.
+- `thumbnailUrl`: (String, optional): URL of the video thumbnail.
+- `aspectRatio`: (String, default: "16:9"): Aspect ratio of the video. (ratio, seperated by ":")
+- `subtitlesConfig`: (Object, optional): Configuration for subtitles.
+ - `src` (String, default: ""): URL of the subtitles file.
+ - `kind` (String, default: "captions"): text track type.
+ - `lang` (String, default: "en"): Language of the subtitles.
+ - `label` (String, default: "English"): Label for the subtitles.
+- `startAt` (Number, default: 0): Time in seconds to start the video.
+- `autoPlay` (Boolean, default: false): Toggle to start playing automatically.
+- `autoHideDuration` (Number, default: 5000): Duration in milliseconds before controls are hidden.
+- `defaultControls` (Boolean, default: true): Toggle to use default controls.
+- `defaultOverlay` (Boolean, default: true): Toggle to use the default overlay.
+- `defaultPlayBackRate` (Number, default: 1): Default playback rate.
+- `debug` (Boolean, default: false): Enable debug mode.
+
+### Exposed and Injected Variables
+
+Following variables are both exposed (via `defineExpose`) and injected (via `provide`) under the key "videodb-player":
+
+### State Variables
+
+- `showElements`: Boolean indicating whether control elements are visible.
+- `playing`: Boolean indicating if the video is currently playing.
+- `volume`: Number representing the current volume level.
+- `videoMuted`: Boolean indicating if the video is muted.
+- `duration`: Number representing the total duration of the video.
+- `time`: Number representing the current playback time.
+- `percentagePlayed`: Number representing the percentage of the video that has been played.
+- `playBackRate`: Number representing the current playback speed.
+- `showSubtitles`: Boolean indicating if subtitles are currently displayed.
+- `subtitlesConfig`: Object containing subtitle configuration (src, kind, lang, label).
+- `isFullScreen`: Boolean indicating if the player is in fullscreen mode.
+
+### Methods
+
+- `play()`: Start playing the video.
+- `pause()`: Pause the video.
+- `togglePlay()`: Toggle between play and pause.
+- `toggleMute()`: Toggle audio mute.
+- `seekTo(time)`: Seek to a specific time in the video.
+- `seekToPercentage(percentage)`: Seek to a specific percentage of the video.
+- `setPlayBackRate(rate)`: Set the playback speed.
+- `setVolume(level)`: Set the volume level.
+- `toggleFullScreen(value)`: Toggle fullscreen mode.
+- `toggleSubtitles(value)`: Toggle subtitle display.
+
+### Events
+
+- `play`: Emitted when the video starts playing.
+- `pause`: Emitted when the video is paused.
+- `ended`: Emitted when the video playback ends.
+- `loadeddata`: Emitted when video data has loaded.
+- `waiting`: Emitted when the video is waiting for data to continue playback.
+- `playing`: Emitted when the video starts playing after being paused or stopped for buffering.
+- `timeupdate`: Emitted continuously as the video plays, providing the current playback time.
+- `canplay`: Emitted when the browser can start playing the video.
+- `canplaythrough`: Emitted when the browser estimates it can play through the video without stopping for buffering.
+- `videoerrror`: Emitted when an error occurs during video playback.
+- `toggleSubtitles`: Emitted when subtitles are toggled on or off.
+- `fullScreenChange`: Emitted when entering or exiting fullscreen mode.
+
+## SearchInsideMedia
+
+### Props
+
+- `searchInputPlaceholder` (String, default: "Search or ask a question"): Placeholder text for the search input.
+- `searchContent` (String, required): The search query.
+- `searchSuggestions` (Array, optional): List of search suggestions. Each suggestion is an object with the format `{ "text": "search suggestion" }`.
+- `searchResultsLoading` (Boolean, required): Whether search results are loading.
+- `showSearchResults` (Boolean, required): Whether to show search results.
+- `searchResults` (Object, optional): Search results object containing:
+ - `hits` (Array, required): Array of match objects, each with the following fields:
+ - `id` (String, required): Unique identifier for the match.
+ - `start` (Number, required): Start time of the match in seconds relative to video start.
+ - `end` (Number, required): End time of the match in seconds relative to video start.
+ - `text` (String, required): Relevant text matching the query.
+ - `type` (String, required): Type of match, either "relevant" or "exact".
+
+### Events
+
+- `toggle-results`: Emitted when the search results are required to be toggled on or off.
+- `search-change`: Emitted when the search input changes.
+- `search-submit`: Emitted when the search is submitted (enter key pressed )
+
+## ๐ฃ๏ธ Roadmap
+
+- Integration with upcoming VideoDB chat and agents projects.
+- โก Optimization for ProgressBar
+- ๐ Search Component Interface improvements
+- ๐จ Improve tailwind.config.js; use default values for spacing
+- โ๏ธ React Conversion
+
+
+
+## Contribute
+
+Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**.
+
+1. Fork the Project
+2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
+3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
+4. Push to the Branch (`git push origin feature/AmazingFeature`)
+5. Open a Pull Request
+
+
+
+
+
+[npm-shield]: https://img.shields.io/npm/v/@videodb/player-vue?style=for-the-badge
+[npm-url]: https://www.npmjs.com/package/@videodb/player-vue
+[discord-shield]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&url=https://discord.com/api/invites/py9P639jGz?with_counts=true&query=$.approximate_member_count&logo=discord&logoColor=blue&color=green&label=discord
+[discord-url]: https://discord.com/invite/py9P639jGz
+[stars-shield]: https://img.shields.io/github/stars/video-db/videodb-player.svg?style=for-the-badge
+[stars-url]: https://github.com/video-db/videodb-player/stargazers
+[issues-shield]: https://img.shields.io/github/issues/video-db/videodb-player.svg?style=for-the-badge
+[issues-url]: https://github.com/video-db/videodb-player/issues
+[website-shield]: https://img.shields.io/website?url=https%3A%2F%2Fvideodb.io%2F&style=for-the-badge&label=videodb.io
+[website-url]: https://videodb.io/
diff --git a/package-lock.json b/packages/player-vue/package-lock.json
similarity index 100%
rename from package-lock.json
rename to packages/player-vue/package-lock.json
diff --git a/package.json b/packages/player-vue/package.json
similarity index 100%
rename from package.json
rename to packages/player-vue/package.json
diff --git a/postcss.config.js b/packages/player-vue/postcss.config.js
similarity index 100%
rename from postcss.config.js
rename to packages/player-vue/postcss.config.js
diff --git a/src/components/atoms/EllipsesLoading.vue b/packages/player-vue/src/components/atoms/EllipsesLoading.vue
similarity index 100%
rename from src/components/atoms/EllipsesLoading.vue
rename to packages/player-vue/src/components/atoms/EllipsesLoading.vue
diff --git a/src/components/atoms/Loading.vue b/packages/player-vue/src/components/atoms/Loading.vue
similarity index 100%
rename from src/components/atoms/Loading.vue
rename to packages/player-vue/src/components/atoms/Loading.vue
diff --git a/src/components/atoms/TimeCode.vue b/packages/player-vue/src/components/atoms/TimeCode.vue
similarity index 100%
rename from src/components/atoms/TimeCode.vue
rename to packages/player-vue/src/components/atoms/TimeCode.vue
diff --git a/src/components/atoms/TransparentButton.vue b/packages/player-vue/src/components/atoms/TransparentButton.vue
similarity index 100%
rename from src/components/atoms/TransparentButton.vue
rename to packages/player-vue/src/components/atoms/TransparentButton.vue
diff --git a/src/components/atoms/WithPopper.vue b/packages/player-vue/src/components/atoms/WithPopper.vue
similarity index 100%
rename from src/components/atoms/WithPopper.vue
rename to packages/player-vue/src/components/atoms/WithPopper.vue
diff --git a/src/components/buttons/BigCenterButton.vue b/packages/player-vue/src/components/buttons/BigCenterButton.vue
similarity index 100%
rename from src/components/buttons/BigCenterButton.vue
rename to packages/player-vue/src/components/buttons/BigCenterButton.vue
diff --git a/src/components/buttons/CaptionButton.vue b/packages/player-vue/src/components/buttons/CaptionButton.vue
similarity index 100%
rename from src/components/buttons/CaptionButton.vue
rename to packages/player-vue/src/components/buttons/CaptionButton.vue
diff --git a/src/components/buttons/FullScreenButton.vue b/packages/player-vue/src/components/buttons/FullScreenButton.vue
similarity index 100%
rename from src/components/buttons/FullScreenButton.vue
rename to packages/player-vue/src/components/buttons/FullScreenButton.vue
diff --git a/src/components/buttons/PlayPauseButton.vue b/packages/player-vue/src/components/buttons/PlayPauseButton.vue
similarity index 100%
rename from src/components/buttons/PlayPauseButton.vue
rename to packages/player-vue/src/components/buttons/PlayPauseButton.vue
diff --git a/src/components/buttons/SpeedControlButton.vue b/packages/player-vue/src/components/buttons/SpeedControlButton.vue
similarity index 100%
rename from src/components/buttons/SpeedControlButton.vue
rename to packages/player-vue/src/components/buttons/SpeedControlButton.vue
diff --git a/src/components/buttons/VolumeControlButton.vue b/packages/player-vue/src/components/buttons/VolumeControlButton.vue
similarity index 100%
rename from src/components/buttons/VolumeControlButton.vue
rename to packages/player-vue/src/components/buttons/VolumeControlButton.vue
diff --git a/src/components/hooks/useVideoJSPlayer.js b/packages/player-vue/src/components/hooks/useVideoJSPlayer.js
similarity index 100%
rename from src/components/hooks/useVideoJSPlayer.js
rename to packages/player-vue/src/components/hooks/useVideoJSPlayer.js
diff --git a/src/components/icons/arrow-left.vue b/packages/player-vue/src/components/icons/arrow-left.vue
similarity index 100%
rename from src/components/icons/arrow-left.vue
rename to packages/player-vue/src/components/icons/arrow-left.vue
diff --git a/src/components/icons/arrow-right.vue b/packages/player-vue/src/components/icons/arrow-right.vue
similarity index 100%
rename from src/components/icons/arrow-right.vue
rename to packages/player-vue/src/components/icons/arrow-right.vue
diff --git a/src/components/icons/close.vue b/packages/player-vue/src/components/icons/close.vue
similarity index 100%
rename from src/components/icons/close.vue
rename to packages/player-vue/src/components/icons/close.vue
diff --git a/src/components/icons/full-screen-exit.vue b/packages/player-vue/src/components/icons/full-screen-exit.vue
similarity index 100%
rename from src/components/icons/full-screen-exit.vue
rename to packages/player-vue/src/components/icons/full-screen-exit.vue
diff --git a/src/components/icons/full-screen.vue b/packages/player-vue/src/components/icons/full-screen.vue
similarity index 100%
rename from src/components/icons/full-screen.vue
rename to packages/player-vue/src/components/icons/full-screen.vue
diff --git a/src/components/icons/pause.vue b/packages/player-vue/src/components/icons/pause.vue
similarity index 100%
rename from src/components/icons/pause.vue
rename to packages/player-vue/src/components/icons/pause.vue
diff --git a/src/components/icons/play.vue b/packages/player-vue/src/components/icons/play.vue
similarity index 100%
rename from src/components/icons/play.vue
rename to packages/player-vue/src/components/icons/play.vue
diff --git a/src/components/icons/search.vue b/packages/player-vue/src/components/icons/search.vue
similarity index 100%
rename from src/components/icons/search.vue
rename to packages/player-vue/src/components/icons/search.vue
diff --git a/src/components/icons/volume-mute.vue b/packages/player-vue/src/components/icons/volume-mute.vue
similarity index 100%
rename from src/components/icons/volume-mute.vue
rename to packages/player-vue/src/components/icons/volume-mute.vue
diff --git a/src/components/icons/volume.vue b/packages/player-vue/src/components/icons/volume.vue
similarity index 100%
rename from src/components/icons/volume.vue
rename to packages/player-vue/src/components/icons/volume.vue
diff --git a/src/components/search/SearchInsideMedia.vue b/packages/player-vue/src/components/search/SearchInsideMedia.vue
similarity index 100%
rename from src/components/search/SearchInsideMedia.vue
rename to packages/player-vue/src/components/search/SearchInsideMedia.vue
diff --git a/src/components/search/SearchResultSlide.vue b/packages/player-vue/src/components/search/SearchResultSlide.vue
similarity index 100%
rename from src/components/search/SearchResultSlide.vue
rename to packages/player-vue/src/components/search/SearchResultSlide.vue
diff --git a/src/components/search/SearchResults.vue b/packages/player-vue/src/components/search/SearchResults.vue
similarity index 100%
rename from src/components/search/SearchResults.vue
rename to packages/player-vue/src/components/search/SearchResults.vue
diff --git a/src/components/video/ProgressBar.vue b/packages/player-vue/src/components/video/ProgressBar.vue
similarity index 100%
rename from src/components/video/ProgressBar.vue
rename to packages/player-vue/src/components/video/ProgressBar.vue
diff --git a/src/components/video/VideoDBPlayer.vue b/packages/player-vue/src/components/video/VideoDBPlayer.vue
similarity index 100%
rename from src/components/video/VideoDBPlayer.vue
rename to packages/player-vue/src/components/video/VideoDBPlayer.vue
diff --git a/src/context.js b/packages/player-vue/src/context.js
similarity index 100%
rename from src/context.js
rename to packages/player-vue/src/context.js
diff --git a/src/index.ts b/packages/player-vue/src/index.ts
similarity index 100%
rename from src/index.ts
rename to packages/player-vue/src/index.ts
diff --git a/src/style.css b/packages/player-vue/src/style.css
similarity index 100%
rename from src/style.css
rename to packages/player-vue/src/style.css
diff --git a/src/videojs.css b/packages/player-vue/src/videojs.css
similarity index 100%
rename from src/videojs.css
rename to packages/player-vue/src/videojs.css
diff --git a/tailwind.config.js b/packages/player-vue/tailwind.config.js
similarity index 100%
rename from tailwind.config.js
rename to packages/player-vue/tailwind.config.js
diff --git a/tsconfig.app.json b/packages/player-vue/tsconfig.app.json
similarity index 100%
rename from tsconfig.app.json
rename to packages/player-vue/tsconfig.app.json
diff --git a/types/Component.vue.d.ts b/packages/player-vue/types/Component.vue.d.ts
similarity index 100%
rename from types/Component.vue.d.ts
rename to packages/player-vue/types/Component.vue.d.ts
diff --git a/types/VideoPlayer.vue.d.ts b/packages/player-vue/types/VideoPlayer.vue.d.ts
similarity index 100%
rename from types/VideoPlayer.vue.d.ts
rename to packages/player-vue/types/VideoPlayer.vue.d.ts
diff --git a/types/components/atoms/EllipsesLoading.vue.d.ts b/packages/player-vue/types/components/atoms/EllipsesLoading.vue.d.ts
similarity index 100%
rename from types/components/atoms/EllipsesLoading.vue.d.ts
rename to packages/player-vue/types/components/atoms/EllipsesLoading.vue.d.ts
diff --git a/types/components/atoms/Loading.vue.d.ts b/packages/player-vue/types/components/atoms/Loading.vue.d.ts
similarity index 100%
rename from types/components/atoms/Loading.vue.d.ts
rename to packages/player-vue/types/components/atoms/Loading.vue.d.ts
diff --git a/types/components/atoms/TimeCode.vue.d.ts b/packages/player-vue/types/components/atoms/TimeCode.vue.d.ts
similarity index 100%
rename from types/components/atoms/TimeCode.vue.d.ts
rename to packages/player-vue/types/components/atoms/TimeCode.vue.d.ts
diff --git a/types/components/atoms/TransparentButton.vue.d.ts b/packages/player-vue/types/components/atoms/TransparentButton.vue.d.ts
similarity index 100%
rename from types/components/atoms/TransparentButton.vue.d.ts
rename to packages/player-vue/types/components/atoms/TransparentButton.vue.d.ts
diff --git a/types/components/atoms/WithPopper.vue.d.ts b/packages/player-vue/types/components/atoms/WithPopper.vue.d.ts
similarity index 100%
rename from types/components/atoms/WithPopper.vue.d.ts
rename to packages/player-vue/types/components/atoms/WithPopper.vue.d.ts
diff --git a/types/components/buttons/BigCenterButton.vue.d.ts b/packages/player-vue/types/components/buttons/BigCenterButton.vue.d.ts
similarity index 100%
rename from types/components/buttons/BigCenterButton.vue.d.ts
rename to packages/player-vue/types/components/buttons/BigCenterButton.vue.d.ts
diff --git a/types/components/buttons/CaptionButton.vue.d.ts b/packages/player-vue/types/components/buttons/CaptionButton.vue.d.ts
similarity index 100%
rename from types/components/buttons/CaptionButton.vue.d.ts
rename to packages/player-vue/types/components/buttons/CaptionButton.vue.d.ts
diff --git a/types/components/buttons/FullScreenButton.vue.d.ts b/packages/player-vue/types/components/buttons/FullScreenButton.vue.d.ts
similarity index 100%
rename from types/components/buttons/FullScreenButton.vue.d.ts
rename to packages/player-vue/types/components/buttons/FullScreenButton.vue.d.ts
diff --git a/types/components/buttons/PlayPauseButton.vue.d.ts b/packages/player-vue/types/components/buttons/PlayPauseButton.vue.d.ts
similarity index 100%
rename from types/components/buttons/PlayPauseButton.vue.d.ts
rename to packages/player-vue/types/components/buttons/PlayPauseButton.vue.d.ts
diff --git a/types/components/buttons/SpeedControlButton.vue.d.ts b/packages/player-vue/types/components/buttons/SpeedControlButton.vue.d.ts
similarity index 100%
rename from types/components/buttons/SpeedControlButton.vue.d.ts
rename to packages/player-vue/types/components/buttons/SpeedControlButton.vue.d.ts
diff --git a/types/components/buttons/VolumeControlButton.vue.d.ts b/packages/player-vue/types/components/buttons/VolumeControlButton.vue.d.ts
similarity index 100%
rename from types/components/buttons/VolumeControlButton.vue.d.ts
rename to packages/player-vue/types/components/buttons/VolumeControlButton.vue.d.ts
diff --git a/types/components/chapters/ChapterCard.vue.d.ts b/packages/player-vue/types/components/chapters/ChapterCard.vue.d.ts
similarity index 100%
rename from types/components/chapters/ChapterCard.vue.d.ts
rename to packages/player-vue/types/components/chapters/ChapterCard.vue.d.ts
diff --git a/types/components/chapters/CopyTextButton.vue.d.ts b/packages/player-vue/types/components/chapters/CopyTextButton.vue.d.ts
similarity index 100%
rename from types/components/chapters/CopyTextButton.vue.d.ts
rename to packages/player-vue/types/components/chapters/CopyTextButton.vue.d.ts
diff --git a/types/components/chapters/ShareButton.vue.d.ts b/packages/player-vue/types/components/chapters/ShareButton.vue.d.ts
similarity index 100%
rename from types/components/chapters/ShareButton.vue.d.ts
rename to packages/player-vue/types/components/chapters/ShareButton.vue.d.ts
diff --git a/types/components/chapters/cards/DesktopSummary.vue.d.ts b/packages/player-vue/types/components/chapters/cards/DesktopSummary.vue.d.ts
similarity index 100%
rename from types/components/chapters/cards/DesktopSummary.vue.d.ts
rename to packages/player-vue/types/components/chapters/cards/DesktopSummary.vue.d.ts
diff --git a/types/components/chapters/cards/SummaryCard.vue.d.ts b/packages/player-vue/types/components/chapters/cards/SummaryCard.vue.d.ts
similarity index 100%
rename from types/components/chapters/cards/SummaryCard.vue.d.ts
rename to packages/player-vue/types/components/chapters/cards/SummaryCard.vue.d.ts
diff --git a/types/components/chapters/cards/index.vue.d.ts b/packages/player-vue/types/components/chapters/cards/index.vue.d.ts
similarity index 100%
rename from types/components/chapters/cards/index.vue.d.ts
rename to packages/player-vue/types/components/chapters/cards/index.vue.d.ts
diff --git a/types/components/common/atoms/TransparentButton.vue.d.ts b/packages/player-vue/types/components/common/atoms/TransparentButton.vue.d.ts
similarity index 100%
rename from types/components/common/atoms/TransparentButton.vue.d.ts
rename to packages/player-vue/types/components/common/atoms/TransparentButton.vue.d.ts
diff --git a/types/components/common/atoms/WithPopper.vue.d.ts b/packages/player-vue/types/components/common/atoms/WithPopper.vue.d.ts
similarity index 100%
rename from types/components/common/atoms/WithPopper.vue.d.ts
rename to packages/player-vue/types/components/common/atoms/WithPopper.vue.d.ts
diff --git a/types/components/hooks/useVideoJSPlayer.d.ts b/packages/player-vue/types/components/hooks/useVideoJSPlayer.d.ts
similarity index 100%
rename from types/components/hooks/useVideoJSPlayer.d.ts
rename to packages/player-vue/types/components/hooks/useVideoJSPlayer.d.ts
diff --git a/types/components/icons/arrow-left.vue.d.ts b/packages/player-vue/types/components/icons/arrow-left.vue.d.ts
similarity index 100%
rename from types/components/icons/arrow-left.vue.d.ts
rename to packages/player-vue/types/components/icons/arrow-left.vue.d.ts
diff --git a/types/components/icons/arrow-right.vue.d.ts b/packages/player-vue/types/components/icons/arrow-right.vue.d.ts
similarity index 100%
rename from types/components/icons/arrow-right.vue.d.ts
rename to packages/player-vue/types/components/icons/arrow-right.vue.d.ts
diff --git a/types/components/icons/close.vue.d.ts b/packages/player-vue/types/components/icons/close.vue.d.ts
similarity index 100%
rename from types/components/icons/close.vue.d.ts
rename to packages/player-vue/types/components/icons/close.vue.d.ts
diff --git a/types/components/icons/full-screen-enter.vue.d.ts b/packages/player-vue/types/components/icons/full-screen-enter.vue.d.ts
similarity index 100%
rename from types/components/icons/full-screen-enter.vue.d.ts
rename to packages/player-vue/types/components/icons/full-screen-enter.vue.d.ts
diff --git a/types/components/icons/full-screen-exit.vue.d.ts b/packages/player-vue/types/components/icons/full-screen-exit.vue.d.ts
similarity index 100%
rename from types/components/icons/full-screen-exit.vue.d.ts
rename to packages/player-vue/types/components/icons/full-screen-exit.vue.d.ts
diff --git a/types/components/icons/full-screen.vue.d.ts b/packages/player-vue/types/components/icons/full-screen.vue.d.ts
similarity index 100%
rename from types/components/icons/full-screen.vue.d.ts
rename to packages/player-vue/types/components/icons/full-screen.vue.d.ts
diff --git a/types/components/icons/pause.vue.d.ts b/packages/player-vue/types/components/icons/pause.vue.d.ts
similarity index 100%
rename from types/components/icons/pause.vue.d.ts
rename to packages/player-vue/types/components/icons/pause.vue.d.ts
diff --git a/types/components/icons/play.vue.d.ts b/packages/player-vue/types/components/icons/play.vue.d.ts
similarity index 100%
rename from types/components/icons/play.vue.d.ts
rename to packages/player-vue/types/components/icons/play.vue.d.ts
diff --git a/types/components/icons/search.vue.d.ts b/packages/player-vue/types/components/icons/search.vue.d.ts
similarity index 100%
rename from types/components/icons/search.vue.d.ts
rename to packages/player-vue/types/components/icons/search.vue.d.ts
diff --git a/types/components/icons/volume-mute.vue.d.ts b/packages/player-vue/types/components/icons/volume-mute.vue.d.ts
similarity index 100%
rename from types/components/icons/volume-mute.vue.d.ts
rename to packages/player-vue/types/components/icons/volume-mute.vue.d.ts
diff --git a/types/components/icons/volume.vue.d.ts b/packages/player-vue/types/components/icons/volume.vue.d.ts
similarity index 100%
rename from types/components/icons/volume.vue.d.ts
rename to packages/player-vue/types/components/icons/volume.vue.d.ts
diff --git a/types/components/search/SearchInsideMedia.vue.d.ts b/packages/player-vue/types/components/search/SearchInsideMedia.vue.d.ts
similarity index 100%
rename from types/components/search/SearchInsideMedia.vue.d.ts
rename to packages/player-vue/types/components/search/SearchInsideMedia.vue.d.ts
diff --git a/types/components/search/SearchResultSlide.vue.d.ts b/packages/player-vue/types/components/search/SearchResultSlide.vue.d.ts
similarity index 100%
rename from types/components/search/SearchResultSlide.vue.d.ts
rename to packages/player-vue/types/components/search/SearchResultSlide.vue.d.ts
diff --git a/types/components/search/SearchResults.vue.d.ts b/packages/player-vue/types/components/search/SearchResults.vue.d.ts
similarity index 100%
rename from types/components/search/SearchResults.vue.d.ts
rename to packages/player-vue/types/components/search/SearchResults.vue.d.ts
diff --git a/types/components/video/ProgressBar.vue.d.ts b/packages/player-vue/types/components/video/ProgressBar.vue.d.ts
similarity index 100%
rename from types/components/video/ProgressBar.vue.d.ts
rename to packages/player-vue/types/components/video/ProgressBar.vue.d.ts
diff --git a/types/components/video/VideoDBPlayer.vue.d.ts b/packages/player-vue/types/components/video/VideoDBPlayer.vue.d.ts
similarity index 100%
rename from types/components/video/VideoDBPlayer.vue.d.ts
rename to packages/player-vue/types/components/video/VideoDBPlayer.vue.d.ts
diff --git a/types/components/video/VideoPlayer.vue.d.ts b/packages/player-vue/types/components/video/VideoPlayer.vue.d.ts
similarity index 100%
rename from types/components/video/VideoPlayer.vue.d.ts
rename to packages/player-vue/types/components/video/VideoPlayer.vue.d.ts
diff --git a/types/context.d.ts b/packages/player-vue/types/context.d.ts
similarity index 100%
rename from types/context.d.ts
rename to packages/player-vue/types/context.d.ts
diff --git a/types/index.d.ts b/packages/player-vue/types/index.d.ts
similarity index 100%
rename from types/index.d.ts
rename to packages/player-vue/types/index.d.ts
diff --git a/types/video/BigCenterButton.vue.d.ts b/packages/player-vue/types/video/BigCenterButton.vue.d.ts
similarity index 100%
rename from types/video/BigCenterButton.vue.d.ts
rename to packages/player-vue/types/video/BigCenterButton.vue.d.ts
diff --git a/types/video/FeatureButtons.vue.d.ts b/packages/player-vue/types/video/FeatureButtons.vue.d.ts
similarity index 100%
rename from types/video/FeatureButtons.vue.d.ts
rename to packages/player-vue/types/video/FeatureButtons.vue.d.ts
diff --git a/types/video/MainControlButtons.vue.d.ts b/packages/player-vue/types/video/MainControlButtons.vue.d.ts
similarity index 100%
rename from types/video/MainControlButtons.vue.d.ts
rename to packages/player-vue/types/video/MainControlButtons.vue.d.ts
diff --git a/types/video/ProgressBar.vue.d.ts b/packages/player-vue/types/video/ProgressBar.vue.d.ts
similarity index 100%
rename from types/video/ProgressBar.vue.d.ts
rename to packages/player-vue/types/video/ProgressBar.vue.d.ts
diff --git a/types/video/VolumeControl.vue.d.ts b/packages/player-vue/types/video/VolumeControl.vue.d.ts
similarity index 100%
rename from types/video/VolumeControl.vue.d.ts
rename to packages/player-vue/types/video/VolumeControl.vue.d.ts
diff --git a/types/video/buttons/CaptionButton.vue.d.ts b/packages/player-vue/types/video/buttons/CaptionButton.vue.d.ts
similarity index 100%
rename from types/video/buttons/CaptionButton.vue.d.ts
rename to packages/player-vue/types/video/buttons/CaptionButton.vue.d.ts
diff --git a/types/video/buttons/FullScreenButton.vue.d.ts b/packages/player-vue/types/video/buttons/FullScreenButton.vue.d.ts
similarity index 100%
rename from types/video/buttons/FullScreenButton.vue.d.ts
rename to packages/player-vue/types/video/buttons/FullScreenButton.vue.d.ts
diff --git a/types/video/buttons/PlayPause.vue.d.ts b/packages/player-vue/types/video/buttons/PlayPause.vue.d.ts
similarity index 100%
rename from types/video/buttons/PlayPause.vue.d.ts
rename to packages/player-vue/types/video/buttons/PlayPause.vue.d.ts
diff --git a/types/video/buttons/PlayPauseButton.vue.d.ts b/packages/player-vue/types/video/buttons/PlayPauseButton.vue.d.ts
similarity index 100%
rename from types/video/buttons/PlayPauseButton.vue.d.ts
rename to packages/player-vue/types/video/buttons/PlayPauseButton.vue.d.ts
diff --git a/types/video/buttons/SpeedControlButton.vue.d.ts b/packages/player-vue/types/video/buttons/SpeedControlButton.vue.d.ts
similarity index 100%
rename from types/video/buttons/SpeedControlButton.vue.d.ts
rename to packages/player-vue/types/video/buttons/SpeedControlButton.vue.d.ts
diff --git a/types/video/buttons/VolumeControl.vue.d.ts b/packages/player-vue/types/video/buttons/VolumeControl.vue.d.ts
similarity index 100%
rename from types/video/buttons/VolumeControl.vue.d.ts
rename to packages/player-vue/types/video/buttons/VolumeControl.vue.d.ts
diff --git a/types/video/buttons/VolumeControlButton.vue.d.ts b/packages/player-vue/types/video/buttons/VolumeControlButton.vue.d.ts
similarity index 100%
rename from types/video/buttons/VolumeControlButton.vue.d.ts
rename to packages/player-vue/types/video/buttons/VolumeControlButton.vue.d.ts
diff --git a/vite.config.ts b/packages/player-vue/vite.config.ts
similarity index 100%
rename from vite.config.ts
rename to packages/player-vue/vite.config.ts