loadingi / Miss Player | 影院模式 (单手播放器)

// ==UserScript==
// @name Miss Player | 影院模式 (单手播放器)
// @name:en Miss Player | Theater Mode (One-handed Player)
// @name:ja Miss Player | シアターモード (片手プレーヤー)
// @name:vi Miss Player | Chế Độ Rạp Hát (Trình Phát Một Tay)
// @name:zh-CN Miss Player | 影院模式 (单手播放器)
// @name:zh-TW Miss Player | 影院模式 (單手播放器)
// @description MissAV去广告|单手模式|MissAV自动展开详情|MissAV自动高画质|MissAV重定向支持|MissAV自动登录|定制播放器|多语言支持 支持 jable po*nhub 等通用
// @description:en MissAV ad-free|one-handed mode|MissAV auto-expand details|MissAV auto high quality|MissAV redirect support|MissAV auto login|custom player|multilingual support for jable po*nhub etc.
// @description:ja MissAV広告ブロック|片手モード|MissAV自動詳細表示|MissAV自動高画質|MissAVリダイレクト対応|MissAV自動ログイン|カスタムプレーヤー|jable po*nhubなどに対応した多言語サポート
// @description:vi MissAV không quảng cáo|chế độ một tay|MissAV tự động mở rộng chi tiết|MissAV tự động chất lượng cao|Hỗ trợ chuyển hướng MissAV|MissAV tự động đăng nhập|trình phát tùy chỉnh|hỗ trợ đa ngôn ngữ cho jable po*nhub v.v.
// @description:zh-CN MissAV去广告|单手模式|MissAV自动展开详情|MissAV自动高画质|MissAV重定向支持|MissAV自动登录|定制播放器|多语言支持 支持 jable po*nhub 等通用
// @description:zh-TW MissAV去廣告|單手模式|MissAV自動展開詳情|MissAV自動高畫質|MissAV重定向支持|MissAV自動登錄|定制播放器|多語言支持 支持 jable po*nhub 等通用
// @version 5.1.6
// @author Chris_C
// @match *://*.missav.ws/*
// @match *://*.missav.ai/*
// @match *://*.jable.tv/*
// @match *://*/*
// @grant none
// @icon https://missav.ws/img/favicon.ico
// @license MIT
// @namespace loadingi.local
// @noframes 
// @run-at document-start
// ==/UserScript==

(() => {
  "use strict";
  var r = {
    "56": (r, o, a) => {
      function setAttributesWithoutAttributes(r) {
        var o = true ? a.nc : 0;
        if (o) {
          r.setAttribute("nonce", o);
        }
      }
      r.exports = setAttributesWithoutAttributes;
    },
    "72": r => {
      var o = [];
      function getIndexByIdentifier(r) {
        var a = -1;
        for (var l = 0; l < o.length; l++) {
          if (o[l].identifier === r) {
            a = l;
            break;
          }
        }
        return a;
      }
      function modulesToDom(r, a) {
        var l = {};
        var u = [];
        for (var p = 0; p < r.length; p++) {
          var v = r[p];
          var y = a.base ? v[0] + a.base : v[0];
          var b = l[y] || 0;
          var k = "".concat(y, " ").concat(b);
          l[y] = b + 1;
          var C = getIndexByIdentifier(k);
          var _ = {
            "css": v[1],
            "media": v[2],
            "sourceMap": v[3],
            "supports": v[4],
            "layer": v[5]
          };
          if (-1 !== C) {
            o[C].references++;
            o[C].updater(_);
          } else {
            var P = addElementStyle(_, a);
            a.byIndex = p;
            o.splice(p, 0, {
              "identifier": k,
              "updater": P,
              "references": 1
            });
          }
          u.push(k);
        }
        return u;
      }
      function addElementStyle(r, o) {
        var a = o.domAPI(o);
        a.update(r);
        var l;
        return function updater(o) {
          if (o) {
            if (o.css === r.css && o.media === r.media && o.sourceMap === r.sourceMap && o.supports === r.supports && o.layer === r.layer) {
              return;
            }
            a.update(r = o);
          } else {
            a.remove();
          }
        };
      }
      r.exports = function(r, a) {
        var l = modulesToDom(r = r || [], a = a || {});
        return function update(r) {
          r = r || [];
          for (var u = 0; u < l.length; u++) {
            var p;
            var v = getIndexByIdentifier(l[u]);
            o[v].references--;
          }
          var y = modulesToDom(r, a);
          for (var b = 0; b < l.length; b++) {
            var k;
            var C = getIndexByIdentifier(l[b]);
            if (0 === o[C].references) {
              o[C].updater();
              o.splice(C, 1);
            }
          }
          l = y;
        };
      };
    },
    "113": r => {
      function styleTagTransform(r, o) {
        if (o.styleSheet) {
          o.styleSheet.cssText = r;
        } else {
          while (o.firstChild) {
            o.removeChild(o.firstChild);
          }
          o.appendChild(document.createTextNode(r));
        }
      }
      r.exports = styleTagTransform;
    },
    "314": r => {
      r.exports = function(r) {
        var o = [];
        o.toString = function toString() {
          return this.map((function(o) {
            var a = "";
            var l = "undefined" !== typeof o[5];
            if (o[4]) {
              a += "@supports (".concat(o[4], ") {");
            }
            if (o[2]) {
              a += "@media ".concat(o[2], " {");
            }
            if (l) {
              a += "@layer".concat(o[5].length > 0 ? " ".concat(o[5]) : "", " {");
            }
            a += r(o);
            if (l) {
              a += "}";
            }
            if (o[2]) {
              a += "}";
            }
            if (o[4]) {
              a += "}";
            }
            return a;
          })).join("");
        };
        o.i = function i(r, a, l, u, p) {
          if ("string" === typeof r) {
            r = [ [ null, r, void 0 ] ];
          }
          var v = {};
          if (l) {
            for (var y = 0; y < this.length; y++) {
              var b = this[y][0];
              if (null != b) {
                v[b] = true;
              }
            }
          }
          for (var k = 0; k < r.length; k++) {
            var C = [].concat(r[k]);
            if (l && v[C[0]]) {
              continue;
            }
            if ("undefined" !== typeof p) {
              if ("undefined" === typeof C[5]) {
                C[5] = p;
              } else {
                C[1] = "@layer".concat(C[5].length > 0 ? " ".concat(C[5]) : "", " {").concat(C[1], "}");
                C[5] = p;
              }
            }
            if (a) {
              if (!C[2]) {
                C[2] = a;
              } else {
                C[1] = "@media ".concat(C[2], " {").concat(C[1], "}");
                C[2] = a;
              }
            }
            if (u) {
              if (!C[4]) {
                C[4] = "".concat(u);
              } else {
                C[1] = "@supports (".concat(C[4], ") {").concat(C[1], "}");
                C[4] = u;
              }
            }
            o.push(C);
          }
        };
        return o;
      };
    },
    "540": r => {
      function insertStyleElement(r) {
        var o = document.createElement("style");
        r.setAttributes(o, r.attributes);
        r.insert(o, r.options);
        return o;
      }
      r.exports = insertStyleElement;
    },
    "601": r => {
      r.exports = function(r) {
        return r[1];
      };
    },
    "659": r => {
      var o = {};
      function getTarget(r) {
        if ("undefined" === typeof o[r]) {
          var a = document.querySelector(r);
          if (window.HTMLIFrameElement && a instanceof window.HTMLIFrameElement) {
            try {
              a = a.contentDocument.head;
            } catch (r) {
              a = null;
            }
          }
          o[r] = a;
        }
        return o[r];
      }
      function insertBySelector(r, o) {
        var a = getTarget(r);
        if (!a) {
          throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
        }
        a.appendChild(o);
      }
      r.exports = insertBySelector;
    },
    "703": (r, o, a) => {
      a.d(o, {
        "A": () => b
      });
      var l = a(601);
      var u = a.n(l);
      var p = a(314);
      var v;
      var y = a.n(p)()(u());
      y.push([ r.id, `:root{\n    --shadcn-background:0 0% 0%;\n    --shadcn-foreground:0 0% 100%;\n    --shadcn-card:0 0% 5%;\n    --shadcn-card-foreground:0 0% 95%;\n    --shadcn-popover:0 0% 10%;\n    --shadcn-popover-foreground:0 0% 95%;\n    --shadcn-primary:210 10% 90%;\n    --shadcn-primary-foreground:210 20% 10%;\n    --shadcn-secondary:0 0% 15%;\n    --shadcn-secondary-foreground:0 0% 95%;\n    --shadcn-muted:0 0% 30%;\n    --shadcn-muted-foreground:0 0% 70%;\n    --shadcn-accent:212 40% 30%;\n    --shadcn-accent-foreground:0 0% 95%;\n    --shadcn-destructive:0 50% 40%;\n    --shadcn-destructive-foreground:0 0% 95%;\n    --shadcn-border:0 0% 30%;\n    --shadcn-input:0 0% 15%;\n    --shadcn-ring:212 70% 45%;\n    --shadcn-green:142 50% 45%;\n    --shadcn-green-foreground:0 0% 95%;\n    --shadcn-blue:211 70% 55%;\n    --shadcn-blue-foreground:0 0% 95%;\n    --shadcn-red:0 60% 50%;\n    --shadcn-red-foreground:0 0% 95%;\n    --shadcn-orange:25 80% 50%;\n    --shadcn-orange-foreground:0 0% 95%;\n    --shadcn-purple:262 60% 60%;\n    --shadcn-purple-foreground:0 0% 95%;\n    --shadcn-radius:0.5rem;\n    --shadcn-radius-sm:0.3rem;\n    --shadcn-radius-lg:0.8rem;\n    --button-sm:20px;\n    --button-md:32px;\n    --button-lg:40px;\n    --button-xl:48px;\n    --anim-quick:0.2s cubic-bezier(0.4, 0, 0.2, 1);\n    --anim-smooth:0.3s cubic-bezier(0.16, 1, 0.3, 1);\n    --anim-bounce:0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);\n    --shadow-sm:0 2px 5px rgba(0, 0, 0, 0.2);\n    --shadow-md:0 4px 10px rgba(0, 0, 0, 0.25);\n    --shadow-lg:0 8px 20px rgba(0, 0, 0, 0.3);\n    --font-sans:"SF Pro Display", "SF Pro", "Segoe UI", "Microsoft YaHei", "微软雅黑", "PingFang SC", "苹方", "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";\n}\nhtml, body, button, input, select, textarea{\n    font-family:var(--font-sans);\n}\n*, *::before, *::after{\n    font-family:inherit;\n}\n\n.tm-video-overlay *{\n    font-family:var(--font-sans);\n}\n.tm-floating-button{\n    position:fixed;\n    bottom:30px;\n    left:50%;\n    transform:translateX(-50%);\n    padding:0;\n    width:56px;\n    height:56px;\n    border-radius:50%;\n    background-color:transparent;\n    color:rgb(254, 98, 142);\n    border:none;\n    display:flex;\n    align-items:center;\n    justify-content:center;\n    z-index:9980;\n    cursor:pointer;\n    transition:all var(--anim-smooth);\n    overflow:visible;\n}\n\n.tm-floating-button svg{\n    width:48px;\n    height:48px;\n    filter:drop-shadow(0 0 10px rgba(254, 98, 142, 0.9));\n    transition:all var(--anim-smooth);\n    animation:breathing-glow 3s infinite ease-in-out;\n}\n\n.tm-floating-button:hover{\n    transform:translateX(-50%) scale(1.1);\n}\n\n.tm-floating-button:hover svg{\n    animation-play-state:paused;\n    filter:drop-shadow(0 0 20px rgba(254, 98, 142, 1.0));\n}\n\n.tm-floating-button:active{\n    transform:translateX(-50%) scale(0.95);\n}\n@keyframes breathing-glow{\n    0%{\n        filter:drop-shadow(0 0 8px rgba(254, 98, 142, 0.7));\n        transform:scale(0.97);\n    }\n    50%{\n        filter:drop-shadow(0 0 25px rgba(254, 98, 142, 1.0));\n        transform:scale(1.03);\n    }\n    100%{\n        filter:drop-shadow(0 0 8px rgba(254, 98, 142, 0.7));\n        transform:scale(0.97);\n    }\n}\n@media screen and (orientation: landscape){\n    .tm-floating-button{\n        left:auto;\n        right:20px;\n        transform:translateX(0);\n    }\n    \n    .tm-floating-button:hover{\n        transform:translateX(0) scale(1.1);\n    }\n    \n    .tm-floating-button:active{\n        transform:translateX(0) scale(0.95);\n    }\n    \n    .tm-floating-button svg{\n        animation:breathing-glow-landscape 3s infinite ease-in-out;\n    }\n}\n@keyframes breathing-glow-landscape{\n    0%{\n        filter:drop-shadow(0 0 8px rgba(254, 98, 142, 0.7));\n        transform:scale(0.97);\n    }\n    50%{\n        filter:drop-shadow(0 0 25px rgba(254, 98, 142, 1.0));\n        transform:scale(1.03);\n    }\n    100%{\n        filter:drop-shadow(0 0 8px rgba(254, 98, 142, 0.7));\n        transform:scale(0.97);\n    }\n}\n.tm-video-overlay{\n    position:fixed;\n    top:0;\n    left:0;\n    right:0;\n    height:100vh;\n    background-color:rgba(35, 17, 29, 0.8);\n    z-index:9990;\n    display:flex;\n    flex-direction:column;\n    align-items:center;\n    justify-content:flex-start;\n    backdrop-filter:blur(30px);\n    -webkit-backdrop-filter:blur(30px);\n    padding:0;\n}\n.tm-player-container{\n    position:fixed;\n    top:0;\n    bottom:0;\n    left:0;\n    right:0;\n    width:100%;\n    background-color:transparent;\n    display:flex;\n    flex-direction:column;\n    align-items:center;\n    justify-content:flex-start;\n    z-index:9991;\n    height:100%;\n    overflow:visible;\n    pointer-events:auto;\n}\n.tm-button-container{\n    width:100%;\n    display:flex;\n    justify-content:space-between;\n    padding:6px 10px;\n    box-sizing:border-box;\n    z-index:9993;\n    position:absolute;\n    top:0;\n    left:0;\n}\n\n.tm-video-container{\n    position:relative;\n    overflow:hidden;\n    width:100%;\n    height:auto;\n    max-height:80vh;\n    margin-top:44px;\n    display:flex;\n    align-items:flex-start;\n    justify-content:center;\n    background-color:hsl(var(--shadcn-card));\n    border-radius:var(--shadcn-radius-lg);\n    box-shadow:var(--shadow-lg);\n    z-index:9992;\n}\n\n.tm-video-wrapper{\n    position:relative;\n    overflow:hidden;\n    width:100%;\n    height:100%;\n    display:flex;\n    justify-content:center;\n    align-items:center;\n    will-change:transform;\n    border-radius:var(--shadcn-radius) var(--shadcn-radius) 0 0;\n}\n.tm-video-wrapper video{\n    width:auto !important; \n    height:100% !important; \n    max-width:none !important; \n    object-fit:contain !important; \n    transition:transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n    touch-action:pan-y; \n    cursor:grab; \n}\n.tm-handle-container{\n    left:0;\n    right:0;\n    bottom:10px;\n    height:30px;\n    display:flex;\n    justify-content:center;\n    align-items:center;\n    z-index:9992;\n    width:100%;\n}\n\n.tm-resize-handle{\n    position:absolute;\n    height:5px;\n    width:134px;\n    max-width:134px;\n    background-color:hsla(var(--shadcn-foreground) / 0.6);\n    border-radius:2.5px;\n    cursor:ns-resize;\n    touch-action:none;\n    opacity:0.5;\n    will-change:transform;\n    transition:all var(--anim-quick);\n    box-shadow:none;\n}\n\n.tm-resize-handle::after{\n    content:'';\n    position:absolute;\n    left:-10px;\n    right:-10px;\n    top:-15px;\n    bottom:-15px;\n    background:transparent;\n}\n\n.tm-resize-handle:hover{\n    opacity:1;\n    background-color:hsla(var(--shadcn-foreground) / 0.8);\n}\n.tm-control-button-base{\n    color:hsl(var(--shadcn-secondary-foreground));\n    border-radius:50%;\n    display:flex;\n    align-items:center;\n    justify-content:center;\n    cursor:pointer;\n    transition:all var(--anim-quick);\n    backdrop-filter:blur(12px);\n    -webkit-backdrop-filter:blur(12px);\n    box-shadow:var(--shadow-sm);\n}\n.tm-close-button{\n    position:relative;\n    width:var(--button-md);\n    height:var(--button-md);\n    border-radius:calc(var(--button-md) / 2);\n    background-color:hsla(var(--shadcn-secondary) / 0.5);\n    color:hsl(var(--shadcn-secondary-foreground));\n    border:1px solid hsla(var(--shadcn-border) / 0.1);\n    display:flex;\n    align-items:center;\n    justify-content:center;\n    cursor:pointer;\n    transition:all var(--anim-smooth);\n    z-index:9994;\n}\n\n.tm-close-button:hover{\n    background-color:hsl(var(--shadcn-destructive));\n    transform:scale(1.1);\n    box-shadow:var(--shadow-md);\n}\n\n.tm-close-button:active{\n    transform:scale(0.9);\n}\n.tm-settings-button{\n    position:relative;\n    width:var(--button-md);\n    height:var(--button-md);\n    border-radius:calc(var(--button-md) / 2);\n    background-color:hsla(var(--shadcn-secondary) / 0.7);\n    color:hsl(var(--shadcn-secondary-foreground));\n    border:1px solid hsla(var(--shadcn-border) / 0.2);\n    display:flex;\n    align-items:center;\n    justify-content:center;\n    z-index:9993;\n    cursor:pointer;\n    transition:all var(--anim-quick);\n    backdrop-filter:blur(8px);\n    -webkit-backdrop-filter:blur(8px);\n    box-shadow:var(--shadow-sm);\n}\n\n.tm-settings-button:hover{\n    background-color:hsla(var(--shadcn-accent) / 0.9);\n    transform:scale(1.1) rotate(30deg);\n    box-shadow:var(--shadow-md);\n}\n\n.tm-settings-button:active{\n    transform:scale(0.9);\n}\n.tm-settings-panel{\n    position:absolute;\n    top:calc(env(safe-area-inset-top, 8px) + 60px);\n    right:16px;\n    background-color:hsla(var(--shadcn-card) / 0.7);\n    backdrop-filter:blur(15px);\n    -webkit-backdrop-filter:blur(15px);\n    border-radius:var(--shadcn-radius);\n    border:1px solid hsla(var(--shadcn-border) / 0.1);\n    padding:12px;\n    box-shadow:var(--shadow-md);\n    z-index:9996;\n    min-width:200px;\n    transform:translateY(-10px);\n    opacity:0;\n    pointer-events:none;\n    transition:transform var(--anim-smooth), opacity var(--anim-smooth);\n}\n\n.tm-settings-panel.active{\n    transform:translateY(0);\n    opacity:1;\n    pointer-events:auto;\n}\n.tm-settings-option{\n    display:flex;\n    justify-content:space-between;\n    align-items:center;\n    padding:10px;\n    border-radius:var(--shadcn-radius-sm);\n    margin-bottom:8px;\n    transition:background-color var(--anim-quick);\n}\n\n.tm-settings-option:hover{\n    background-color:hsla(var(--shadcn-muted) / 0.5);\n}\n\n.tm-settings-option:last-child{\n    margin-bottom:0;\n}\n.tm-settings-label{\n    cursor:pointer;\n    flex:1;\n}\n.tm-toggle-input{\n    position:absolute;\n    left:-9999px;\n}\n.tm-settings-panel{\n    display:none;\n}\n\n.tm-settings-panel.visible{\n    display:block;\n}\n.tm-start-time-container.active{\n    background-color:hsl(var(--shadcn-green) / 0.15);\n    border-color:hsl(var(--shadcn-green) / 0.4);\n}\n\n.tm-start-time-container:not(.active){\n    background-color:hsl(var(--shadcn-secondary) / 0.5);\n    border-color:hsl(var(--shadcn-border) / 0.1);\n}\n.tm-end-time-container.active{\n    background-color:hsl(var(--shadcn-orange) / 0.15);\n    border-color:hsl(var(--shadcn-orange) / 0.4);\n}\n\n.tm-end-time-container:not(.active){\n    background-color:hsl(var(--shadcn-secondary) / 0.5);\n    border-color:hsl(var(--shadcn-border) / 0.1);\n}\n.tm-set-loop-start-label.active{\n    color:hsl(var(--shadcn-green));\n    opacity:1;\n}\n\n.tm-set-loop-start-label:not(.active){\n    opacity:0.9;\n}\n.tm-set-loop-end-label.active{\n    color:hsl(var(--shadcn-orange));\n    opacity:1;\n}\n\n.tm-set-loop-end-label:not(.active){\n    opacity:0.9;\n}\n.tm-loop-start-position.active, .tm-loop-end-position.active{\n    color:hsl(var(--shadcn-foreground));\n    opacity:1;\n}\n\n.tm-loop-start-position:not(.active), .tm-loop-end-position:not(.active){\n    color:hsl(var(--shadcn-muted-foreground));\n    opacity:0.9;\n}\n.tm-loop-toggle-button.active{\n    background-color:hsl(var(--shadcn-red) / 0.1);\n    border-color:hsl(var(--shadcn-red) / 0.3);\n}\n\n.tm-loop-toggle-button:active{\n    transform:scale(0.98);\n}\n.tm-loop-range{\n    position:absolute;\n    height:4px;\n    background:linear-gradient(90deg, \n        hsla(var(--shadcn-green) / 0.3) 0%, \n        hsla(var(--shadcn-orange) / 0.3) 100%);\n    top:50%;\n    transform:translateY(-50%);\n    border-radius:2px;\n    opacity:0;\n    transition:opacity 0.3s ease;\n    z-index:1;\n    pointer-events:none;\n}\n\n.tm-loop-range.active{\n    opacity:0.7;\n    box-shadow:0 0 8px rgba(0, 0, 0, 0.1);\n}\n.tm-progress-bar-container:hover .tm-loop-range.active{\n    opacity:0.9;\n    height:6px;\n}\n.tm-loop-marker{\n    position:absolute;\n    width:4px;\n    height:100%;\n    top:0;\n    transform:translateX(-50%);\n    z-index:3;\n    transition:opacity 0.3s cubic-bezier(0.25, 0.1, 0.25, 1), transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275), box-shadow 0.2s cubic-bezier(0.25, 0.1, 0.25, 1);\n    backdrop-filter:blur(4px);\n    -webkit-backdrop-filter:blur(4px);\n}\n.tm-loop-start-marker{\n    background-color:hsla(var(--shadcn-green) / 0.5);\n    border-radius:2px;\n    box-shadow:0 0 6px hsla(var(--shadcn-green) / 0.3);\n}\n.tm-loop-end-marker{\n    background-color:hsla(var(--shadcn-orange) / 0.5);\n    border-radius:2px;\n    box-shadow:0 0 6px hsla(var(--shadcn-orange) / 0.3);\n}\n.tm-loop-marker:hover{\n    cursor:pointer;\n    z-index:4;\n}\n\n.tm-loop-start-marker:hover{\n    background-color:hsla(var(--shadcn-green) / 0.7);\n    box-shadow:0 0 10px hsla(var(--shadcn-green) / 0.5);\n}\n\n.tm-loop-end-marker:hover{\n    background-color:hsla(var(--shadcn-orange) / 0.7);\n    box-shadow:0 0 10px hsla(var(--shadcn-orange) / 0.5);\n}\n.tm-loop-marker.active{\n    opacity:1;\n}\n\n.tm-loop-marker:not(.active){\n    opacity:0.7;\n}\n.tm-loop-marker::before{\n    content:attr(data-label);\n    position:absolute;\n    top:-24px;\n    left:50%;\n    transform:translateX(-50%);\n    background-color:hsla(var(--shadcn-card) / 0.7);\n    color:hsl(var(--shadcn-card-foreground));\n    font-size:10px;\n    font-weight:600;\n    padding:2px 8px;\n    border-radius:10px;\n    opacity:0;\n    transition:opacity 0.2s ease, transform 0.2s ease;\n    backdrop-filter:blur(8px);\n    -webkit-backdrop-filter:blur(8px);\n    box-shadow:0 2px 4px rgba(0, 0, 0, 0.1);\n    border:1px solid hsla(var(--shadcn-border) / 0.1);\n    white-space:nowrap;\n    z-index:5;\n}\n\n.tm-loop-start-marker::before{\n    content:"循环起点";\n}\n\n.tm-loop-end-marker::before{\n    content:"循环终点";\n}\n\n.tm-loop-marker:hover::before{\n    opacity:1;\n    transform:translateX(-50%) translateY(-4px);\n}\n.tm-start-time-container-hover{\n    background-color:hsl(var(--shadcn-green) / 0.1);\n    border-color:hsl(var(--shadcn-green) / 0.3);\n}\n\n.tm-start-time-container-default{\n    background-color:hsl(var(--shadcn-secondary) / 0.5);\n    border-color:hsl(var(--shadcn-border) / 0.1);\n}\n\n.tm-end-time-container-hover{\n    background-color:hsl(var(--shadcn-orange) / 0.1);\n    border-color:hsl(var(--shadcn-orange) / 0.3);\n}\n\n.tm-end-time-container-default{\n    background-color:hsl(var(--shadcn-secondary) / 0.5);\n    border-color:hsl(var(--shadcn-border) / 0.1);\n}\n.tm-loop-button-hover{\n    background-color:hsl(var(--shadcn-accent) / 0.3);\n    transform:translateY(-1px);\n}\n\n.tm-loop-button-active{\n    background-color:hsl(var(--shadcn-muted) / 0.7);\n}\n\n.tm-loop-button-default{\n    background-color:hsl(var(--shadcn-secondary) / 0.5);\n    transform:translateY(0);\n}\n.tm-indicator-base{\n    position:absolute;\n    padding:8px 16px;\n    background-color:hsla(var(--shadcn-card) / 0.6);\n    color:hsl(var(--shadcn-card-foreground));\n    border-radius:var(--shadcn-radius);\n    opacity:0;\n    backdrop-filter:blur(15px);\n    -webkit-backdrop-filter:blur(15px);\n    box-shadow:var(--shadow-md);\n    border:1px solid hsla(var(--shadcn-border) / 0.1);\n    transform:translateY(20px);\n    transition:opacity var(--anim-smooth), transform var(--anim-smooth);\n    pointer-events:none;\n    z-index:9994;\n    font-size:15px;\n    font-weight:500;\n}\n\n.tm-indicator-base.visible{\n    opacity:1;\n    transform:translateY(0);\n    pointer-events:auto;\n}\n.tm-pause-indicator{\n    width:80px;\n    height:80px;\n}\n.tm-playback-rate-indicator{\n    top:30%;\n    border-radius:var(--shadcn-radius);\n    padding:10px 16px;\n    font-size:16px;\n    font-weight:bold;\n}\n.tm-progress-row{\n    display:flex;\n    flex-direction:column;\n    width:100%;\n    box-sizing:border-box;\n}\n\n.tm-seek-control-row{\n    display:flex;\n    flex-direction:row;\n    justify-content:space-between;\n    width:100%;\n    box-sizing:border-box;\n}\n\n.tm-loop-control-row{\n    display:flex;\n    justify-content:space-between;\n    align-items:center;\n    width:100%;\n    box-sizing:border-box;\n    position:relative;\n}\n\n.tm-playback-control-row{\n    display:flex;\n    justify-content:space-between;\n    align-items:center;\n    position:relative;\n    width:100%;\n    max-height:45px;\n    height:45px;\n    border-radius:8px;\n    box-sizing:border-box;\n}\n.tm-left-controls, .tm-center-controls, .tm-right-controls{\n    flex:1;\n    display:flex;\n    height:100%;\n    align-items:center;\n}\n\n.tm-left-controls{\n    justify-content:flex-start;\n}\n\n.tm-center-controls{\n    justify-content:center;\n}\n\n.tm-right-controls{\n    justify-content:flex-end;\n}\n.tm-time-display{\n    display:flex;\n    justify-content:space-between;\n    color:hsl(var(--shadcn-foreground) / 0.9);\n    font-size:12px;\n    margin-top:-2px;\n    font-variant-numeric:tabular-nums;\n    gap:8px;\n}\n\n.tm-time-display-container{\n    display:flex;\n    justify-content:space-between;\n    width:100%;\n    padding:0px 1px;\n    margin-bottom:4px;\n}\n\n.tm-current-time, .tm-total-duration{\n    color:hsl(var(--shadcn-card-foreground) / 0.9);\n    font-size:0.8rem;\n    min-width:60px;\n    font-variant-numeric:tabular-nums;\n    font-weight:400;\n    line-height:1;\n}\n\n.tm-current-time{\n    text-align:left;\n}\n\n.tm-total-duration{\n    text-align:right;\n}\n\n.tm-loop-control{\n    display:flex;\n    align-items:center;\n    gap:6px;\n}\n\n.tm-start-time-container, .tm-end-time-container{\n    display:flex;\n    align-items:center;\n    background-color:hsl(var(--shadcn-secondary) / 0.5);\n    border:1px solid hsl(var(--shadcn-border) / 0.1);\n    border-radius:6px;\n    padding:4px 4px;\n    cursor:pointer;\n    transition:all 0.2s ease;\n}\n.tm-start-time-container:hover{\n    background-color:hsl(var(--shadcn-green) / 0.1);\n    border-color:hsl(var(--shadcn-green) / 0.3);\n    transform:translateY(-1px);\n}\n\n.tm-end-time-container:hover{\n    background-color:hsl(var(--shadcn-orange) / 0.1);\n    border-color:hsl(var(--shadcn-orange) / 0.3);\n    transform:translateY(-1px);\n}\n\n.tm-set-loop-start-label, .tm-set-loop-end-label{\n    font-size:1rem;\n    font-weight:600;\n    padding:0px 4px;\n    display:flex;\n    align-items:center;\n    justify-content:center;\n}\n.tm-set-loop-start-label{\n    color:hsl(var(--shadcn-green));\n}\n.tm-set-loop-end-label{\n    color:hsl(var(--shadcn-orange));\n}\n\n.tm-loop-toggle-button{\n    display:flex;\n    align-items:center;\n    background-color:hsl(var(--shadcn-secondary) / 0.5);\n    border:1px solid hsl(var(--shadcn-border) / 0.1);\n    border-radius:6px;\n    padding:4px 8px;\n    font-size:0.875rem;\n    cursor:pointer;\n    transition:all 0.2s ease;\n    font-weight:500;\n    gap:6px;\n    color:hsl(var(--shadcn-foreground));\n}\n.tm-loop-toggle-label{\n    font-size:1rem;\n    font-weight:600;\n    padding:0px 4px;\n    display:flex;\n    align-items:center;\n    justify-content:center;\n    color:hsl(var(--shadcn-muted-foreground) / 0.9);\n    transition:color 0.2s ease;\n}\n.tm-loop-toggle-label.active{\n    color:hsl(var(--shadcn-red));\n}\n.tm-loop-toggle-button.active{\n    background-color:hsl(var(--shadcn-red) / 0.1);\n    border-color:hsl(var(--shadcn-red) / 0.3);\n}\n\n.tm-loop-toggle-button:not(.active){\n    background-color:hsl(var(--shadcn-secondary) / 0.5);\n    border-color:hsl(var(--shadcn-border) / 0.1);\n}\n\n.tm-loop-toggle-button:active{\n    transform:scale(0.98);\n}\n\n.tm-loop-indicator-circle{\n    transition:fill 0.2s ease;\n}\n\n.tm-loop-toggle-button.active .tm-loop-indicator-circle{\n    fill:hsl(var(--shadcn-red));\n}\n.tm-rewind-group, .tm-forward-group{\n    display:flex;\n    flex-direction:column;\n    width:50%;\n    gap:8px;\n    align-items:center;\n}\n\n.tm-rewind-buttons-container{\n    display:flex;\n    flex-direction:row-reverse;\n    flex-wrap:wrap;\n    width:100%;\n    justify-content:flex-end;\n    align-content:flex-start;\n    gap:6px;\n}\n\n.tm-forward-buttons-container{\n    display:flex;\n    flex-direction:row;\n    flex-wrap:wrap;\n    width:100%;\n    justify-content:flex-end;\n    align-content:flex-start;\n    gap:6px;\n}\n.tm-loop-start-position, .tm-loop-end-position{\n    color:hsl(var(--shadcn-muted-foreground));\n    font-size:0.875rem;\n    min-width:70px;\n    text-align:center;\n    display:inline-block;\n    font-variant-numeric:tabular-nums;\n}\n.tm-time-control-button{\n    background-color:hsl(var(--shadcn-secondary) / 0.5);\n    color:hsl(var(--shadcn-secondary-foreground));\n    border:1px solid hsl(var(--shadcn-border) / 0.1);\n    border-radius:var(--shadcn-radius-sm);\n    padding:0;\n    font-size:0.75rem;\n    cursor:pointer;\n    transition:all 0.2s cubic-bezier(.25,.8,.25,1);\n    white-space:nowrap;\n    font-weight:500;\n    box-shadow:0 1px 2px rgba(0,0,0,0.05);\n    width:var(--button-xl);\n    height:var(--button-lg);\n    display:flex;\n    align-items:center;\n    justify-content:center;\n    flex:0 0 auto;\n}\n\n.tm-time-control-button:hover{\n    background-color:hsl(var(--shadcn-accent) / 0.6);\n    transform:translateY(-1px);\n    box-shadow:0 2px 4px rgba(0,0,0,0.1);\n}\n\n.tm-time-control-button:active{\n    transform:scale(0.95);\n    box-shadow:none;\n}\n\n.tm-time-control-button-active{\n    transform:scale(0.95);\n    box-shadow:none;\n}\n\n.tm-time-control-button-after-active{\n    transform:none;\n    box-shadow:0 2px 5px rgba(0, 0, 0, 0.15);\n}\n\n.tm-time-control-button-inner{\n    display:flex;\n    align-items:center;\n    justify-content:center;\n}\n\n.tm-rewind-icon{\n    margin-right:-2px;\n}\n\n.tm-forward-icon{\n    margin-left:-2px;\n}\n\n.tm-time-text-margin-left{\n    margin-left:2px;\n}\n\n.tm-time-text-margin-right{\n    margin-right:2px;\n}\n.tm-control-button-hover{\n    background-color:hsl(var(--shadcn-accent) / 0.3);\n    transform:none;\n}\n\n.tm-control-button-default{\n    background-color:hsl(var(--shadcn-secondary) / 0.5);\n    transform:none;\n}\n.tm-control-buttons{\n    position:absolute;\n    bottom:calc(10px + env(safe-area-inset-bottom, 0px));\n    left:50%;\n    transform:translateX(-50%);\n    width:95%;\n    max-width:700px;\n    min-width:350px;\n    background-color:hsla(var(--shadcn-card) / 0.8);\n    backdrop-filter:blur(8px);\n    -webkit-backdrop-filter:blur(8px);\n    z-index:9991;\n    padding:12px;\n    padding-bottom:12px;\n    border-radius:12px;\n    border:1px solid hsla(var(--shadcn-border) / 0.1);\n    box-shadow:0 2px 10px rgba(0, 0, 0, 0.2);\n    transition:opacity 0.3s ease, transform 0.3s ease;\n    gap:10px;\n    display:flex;\n    flex-direction:column;\n    align-items:center;\n    justify-content:center;\n}\nbody.controls-hidden .tm-player-container .tm-control-buttons{\n    opacity:0;\n    transform:translateX(-50%) translateY(20px);\n    pointer-events:none;\n}\nbody:not(.controls-hidden) .tm-player-container .tm-control-buttons{\n    opacity:1;\n    transform:translateX(-50%) translateY(0);\n    pointer-events:auto;\n}\nbody.controls-hidden .tm-player-container .tm-button-container{\n    opacity:0;\n    transform:translateY(-20px);\n    pointer-events:none;\n}\nbody:not(.controls-hidden) .tm-player-container .tm-button-container{\n    opacity:1;\n    transform:translateY(0);\n    pointer-events:auto;\n}\n.tm-control-button{\n    position:relative;\n    width:var(--button-md);\n    height:var(--button-md);\n    border-radius:calc(var(--button-md) / 2);\n    background-color:hsla(var(--shadcn-secondary) / 0.6);\n    color:hsl(var(--shadcn-secondary-foreground));\n    border:1px solid hsla(var(--shadcn-border) / 0.1);\n    display:flex;\n    align-items:center;\n    justify-content:center;\n    cursor:pointer;\n    transition:all var(--anim-quick);\n}\n\n.tm-control-button:hover{\n    background-color:hsla(var(--shadcn-accent) / 0.7);\n    transform:translateY(-2px);\n    box-shadow:var(--shadow-sm);\n}\n\n.tm-control-button:active{\n    transform:scale(0.95);\n    box-shadow:none;\n}\n\n.tm-control-button.active{\n    background-color:hsla(var(--shadcn-blue) / 0.7);\n    color:hsl(var(--shadcn-blue-foreground));\n    box-shadow:0 0 0 2px hsla(var(--shadcn-blue) / 0.3);\n}\n\n.tm-control-button svg,\n.tm-control-button img{\n    width:16px;\n    height:16px;\n}\n.tm-control-row{\n    display:flex;\n    justify-content:center;\n    align-items:center;\n    gap:8px;\n    margin-top:4px;\n    opacity:1;\n    transition:opacity var(--anim-quick), height var(--anim-quick);\n    height:auto;\n    overflow:hidden;\n}\n\n.tm-control-row.hidden{\n    opacity:0;\n    height:0;\n    margin:0;\n}\n.tm-time-control-button-hover{\n    background-color:hsl(var(--shadcn-accent) / 0.6);\n    transform:none;\n    box-shadow:0 2px 4px rgba(0,0,0,0.1);\n}\n\n.tm-time-control-button-active{\n    transform:scale(0.95);\n    box-shadow:none;\n}\n\n.tm-time-control-button-default{\n    transform:translateY(0);\n    box-shadow:0 1px 2px rgba(0,0,0,0.05);\n}\n\n.tm-time-control-button-after-active{\n    transform:none;\n    box-shadow:0 2px 5px rgba(0, 0, 0, 0.15);\n}\n@media screen and (orientation: landscape){\n    .tm-video-container{\n        width:100%;\n        height:100vh !important;\n        max-height:100vh !important;\n        min-height:auto !important;\n        margin:0;\n        padding:0;\n        padding-left:env(safe-area-inset-left, 16px);\n        padding-right:env(safe-area-inset-right, 16px);\n        border-radius:0;\n        box-shadow:none;\n        display:flex;\n        justify-content:center;\n        align-items:center;\n        background-color:black;\n    }\n    .tm-video-wrapper{\n        width:100%;\n        height:100%;\n        border-radius:0;\n        display:flex;\n        justify-content:center;\n        align-items:center;\n        overflow:hidden;\n    }\n    .tm-video-wrapper video{\n        width:100% !important;\n        height:auto !important;\n        max-height:100vh !important;\n        object-fit:contain !important;\n    }\n    .tm-video-wrapper.video-portrait video{\n        width:auto !important;\n        height:100% !important;\n        max-width:100% !important;\n    }\n    .tm-button-container{\n        position:absolute;\n        top:0;\n        left:0;\n        right:0;\n        z-index:9995;\n        background-color:transparent;\n        padding:16px;\n        padding-top:calc(env(safe-area-inset-top, 8px) + 8px);\n        display:flex;\n        justify-content:space-between;\n        transition:opacity 0.3s ease, transform 0.3s ease;\n    }\n    .tm-video-overlay.controls-hidden .tm-button-container{\n        opacity:0;\n        transform:translateY(-20px);\n        pointer-events:none;\n    }\n    .tm-video-overlay .tm-button-container{\n        opacity:1;\n        transform:translateY(0);\n        pointer-events:auto;\n    }\n    .tm-settings-button{\n        display:flex;\n        background-color:hsla(var(--shadcn-secondary) / 0.3);\n        backdrop-filter:blur(4px);\n        -webkit-backdrop-filter:blur(4px);\n    }\n    .tm-close-button{\n        background-color:hsla(var(--shadcn-secondary) / 0.3);\n        backdrop-filter:blur(4px);\n        -webkit-backdrop-filter:blur(4px);\n    }\n    .tm-control-buttons{\n        position:absolute;\n        bottom:calc(10px + env(safe-area-inset-bottom, 0px));\n        left:50%;\n        transform:translateX(-50%);\n        width:90%;\n        max-width:700px;\n        min-width:350px;\n        background-color:hsla(var(--shadcn-card) / 0.3);\n        backdrop-filter:blur(8px);\n        -webkit-backdrop-filter:blur(8px);\n        z-index:9994;\n        padding:12px;\n        padding-bottom:12px;\n        border-radius:12px;\n        border:1px solid hsla(var(--shadcn-border) / 0.1);\n        box-shadow:0 2px 10px rgba(0, 0, 0, 0.2);\n        transition:opacity 0.3s ease, transform 0.3s ease;\n    }\n    .tm-video-overlay.controls-hidden .tm-control-buttons{\n        opacity:0;\n        transform:translateX(-50%) translateY(20px);\n        pointer-events:none;\n    }\n    .tm-video-overlay .tm-control-buttons{\n        opacity:1;\n        transform:translateX(-50%) translateY(0);\n        pointer-events:auto;\n    }\n    .tm-video-overlay{\n        background-color:black;\n        backdrop-filter:none;\n        -webkit-backdrop-filter:none;\n    }\n    .tm-floating-button{\n        bottom:30px;\n        left:50%;\n        transform:translateX(-50%);\n        padding:0;\n        width:calc(var(--button-xl));\n        height:calc(var(--button-xl));\n    }\n}\n.tm-time-indicator{\n    position:absolute;\n    background-color:hsla(var(--shadcn-card) / 0.8);\n    color:hsl(var(--shadcn-card-foreground));\n    padding:4px 8px;\n    border-radius:4px;\n    font-size:12px;\n    font-weight:500;\n    pointer-events:none;\n    z-index:9995;\n    opacity:0;\n    transform:translateY(-8px);\n    transition:opacity 0.2s, transform 0.2s;\n    box-shadow:0 2px 8px rgba(0, 0, 0, 0.2);\n    border:1px solid hsla(var(--shadcn-border) / 0.1);\n    backdrop-filter:blur(8px);\n    -webkit-backdrop-filter:blur(8px);\n}\n.tm-volume-control{\n    display:flex;\n    align-items:center;\n    gap:8px;\n    height:40px;\n    padding:0 8px;\n    background-color:transparent;\n    transition:opacity 0.3s ease;\n}\n.tm-volume-control-no-slider{\n    width:auto;\n    padding:0;\n}\n\n.tm-volume-control-no-slider .tm-volume-button{\n    margin:0 8px;\n}\n.tm-volume-button{\n    display:flex;\n    align-items:center;\n    justify-content:center;\n    width:32px;\n    height:32px;\n    padding:4px;\n    border:none;\n    border-radius:50%;\n    background:transparent;\n    color:#fff;\n    cursor:pointer;\n    transition:background-color 0.2s ease;\n}\n\n.tm-volume-button:hover{\n    background-color:hsla(var(--shadcn-secondary) / 0.2);\n}\n\n.tm-volume-button svg{\n    width:20px;\n    height:20px;\n}\n.tm-volume-slider-container{\n    position:relative;\n    width:0;\n    height:40px;\n    display:flex;\n    align-items:center;\n    overflow:hidden;\n    transition:width 0.3s ease;\n    opacity:0;\n}\n@media (hover: hover){\n    .tm-volume-control:hover .tm-volume-slider-container{\n        width:80px;\n        opacity:1;\n    }\n}\n.tm-volume-control.dragging .tm-volume-slider-container{\n    width:80px;\n    opacity:1;\n}\n.tm-volume-slider-track{\n    position:relative;\n    width:100%;\n    height:4px;\n    background-color:hsla(var(--shadcn-secondary) / 0.3);\n    border-radius:2px;\n    cursor:pointer;\n}\n.tm-volume-slider-level{\n    position:absolute;\n    left:0;\n    top:0;\n    height:100%;\n    background-color:#fff;\n    border-radius:2px;\n    pointer-events:none;\n    transition:width 0.1s ease;\n}\n.tm-volume-value{\n    position:absolute;\n    top:-24px;\n    left:50%;\n    transform:translateX(-50%);\n    background-color:hsla(var(--shadcn-secondary) / 0.8);\n    color:#fff;\n    padding:2px 6px;\n    border-radius:4px;\n    font-size:12px;\n    opacity:0;\n    transition:opacity 0.2s ease;\n    pointer-events:none;\n    backdrop-filter:blur(4px);\n}\n.tm-volume-control.dragging .tm-volume-value{\n    opacity:1;\n}\n@media (hover: none){\n    .tm-volume-control{\n        touch-action:none;\n    }\n    \n    .tm-volume-slider-track{\n        height:6px;\n    }\n    \n    .tm-volume-button{\n        width:40px;\n        height:40px;\n    }\n}\n@media (prefers-color-scheme: dark){\n    .tm-volume-slider-level{\n        background-color:hsl(var(--shadcn-primary));\n    }\n    \n    .tm-volume-button svg{\n        stroke:hsl(var(--shadcn-primary));\n    }\n}\n.tm-toggle-switch{\n    position:relative;\n    display:inline-block;\n    width:40px;\n    height:24px;\n}\n\n.tm-toggle-switch input{\n    opacity:0;\n    width:0;\n    height:0;\n}\n\n.tm-toggle-slider{\n    position:absolute;\n    cursor:pointer;\n    top:0;\n    left:0;\n    right:0;\n    bottom:0;\n    background-color:hsla(var(--shadcn-muted) / 0.7);\n    border-radius:12px;\n    transition:var(--anim-quick);\n}\n\n.tm-toggle-slider:before{\n    position:absolute;\n    content:"";\n    height:20px;\n    width:20px;\n    left:2px;\n    bottom:2px;\n    background-color:hsl(var(--shadcn-foreground));\n    border-radius:50%;\n    transition:var(--anim-quick);\n    box-shadow:0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.tm-toggle-slider.checked{\n    background-color:hsl(var(--shadcn-blue));\n}\n\n.tm-toggle-slider.checked:before{\n    transform:translateX(16px);\n}\n.tm-playback-rate-slider{\n    display:flex;\n    align-items:center;\n    margin-left:0;\n    height:30px;\n    width:100%;\n    max-width:110px;\n    background:hsl(var(--shadcn-card) / 0.85);\n    border-radius:6px;\n    backdrop-filter:blur(8px);\n    -webkit-backdrop-filter:blur(8px);\n    position:relative;\n    overflow:hidden;\n    box-shadow:0 1px 3px rgba(0, 0, 0, 0.08);\n    transition:box-shadow 0.2s ease, transform 0.2s ease;\n    cursor:pointer;\n}\n\n.tm-playback-rate-slider:hover{\n    box-shadow:0 2px 6px rgba(0, 0, 0, 0.1);\n    transform:translateY(-1px);\n}\n\n.tm-playback-rate-slider.dragging{\n    box-shadow:0 1px 4px rgba(0, 0, 0, 0.12);\n    background:hsla(var(--shadcn-card) / 0.9);\n}\n\n.tm-slider-container{\n    width:100%;\n    height:100%;\n    background:hsla(var(--shadcn-secondary) / 0.5);\n    position:relative;\n    overflow:hidden;\n    display:flex;\n    align-items:center;\n}\n\n.tm-slider-level{\n    position:absolute;\n    top:0;\n    left:0;\n    height:100%;\n    background:hsl(0 0% 50% / 0.8);\n    width:50%;\n    transform-origin:left;\n    transition:width 0.15s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n    z-index:1;\n}\n\n.tm-slider-text{\n    display:flex;\n    justify-content:space-between;\n    width:100%;\n    padding:0 10px;\n    z-index:2;\n    position:relative;\n}\n.tm-speed-label{\n    color:hsl(var(--shadcn-muted-foreground));\n    font-size:12px;\n    font-weight:400;\n    transition:color var(--anim-quick);\n}\n\n.tm-playback-rate-slider:hover .tm-speed-label{\n    color:hsl(var(--shadcn-foreground));\n}\n\n.tm-speed-value{\n    color:hsl(var(--shadcn-foreground));\n    font-size:12px;\n    font-weight:600;\n    font-variant-numeric:tabular-nums;\n}\n.tm-speed-value.fast{\n    color:hsl(var(--shadcn-orange));\n}\n\n.tm-speed-value.slow{\n    color:hsl(var(--shadcn-blue));\n}\n\n.tm-speed-value.normal{\n    color:hsl(var(--shadcn-foreground));\n}\n.tm-progress-controls{\n    position:relative;\n    width:100%;\n    bottom:0;\n    left:0;\n    right:0;\n    display:flex;\n    flex-direction:column;\n    z-index:9991;\n    border-radius:0 0 var(--shadcn-radius-lg) var(--shadcn-radius-lg);\n    font-family:var(--font-sans);\n    transition:opacity var(--anim-smooth);\n}\n.tm-progress-bar-container{\n    position:relative;\n    height:12px;\n    display:flex;\n    align-items:center;\n    cursor:pointer;\n    user-select:none;\n    -webkit-user-select:none;\n    -moz-user-select:none;\n    -ms-user-select:none;\n    touch-action:none;\n}\n.tm-progress-bar{\n    width:100%;\n    height:8px;\n    background-color:hsla(var(--shadcn-muted) / 0.5);\n    border-radius:8px;\n    overflow:hidden;\n    position:relative;\n    transition:height 0.15s;\n}\n\n.tm-progress-bar:hover{\n    height:6px;\n}\n.tm-progress-bar-expanded{\n    height:16px !important;\n}\n\n.tm-progress-bar-normal{\n    height:8px !important;\n}\n.tm-progress-bar.tm-dragging{\n    height:16px !important;\n    background-color:hsla(var(--shadcn-muted-foreground) / 0.7);\n    cursor:grabbing;\n}\n.tm-progress-bar-container:has(.tm-dragging){\n    cursor:grabbing;\n}\n.tm-progress-indicator{\n    height:100%;\n    width:0%;\n    background-color:hsla(var(--shadcn-muted) / 0.8);\n    border-radius:0;\n    position:absolute;\n    left:0;\n    top:0;\n    transition:width 0.1s linear;\n    overflow:hidden;\n}\n.tm-dragging .tm-progress-indicator{\n    background-color:hsl(var(--shadcn-card-foreground));\n    box-shadow:none;\n    transition:none;\n}\n.tm-progress-handle{\n    width:12px;\n    height:12px;\n    background-color:hsl(var(--shadcn-blue));\n    border:2px solid hsl(var(--shadcn-card));\n    border-radius:50%;\n    position:absolute;\n    top:50%;\n    left:0%;\n    transform:translate(0, -50%);\n    z-index:2;\n    opacity:1;\n    transition:opacity 0.15s, width 0.15s, height 0.15s, box-shadow 0.15s;\n    box-shadow:0 0 0 4px hsl(var(--shadcn-blue) / 0.2);\n    cursor:grab;\n}\n\n.tm-progress-handle:hover,\n.tm-progress-handle.dragging{\n    transform:translate(0, -50%) scale(1.1);\n    box-shadow:0 0 0 6px hsl(var(--shadcn-blue) / 0.3);\n}\n.tm-settings-label{\n    cursor:pointer;\n    flex:1;\n    font-family:var(--font-sans);\n    font-size:14px;\n    color:hsl(var(--shadcn-foreground));\n}\n.tm-playback-control-row button{\n    display:flex;\n    align-items:center;\n    justify-content:center;\n    width:36px;\n    height:36px;\n    padding:0px;\n    border:none;\n    border-radius:50%;\n    background-color:transparent;\n    color:#fff;\n    cursor:pointer;\n    transition:all 0.15s ease;\n    -webkit-tap-highlight-color:transparent;\n}\n\n.tm-playback-control-row button:hover{\n    background-color:hsla(var(--shadcn-secondary) / 0.15);\n    transform:scale(1.05);\n}\n\n.tm-playback-control-row button:active{\n    transform:scale(0.95);\n}\n\n.tm-playback-control-row button svg{\n    width:22px;\n    height:22px;\n    stroke:currentColor;\n    stroke-width:2;\n    fill:none;\n}\n@media (hover: none){\n    .tm-playback-control-row button{\n        width:36px;\n        height:36px;\n    }\n}\n@media (prefers-color-scheme: dark){\n    .tm-playback-control-row button svg{\n        stroke:hsl(var(--shadcn-primary));\n    }\n} `, "" ]);
      const b = y;
    },
    "825": r => {
      function apply(r, o, a) {
        var l = "";
        if (a.supports) {
          l += "@supports (".concat(a.supports, ") {");
        }
        if (a.media) {
          l += "@media ".concat(a.media, " {");
        }
        var u = "undefined" !== typeof a.layer;
        if (u) {
          l += "@layer".concat(a.layer.length > 0 ? " ".concat(a.layer) : "", " {");
        }
        l += a.css;
        if (u) {
          l += "}";
        }
        if (a.media) {
          l += "}";
        }
        if (a.supports) {
          l += "}";
        }
        var p = a.sourceMap;
        if (p && "undefined" !== typeof btoa) {
          l += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(p)))), " */");
        }
        o.styleTagTransform(l, r, o.options);
      }
      function removeStyleElement(r) {
        if (null === r.parentNode) {
          return false;
        }
        r.parentNode.removeChild(r);
      }
      function domAPI(r) {
        if ("undefined" === typeof document) {
          return {
            "update": function update() {},
            "remove": function remove() {}
          };
        }
        var o = r.insertStyleElement(r);
        return {
          "update": function update(a) {
            apply(o, r, a);
          },
          "remove": function remove() {
            removeStyleElement(o);
          }
        };
      }
      r.exports = domAPI;
    },
    "964": (r, o, a) => {
      a.r(o);
      a.d(o, {
        "default": () => V
      });
      var l = a(72);
      var u = a.n(l);
      var p = a(825);
      var v = a.n(p);
      var y = a(659);
      var b = a.n(y);
      var k = a(56);
      var C = a.n(k);
      var _ = a(540);
      var P = a.n(_);
      var S = a(113);
      var E = a.n(S);
      var M = a(703);
      var L = {};
      L.styleTagTransform = E();
      L.setAttributes = C();
      L.insert = b().bind(null, "head");
      L.domAPI = v();
      L.insertStyleElement = P();
      var T = u()(M.A, L);
      const V = M.A && M.A.locals ? M.A.locals : void 0;
    }
  };
  var o = {};
  function __webpack_require__(a) {
    var l = o[a];
    if (void 0 !== l) {
      return l.exports;
    }
    var u = o[a] = {
      "id": a,
      "exports": {}
    };
    r[a](u, u.exports, __webpack_require__);
    return u.exports;
  }
  (() => {
    __webpack_require__.n = r => {
      var o = r && r.__esModule ? () => r["default"] : () => r;
      __webpack_require__.d(o, {
        "a": o
      });
      return o;
    };
  })();
  (() => {
    __webpack_require__.d = (r, o) => {
      for (var a in o) {
        if (__webpack_require__.o(o, a) && !__webpack_require__.o(r, a)) {
          Object.defineProperty(r, a, {
            "enumerable": true,
            "get": o[a]
          });
        }
      }
    };
  })();
  (() => {
    __webpack_require__.o = (r, o) => Object.prototype.hasOwnProperty.call(r, o);
  })();
  (() => {
    __webpack_require__.r = r => {
      if ("undefined" !== typeof Symbol && Symbol.toStringTag) {
        Object.defineProperty(r, Symbol.toStringTag, {
          "value": "Module"
        });
      }
      Object.defineProperty(r, "__esModule", {
        "value": true
      });
    };
  })();
  (() => {
    __webpack_require__.nc = void 0;
  })();
  function initCSSVariables() {
    __webpack_require__(964);
  }
  function _typeof(r) {
    return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, _typeof(r);
  }
  function _classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, _toPropertyKey(l.key), l);
    }
  }
  function _createClass(r, o, a) {
    return o && _defineProperties(r.prototype, o), a && _defineProperties(r, a), Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function _defineProperty(r, o, a) {
    return (o = _toPropertyKey(o)) in r ? Object.defineProperty(r, o, {
      "value": a,
      "enumerable": !0,
      "configurable": !0,
      "writable": !0
    }) : r[o] = a, r;
  }
  function _toPropertyKey(r) {
    var o = _toPrimitive(r, "string");
    return "symbol" == _typeof(o) ? o : o + "";
  }
  function _toPrimitive(r, o) {
    if ("object" != _typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != _typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var a = function() {
    function Utils() {
      _classCallCheck(this, Utils);
    }
    return _createClass(Utils, null, [ {
      "key": "throttle",
      "value": function throttle(r) {
        var o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 200;
        var a = 0;
        return function() {
          var l = Date.now();
          if (l - a < o) {
            return;
          }
          a = l;
          for (var u = arguments.length, p = new Array(u), v = 0; v < u; v++) {
            p[v] = arguments[v];
          }
          return r.apply(this, p);
        };
      }
    }, {
      "key": "debounce",
      "value": function debounce(r) {
        var o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 200;
        var a = null;
        return function() {
          var l = this;
          for (var u = arguments.length, p = new Array(u), v = 0; v < u; v++) {
            p[v] = arguments[v];
          }
          if (a) {
            clearTimeout(a);
          }
          a = setTimeout((function() {
            r.apply(l, p);
            a = null;
          }), o);
        };
      }
    }, {
      "key": "isIOS",
      "value": function isIOS() {
        if (null === this._cache.isIOS) {
          this._cache.isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
        }
        return this._cache.isIOS;
      }
    }, {
      "key": "isSafari",
      "value": function isSafari() {
        return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
      }
    }, {
      "key": "isPortrait",
      "value": function isPortrait() {
        return window.innerHeight > window.innerWidth;
      }
    }, {
      "key": "checkDeviceAndOrientation",
      "value": function checkDeviceAndOrientation() {
        return this.isPortrait();
      }
    }, {
      "key": "getSafeAreaInsets",
      "value": function getSafeAreaInsets() {
        var r = 44;
        var o = 34;
        var a = 16;
        var l = window.getComputedStyle(document.documentElement);
        return {
          "top": parseInt(l.getPropertyValue("--sat") || l.getPropertyValue("--safe-area-inset-top") || "0", 10) || r,
          "right": parseInt(l.getPropertyValue("--sar") || l.getPropertyValue("--safe-area-inset-right") || "0", 10) || a,
          "bottom": parseInt(l.getPropertyValue("--sab") || l.getPropertyValue("--safe-area-inset-bottom") || "0", 10) || o,
          "left": parseInt(l.getPropertyValue("--sal") || l.getPropertyValue("--safe-area-inset-left") || "0", 10) || a
        };
      }
    }, {
      "key": "createElementWithStyle",
      "value": function createElementWithStyle(r, o, a) {
        var l = document.createElement(r);
        if (o) {
          l.className = o;
        }
        if (a) {
          l.style.cssText = a;
        }
        return l;
      }
    }, {
      "key": "createSVGIcon",
      "value": function createSVGIcon(r) {
        var o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 24;
        var a = document.createElementNS("http://www.w3.org/2000/svg", "svg");
        a.setAttribute("width", o);
        a.setAttribute("height", o);
        a.setAttribute("viewBox", "0 0 24 24");
        a.setAttribute("fill", "none");
        a.setAttribute("stroke", "currentColor");
        a.setAttribute("stroke-width", "2");
        a.setAttribute("stroke-linecap", "round");
        a.setAttribute("stroke-linejoin", "round");
        var l = document.createElementNS("http://www.w3.org/2000/svg", "path");
        l.setAttribute("d", r);
        a.appendChild(l);
        return a;
      }
    }, {
      "key": "findVideoElement",
      "value": function findVideoElement() {
        var r;
        for (var o = 0, a = [ "#player video", "#video video", "div.plyr__video-wrapper video", ".video-js video", "#player > video", "#video-player > video", "video[preload]:not([muted])", "video[src]", "video.video-main", "main video", "video" ]; o < a.length; o++) {
          var l = a[o];
          var u = document.querySelectorAll(l);
          if (u.length > 0) {
            return u[0];
          }
        }
        return null;
      }
    }, {
      "key": "formatTime",
      "value": function formatTime(r) {
        var o = Math.floor(r / 3600);
        var a = Math.floor(r % 3600 / 60);
        var l = Math.floor(r % 60);
        if (o > 0) {
          return "".concat(o, ":").concat(a < 10 ? "0" : "").concat(a, ":").concat(l < 10 ? "0" : "").concat(l);
        }
        return "".concat(a, ":").concat(l < 10 ? "0" : "").concat(l);
      }
    }, {
      "key": "updateSafariThemeColor",
      "value": function updateSafariThemeColor() {
        var r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "#000000";
        var o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;
        if (!this.isSafari() && !this.isIOS()) {
          return;
        }
        var a = document.querySelector('meta[name="theme-color"]');
        if (o && a && !this._theme.original.dark) {
          this._theme.original.dark = a.content;
        }
        if (!a) {
          (a = document.createElement("meta")).name = "theme-color";
          document.head.appendChild(a);
        }
        a.content = r;
      }
    }, {
      "key": "restoreSafariThemeColor",
      "value": function restoreSafariThemeColor() {
        if (this._theme.original.dark) {
          this.updateSafariThemeColor(this._theme.original.dark);
        } else {
          var r = document.querySelector('meta[name="theme-color"]');
          if (r && r.parentNode) {
            r.parentNode.removeChild(r);
          }
        }
      }
    } ]);
  }();
  _defineProperty(a, "_cache", {
    "isIOS": null,
    "safeAreaInsets": null,
    "lastOrientation": null
  });
  _defineProperty(a, "_theme", {
    "original": {
      "light": null,
      "dark": null
    }
  });
  function PlayerCore_typeof(r) {
    return PlayerCore_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, PlayerCore_typeof(r);
  }
  function ownKeys(r, o) {
    var a = Object.keys(r);
    if (Object.getOwnPropertySymbols) {
      var l = Object.getOwnPropertySymbols(r);
      o && (l = l.filter((function(o) {
        return Object.getOwnPropertyDescriptor(r, o).enumerable;
      }))), a.push.apply(a, l);
    }
    return a;
  }
  function _objectSpread(r) {
    for (var o = 1; o < arguments.length; o++) {
      var a = null != arguments[o] ? arguments[o] : {};
      o % 2 ? ownKeys(Object(a), !0).forEach((function(o) {
        PlayerCore_defineProperty(r, o, a[o]);
      })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(r, Object.getOwnPropertyDescriptors(a)) : ownKeys(Object(a)).forEach((function(o) {
        Object.defineProperty(r, o, Object.getOwnPropertyDescriptor(a, o));
      }));
    }
    return r;
  }
  function PlayerCore_defineProperty(r, o, a) {
    return (o = PlayerCore_toPropertyKey(o)) in r ? Object.defineProperty(r, o, {
      "value": a,
      "enumerable": !0,
      "configurable": !0,
      "writable": !0
    }) : r[o] = a, r;
  }
  function PlayerCore_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function PlayerCore_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, PlayerCore_toPropertyKey(l.key), l);
    }
  }
  function PlayerCore_createClass(r, o, a) {
    return o && PlayerCore_defineProperties(r.prototype, o), a && PlayerCore_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function PlayerCore_toPropertyKey(r) {
    var o = PlayerCore_toPrimitive(r, "string");
    return "symbol" == PlayerCore_typeof(o) ? o : o + "";
  }
  function PlayerCore_toPrimitive(r, o) {
    if ("object" != PlayerCore_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != PlayerCore_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var l = function() {
    function PlayerCore() {
      var r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
      PlayerCore_classCallCheck(this, PlayerCore);
      this.defaultPlaybackRate = 1;
      this.targetVideo = null;
      this.videoState = {
        "currentTime": 0,
        "isPlaying": false,
        "volume": 1,
        "playbackRate": 1
      };
      this.options = Object.assign({
        "containerId": "tm-video-container",
        "startLooped": false,
        "startMuted": false
      }, r);
      this.callingButton = this.options.callingButton || null;
      this.initialized = false;
    }
    return PlayerCore_createClass(PlayerCore, [ {
      "key": "init",
      "value": function init() {
        if (this.initialized) {
          return;
        }
        this.cleanupExistingOverlays();
        this.targetVideo = this.findTargetVideo();
        if (!this.targetVideo) {
          if (this.callingButton) {
            this.callingButton.style.display = "flex";
          }
          return;
        }
        this.saveVideoState();
        this.initialized = true;
        return this.targetVideo;
      }
    }, {
      "key": "cleanupExistingOverlays",
      "value": function cleanupExistingOverlays() {
        var r = document.querySelectorAll(".tm-video-overlay");
        if (r.length > 0) {
          r.forEach((function(r) {
            if (r && r.parentNode) {
              r.parentNode.removeChild(r);
            }
          }));
        }
      }
    }, {
      "key": "findTargetVideo",
      "value": function findTargetVideo() {
        var r = null;
        var o;
        for (var a = 0, l = [ "#player video", "#video video", "div.plyr__video-wrapper video", ".video-js video", "#player > video", "#video-player > video", "video[preload]:not([muted])" ]; a < l.length; a++) {
          var u = l[a];
          if (r = document.querySelector(u)) {
            return r;
          }
        }
        var p = Array.from(document.querySelectorAll("video"));
        if (0 === p.length) {
          return null;
        }
        if (1 === p.length) {
          return p[0];
        }
        var v = p.map((function(r) {
          return {
            "element": r,
            "rect": r.getBoundingClientRect()
          };
        })).filter((function(r) {
          return r.rect.width > 50 && r.rect.height > 50;
        })).map((function(r) {
          return _objectSpread(_objectSpread({}, r), {}, {
            "area": r.rect.width * r.rect.height
          });
        })).sort((function(r, o) {
          return o.area - r.area;
        }));
        if (v.length > 0) {
          return v[0].element;
        }
        return p[0];
      }
    }, {
      "key": "saveVideoState",
      "value": function saveVideoState() {
        if (!this.targetVideo) {
          return;
        }
        this.originalParent = this.targetVideo.parentNode;
        this.originalIndex = Array.from(this.originalParent.children).indexOf(this.targetVideo);
        this.videoState = {
          "currentTime": this.targetVideo.currentTime,
          "isPaused": this.targetVideo.paused,
          "videoSrc": this.targetVideo.src,
          "posterSrc": this.targetVideo.poster,
          "wasMuted": this.targetVideo.muted,
          "controls": this.targetVideo.controls
        };
      }
    }, {
      "key": "restoreVideoState",
      "value": function restoreVideoState() {
        try {
          this.targetVideo.playbackRate = this.defaultPlaybackRate;
          this.targetVideo.currentTime = this.videoState.currentTime;
          var r = this.targetVideo.play();
          if (void 0 !== r) {
            r["catch"]((function(r) {}));
          }
        } catch (r) {}
      }
    }, {
      "key": "close",
      "value": function close(r, o, l) {
        if (!r) {
          return;
        }
        this.videoState.currentTime = this.targetVideo.currentTime;
        this.videoState.isPlaying = !this.targetVideo.paused;
        this.videoState.volume = this.targetVideo.volume;
        this.videoState.playbackRate = this.targetVideo.playbackRate;
        if (!this.targetVideo.paused) {
          this.targetVideo.pause();
        }
        if (this.originalParent && this.targetVideo && this.targetVideo.parentNode) {
          if (this.targetVideo.parentNode !== this.originalParent) {
            if (-1 !== this.originalIndex && this.originalParent.childNodes.length > this.originalIndex) {
              this.originalParent.insertBefore(this.targetVideo, this.originalParent.childNodes[this.originalIndex]);
            } else {
              this.originalParent.appendChild(this.targetVideo);
            }
            this.targetVideo.style.width = "";
            this.targetVideo.style.height = "";
            this.targetVideo.style.maxHeight = "";
            this.targetVideo.style.margin = "";
            this.targetVideo.style.position = "";
          }
        }
        if (r.parentNode) {
          r.parentNode.removeChild(r);
        }
        if (l && l.parentNode) {
          l.parentNode.removeChild(l);
        }
        document.body.classList.remove("controls-hidden");
        var u = document.getElementById("tm-fullscreen-style");
        if (u) {
          u.parentNode.removeChild(u);
        }
        this.initialized = false;
        a.restoreSafariThemeColor();
        if (this.callingButton) {
          this.callingButton.style.display = "flex";
        }
      }
    } ]);
  }();
  function UIManager_typeof(r) {
    return UIManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, UIManager_typeof(r);
  }
  function UIManager_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function UIManager_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, UIManager_toPropertyKey(l.key), l);
    }
  }
  function UIManager_createClass(r, o, a) {
    return o && UIManager_defineProperties(r.prototype, o), a && UIManager_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function UIManager_toPropertyKey(r) {
    var o = UIManager_toPrimitive(r, "string");
    return "symbol" == UIManager_typeof(o) ? o : o + "";
  }
  function UIManager_toPrimitive(r, o) {
    if ("object" != UIManager_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != UIManager_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var u = function() {
    function UIManager(r) {
      UIManager_classCallCheck(this, UIManager);
      this.playerCore = r;
      this.targetVideo = r.targetVideo;
      this.overlay = null;
      this.container = null;
      this.playerContainer = null;
      this.videoWrapper = null;
      this.handleContainer = null;
      this.handle = null;
      this.closeBtn = null;
      this.settingsBtn = null;
      this.settingsPanel = null;
      this.buttonContainer = null;
      this.safeArea = {
        "top": 44,
        "bottom": 34
      };
      this.isLandscape = false;
      this.controlsVisible = true;
      this.controlsHideTimeout = null;
      this.isMouseOverControls = false;
      this.loadStyles();
    }
    return UIManager_createClass(UIManager, [ {
      "key": "loadStyles",
      "value": function loadStyles() {}
    }, {
      "key": "createUI",
      "value": function createUI() {
        this.createOverlayAndContainer();
        this.createPlayerContainer();
        this.createVideoWrapper();
        this.createResizeHandle();
        this.createCloseButton();
        this.createSettingsButton();
        this.createButtonContainer();
        this.createSettingsPanel();
        this.setupOrientationListener();
        return {
          "overlay": this.overlay,
          "container": this.container,
          "playerContainer": this.playerContainer,
          "videoWrapper": this.videoWrapper,
          "handleContainer": this.handleContainer,
          "handle": this.handle,
          "closeBtn": this.closeBtn,
          "settingsBtn": this.settingsBtn,
          "settingsPanel": this.settingsPanel,
          "buttonContainer": this.buttonContainer
        };
      }
    }, {
      "key": "createOverlayAndContainer",
      "value": function createOverlayAndContainer() {
        this.overlay = document.createElement("div");
        this.overlay.className = "tm-video-overlay";
        this.overlay.style.zIndex = "9990";
        var r = window.innerWidth * (4 / 5);
        var o = window.innerWidth * (9 / 16);
        this.container = document.createElement("div");
        this.container.className = "tm-video-container";
        this.container.style.height = "".concat(r, "px");
        this.container.style.minHeight = "".concat(o, "px");
      }
    }, {
      "key": "createPlayerContainer",
      "value": function createPlayerContainer() {
        this.playerContainer = document.createElement("div");
        this.playerContainer.className = "tm-player-container";
      }
    }, {
      "key": "createVideoWrapper",
      "value": function createVideoWrapper() {
        var r = this;
        this.videoWrapper = document.createElement("div");
        this.videoWrapper.className = "tm-video-wrapper";
        if (this.targetVideo && this.targetVideo.parentNode) {
          this.targetVideo.parentNode.removeChild(this.targetVideo);
        }
        this.targetVideo.controls = false;
        this.videoWrapper.appendChild(this.targetVideo);
        this.targetVideo.addEventListener("loadedmetadata", (function() {
          r.updateVideoAspectRatio();
        }));
        var o = null;
        var a = false;
        var l = 1;
        var u = function handlePointerDown(u) {
          if (u.target.closest(".tm-control-buttons, .tm-button-container, .tm-control-button, .tm-close-button, .tm-settings-button")) {
            return;
          }
          if (o) {
            clearTimeout(o);
          }
          l = r.playerCore.targetVideo.playbackRate;
          a = false;
          o = setTimeout((function() {
            a = true;
            l = r.playerCore.targetVideo.playbackRate;
            r.playerCore.targetVideo.playbackRate = 3;
            var o = document.createElement("div");
            o.className = "tm-speed-indicator";
            o.textContent = "3x";
            o.style.position = "absolute";
            o.style.top = "50%";
            o.style.left = "50%";
            o.style.transform = "translate(-50%, -50%)";
            o.style.backgroundColor = "rgba(0, 0, 0, 0.7)";
            o.style.color = "white";
            o.style.padding = "8px 16px";
            o.style.borderRadius = "4px";
            o.style.fontSize = "24px";
            o.style.fontWeight = "bold";
            o.style.zIndex = "9999";
            r.videoWrapper.appendChild(o);
            if (window.navigator.vibrate) {
              window.navigator.vibrate(50);
            }
            if (r.playerCore.targetVideo.paused) {
              r.playerCore.targetVideo.play();
            }
          }), 800);
        };
        var p = function handlePointerUp(u) {
          if (o) {
            clearTimeout(o);
            o = null;
          }
          if (a) {
            r.playerCore.targetVideo.playbackRate = l;
            var p = r.videoWrapper.querySelector(".tm-speed-indicator");
            if (p) {
              p.remove();
            }
            u.preventDefault();
            u.stopPropagation();
            a = false;
            return;
          }
        };
        var v = function handlePointerLeave(u) {
          if (o) {
            clearTimeout(o);
            o = null;
          }
          if (a) {
            r.playerCore.targetVideo.playbackRate = l;
            var p = r.videoWrapper.querySelector(".tm-speed-indicator");
            if (p) {
              p.remove();
            }
            a = false;
          }
        };
        this.videoWrapper.addEventListener("mousedown", u);
        this.videoWrapper.addEventListener("mouseup", p);
        this.videoWrapper.addEventListener("mouseleave", v);
        this.videoWrapper.addEventListener("touchstart", u, {
          "passive": true
        });
        this.videoWrapper.addEventListener("touchend", p);
        this.videoWrapper.addEventListener("touchcancel", v);
        this.videoWrapper.addEventListener("click", (function(o) {
          if (a) {
            return;
          }
          if (o.target.closest(".tm-control-buttons, .tm-button-container, .tm-control-button, .tm-close-button, .tm-settings-button")) {
            return;
          }
          var l = function togglePlayPause() {
            if (!r.playerCore.targetVideo) {
              return;
            }
            if (r.playerCore.targetVideo.paused) {
              r.playerCore.targetVideo.play();
            } else {
              r.playerCore.targetVideo.pause();
              if (r.playerCore.controlManager) {
                r.playerCore.controlManager.showPauseIndicator();
              }
            }
            if (r.playerCore.controlManager) {
              r.playerCore.controlManager.updatePlayPauseButton();
            }
          };
          if (r.isLandscape) {
            if (!r.controlsVisible) {
              r.showControls();
              r.autoHideControls();
              return;
            }
            l();
          } else {
            l();
          }
        }));
      }
    }, {
      "key": "createResizeHandle",
      "value": function createResizeHandle() {
        var r = this;
        this.handleContainer = document.createElement("div");
        this.handleContainer.className = "tm-handle-container";
        this.handle = document.createElement("div");
        this.handle.className = "tm-resize-handle";
        this.handle.insertAdjacentHTML("beforeend", '\n            <div style="\n                position: absolute;\n                left: -10px;\n                right: -10px;\n                top: -15px;\n                bottom: -15px;\n                background: transparent;\n            "></div>\n        ');
        this.handle.addEventListener("mouseenter", (function() {
          r.handle.style.opacity = "1";
          r.handle.style.backgroundColor = "hsla(var(--shadcn-foreground) / 0.8)";
        }));
        this.handle.addEventListener("mouseleave", (function() {
          if (!r.isDraggingHandle) {
            r.handle.style.opacity = "0.5";
            r.handle.style.backgroundColor = "hsla(var(--shadcn-foreground) / 0.6)";
          }
        }));
        this.handle.addEventListener("mousedown", (function() {
          r.handle.style.cursor = "grabbing";
          if (window.navigator.vibrate) {
            window.navigator.vibrate(5);
          }
        }));
        document.addEventListener("mouseup", (function() {
          if (!r.isDraggingHandle) {
            r.handle.style.cursor = "grab";
          }
        }));
        this.handle.addEventListener("touchstart", (function() {
          r.handle.style.opacity = "1";
          r.handle.style.backgroundColor = "hsla(var(--shadcn-foreground) / 0.8)";
          if (window.navigator.vibrate) {
            window.navigator.vibrate(5);
          }
        }), {
          "passive": true
        });
        this.handle.addEventListener("touchend", (function() {
          if (!r.isDraggingHandle) {
            r.handle.style.opacity = "0.5";
            r.handle.style.backgroundColor = "hsla(var(--shadcn-foreground) / 0.6)";
          }
        }));
        this.handleContainer.appendChild(this.handle);
      }
    }, {
      "key": "createCloseButton",
      "value": function createCloseButton() {
        var r = this;
        this.closeBtn = document.createElement("button");
        this.closeBtn.className = "tm-close-button tm-control-button-base";
        var o = '\n            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n                <path d="M18 6L6 18M6 6L18 18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n            </svg>\n        ';
        this.closeBtn.innerHTML = o;
        this.closeBtn.addEventListener("mouseenter", (function() {
          r.closeBtn.style.backgroundColor = "hsla(var(--shadcn-destructive) / 0.9)";
          r.closeBtn.style.transform = "scale(1.1)";
        }));
        this.closeBtn.addEventListener("mouseleave", (function() {
          r.closeBtn.style.backgroundColor = "hsla(var(--shadcn-background) / 0.7)";
          r.closeBtn.style.transform = "scale(1)";
        }));
      }
    }, {
      "key": "createSettingsButton",
      "value": function createSettingsButton() {
        var r = this;
        this.settingsBtn = document.createElement("button");
        this.settingsBtn.className = "tm-settings-button tm-control-button-base";
        var o = '\n            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n                <path d="M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n                <path d="M19.4 15C19.1277 15.6171 19.2583 16.3378 19.73 16.82L19.79 16.88C20.1837 17.2737 20.4009 17.7994 20.4009 18.345C20.4009 18.8906 20.1837 19.4163 19.79 19.81C19.4163 20.2037 18.8906 20.4209 18.345 20.4209C17.7994 20.4209 17.2737 20.2037 16.91 19.81L16.85 19.75C16.3678 19.2783 15.6471 19.1477 15.03 19.42C14.4301 19.6801 14.0386 20.2502 14.03 20.89V21C14.03 21.5304 13.8193 22.0391 13.4442 22.4142C13.0691 22.7893 12.5604 23 12.03 23C11.4996 23 10.9909 22.7893 10.6158 22.4142C10.2407 22.0391 10.03 21.5304 10.03 21V20.91C10.0112 20.2556 9.5979 19.6818 8.98 19.43C8.36289 19.1577 7.64221 19.2883 7.16 19.76L7.1 19.82C6.73629 20.2137 6.21056 20.4309 5.665 20.4309C5.11944 20.4309 4.59371 20.2137 4.23 19.82C3.83628 19.4463 3.61911 18.9206 3.61911 18.375C3.61911 17.8294 3.83628 17.3037 4.23 16.93L4.29 16.87C4.76167 16.3878 4.89231 15.6671 4.62 15.05C4.35995 14.4501 3.78985 14.0586 3.15 14.05H3C2.46957 14.05 1.96086 13.8393 1.58579 13.4642C1.21071 13.0891 1 12.5804 1 12.05C1 11.5196 1.21071 11.0109 1.58579 10.6358C1.96086 10.2607 2.46957 10.05 3 10.05H3.09C3.74435 10.0312 4.31814 9.61788 4.57 9C4.84231 8.38289 4.71167 7.66221 4.24 7.18L4.18 7.12C3.78628 6.75629 3.56911 6.23056 3.56911 5.685C3.56911 5.13944 3.78628 4.61371 4.18 4.25C4.55371 3.85628 5.07944 3.63911 5.625 3.63911C6.17056 3.63911 6.69629 3.85628 7.07 4.25L7.13 4.31C7.61221 4.78167 8.33289 4.91231 8.95 4.64H9C9.59994 4.37995 9.99144 3.80985 10 3.17V3C10 2.46957 10.2107 1.96086 10.5858 1.58579C10.9609 1.21071 11.4696 1 12 1C12.5304 1 13.0391 1.21071 13.4142 1.58579C13.7893 1.96086 14 2.46957 14 3V3.09C14.0086 3.72985 14.4001 4.29995 15 4.56C15.6171 4.83231 16.3378 4.70167 16.82 4.23L16.88 4.17C17.2437 3.77628 17.7694 3.55911 18.325 3.55911C18.8806 3.55911 19.4063 3.77628 19.77 4.17C20.1637 4.54371 20.3809 5.06944 20.3809 5.615C20.3809 6.16056 20.1637 6.68629 19.77 7.06L19.71 7.12C19.2383 7.60221 19.1077 8.32289 19.38 8.94L19.4 9C19.66 9.59994 20.2301 9.99144 20.87 10H21C21.5304 10 22.0391 10.2107 22.4142 10.5858C22.7893 10.9609 23 11.4696 23 12C23 12.5304 22.7893 13.0391 22.4142 13.4142C22.0391 13.7893 21.5304 14 21 14H20.91C20.2702 14.0086 19.7001 14.4001 19.44 15H19.4Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n            </svg>\n        ';
        this.settingsBtn.innerHTML = o;
        this.settingsBtn.addEventListener("mouseenter", (function() {
          r.settingsBtn.style.backgroundColor = "hsla(var(--shadcn-accent) / 0.9)";
          r.settingsBtn.style.transform = "rotate(45deg)";
        }));
        this.settingsBtn.addEventListener("mouseleave", (function() {
          r.settingsBtn.style.backgroundColor = "hsla(var(--shadcn-background) / 0.7)";
          r.settingsBtn.style.transform = "rotate(0deg)";
        }));
      }
    }, {
      "key": "createSettingsPanel",
      "value": function createSettingsPanel() {
        this.settingsPanel = document.createElement("div");
        this.settingsPanel.className = "tm-settings-panel";
        this.settingsPanel.style.display = "none";
      }
    }, {
      "key": "createButtonContainer",
      "value": function createButtonContainer() {
        this.buttonContainer = document.createElement("div");
        this.buttonContainer.className = "tm-button-container";
        this.buttonContainer.style.display = "flex";
        this.buttonContainer.style.alignItems = "center";
        this.buttonContainer.style.gap = "10px";
        this.buttonContainer.style.zIndex = "99999";
      }
    }, {
      "key": "setupOrientationListener",
      "value": function setupOrientationListener() {
        var r = this;
        this.checkOrientation();
        window.addEventListener("orientationchange", (function() {
          setTimeout((function() {
            r.checkOrientation();
          }), 300);
        }));
        window.addEventListener("resize", (function() {
          r.checkOrientation();
        }));
      }
    }, {
      "key": "setupInteractionListeners",
      "value": function setupInteractionListeners() {
        var r = this;
        if (!this.overlay) {
          return;
        }
        this.overlay.addEventListener("mousemove", (function() {
          if (r.isLandscape) {
            r.showControls();
            r.autoHideControls();
          }
        }));
        this.overlay.addEventListener("touchmove", (function() {
          if (r.isLandscape) {
            r.showControls();
            r.autoHideControls();
          }
        }), {
          "passive": true
        });
        this.overlay.addEventListener("touchstart", (function(o) {
          if (r.isLandscape && o.target.closest(".tm-control-button, .tm-time-control-button, .tm-close-button")) {
            r.showControls();
            r.autoHideControls();
            o.stopPropagation();
          }
        }), {
          "passive": false
        });
        if (this.playerCore.controlManager && this.playerCore.controlManager.controlButtonsContainer) {
          var o = this.playerCore.controlManager.controlButtonsContainer;
          o.addEventListener("mouseenter", (function() {
            r.isMouseOverControls = true;
            if (r.controlsHideTimeout) {
              clearTimeout(r.controlsHideTimeout);
              r.controlsHideTimeout = null;
            }
          }));
          o.addEventListener("mouseleave", (function() {
            r.isMouseOverControls = false;
            if (r.isLandscape) {
              r.autoHideControls();
            }
          }));
        }
        if (this.settingsBtn) {
          this.settingsBtn.addEventListener("mouseenter", (function() {
            r.isMouseOverControls = true;
            if (r.controlsHideTimeout) {
              clearTimeout(r.controlsHideTimeout);
              r.controlsHideTimeout = null;
            }
          }));
          this.settingsBtn.addEventListener("mouseleave", (function() {
            r.isMouseOverControls = false;
            if (r.isLandscape) {
              r.autoHideControls();
            }
          }));
        }
        if (this.buttonContainer) {
          this.buttonContainer.addEventListener("mouseenter", (function() {
            r.isMouseOverControls = true;
            if (r.controlsHideTimeout) {
              clearTimeout(r.controlsHideTimeout);
              r.controlsHideTimeout = null;
            }
          }));
          this.buttonContainer.addEventListener("mouseleave", (function() {
            r.isMouseOverControls = false;
            if (r.isLandscape) {
              r.autoHideControls();
            }
          }));
        }
        if (this.settingsPanel) {
          this.settingsPanel.addEventListener("mouseenter", (function() {
            r.isMouseOverControls = true;
            if (r.controlsHideTimeout) {
              clearTimeout(r.controlsHideTimeout);
              r.controlsHideTimeout = null;
            }
          }));
          this.settingsPanel.addEventListener("mouseleave", (function() {
            r.isMouseOverControls = false;
            if (r.isLandscape) {
              r.autoHideControls();
            }
          }));
        }
      }
    }, {
      "key": "checkOrientation",
      "value": function checkOrientation() {
        var r = window.innerWidth > window.innerHeight;
        if (this.isLandscape !== r) {
          this.isLandscape = r;
          this.handleOrientationChange();
        }
      }
    }, {
      "key": "handleOrientationChange",
      "value": function handleOrientationChange() {
        this.updateContainerMinHeight();
        this.updateVideoAspectRatio();
        if (this.playerCore.controlManager) {
          this.playerCore.controlManager.updateProgressBar();
          this.playerCore.controlManager.updateCurrentTimeDisplay();
          this.updateControlPanelVisibility();
        }
        if (this.handleContainer) {
          this.handleContainer.style.display = this.isLandscape ? "none" : "flex";
        }
        if (this.isLandscape) {
          this.showControls();
          this.autoHideControls();
        } else {
          this.showControls();
          if (this.controlsHideTimeout) {
            clearTimeout(this.controlsHideTimeout);
            this.controlsHideTimeout = null;
          }
        }
      }
    }, {
      "key": "updateControlPanelVisibility",
      "value": function updateControlPanelVisibility() {
        if (!this.playerCore.controlManager) {
          return;
        }
        var r = this.playerCore.controlManager.controlButtonsContainer;
        if (!r) {
          return;
        }
        var o = r.querySelector(".tm-progress-row");
        var a = r.querySelector(".tm-seek-control-row");
        var l = r.querySelector(".tm-loop-control-row");
        var u = r.querySelector(".tm-playback-control-row");
        if (this.isLandscape) {
          if (o) {
            o.style.display = "flex";
            o.style.backgroundColor = "transparent";
          }
          if (a) {
            a.style.display = "flex";
            a.style.justifyContent = "center";
            a.style.alignItems = "center";
            a.style.gap = "20px";
            a.style.backgroundColor = "transparent";
          }
          if (l) {
            l.style.display = "flex";
            l.style.backgroundColor = "transparent";
          }
          if (u) {
            u.style.display = "flex";
            u.style.backgroundColor = "transparent";
          }
          if (this.settingsBtn) {
            this.settingsBtn.style.display = "flex";
            this.settingsBtn.style.backgroundColor = "hsla(var(--shadcn-secondary) / 0.3)";
            this.settingsBtn.style.backdropFilter = "blur(4px)";
          }
          var p = r.querySelector(".tm-rewind-group");
          var v = r.querySelector(".tm-forward-group");
          if (p) {
            p.style.width = "auto";
            p.style.flex = "0 1 auto";
          }
          if (v) {
            v.style.width = "auto";
            v.style.flex = "0 1 auto";
          }
        } else {
          if (o) {
            o.style.display = "";
          }
          if (a) {
            a.style.display = "";
            a.style.justifyContent = "";
            a.style.alignItems = "";
            a.style.gap = "";
          }
          if (l) {
            l.style.display = "";
          }
          if (u) {
            u.style.display = "";
          }
          if (this.settingsBtn) {
            this.settingsBtn.style.display = "";
            this.settingsBtn.style.backgroundColor = "";
            this.settingsBtn.style.backdropFilter = "";
          }
          var y = r.querySelector(".tm-rewind-group");
          var b = r.querySelector(".tm-forward-group");
          if (y) {
            y.style.width = "";
            y.style.flex = "";
          }
          if (b) {
            b.style.width = "";
            b.style.flex = "";
          }
        }
      }
    }, {
      "key": "updateVideoAspectRatio",
      "value": function updateVideoAspectRatio() {
        if (!this.videoWrapper || !this.targetVideo) {
          return;
        }
        var r = this.targetVideo.videoWidth;
        var o = this.targetVideo.videoHeight;
        if (r && o) {
          var a;
          var l;
          if (r / o < 1) {
            this.videoWrapper.classList.add("video-portrait");
          } else {
            this.videoWrapper.classList.remove("video-portrait");
          }
        }
      }
    }, {
      "key": "showControls",
      "value": function showControls() {
        if (!this.overlay) {
          return;
        }
        this.overlay.classList.remove("controls-hidden");
        document.body.classList.remove("controls-hidden");
        this.controlsVisible = true;
        if (this.controlsHideTimeout) {
          clearTimeout(this.controlsHideTimeout);
          this.controlsHideTimeout = null;
        }
      }
    }, {
      "key": "hideControls",
      "value": function hideControls() {
        if (!this.overlay || !this.isLandscape) {
          return;
        }
        this.overlay.classList.add("controls-hidden");
        document.body.classList.add("controls-hidden");
        this.controlsVisible = false;
      }
    }, {
      "key": "toggleControlsVisibility",
      "value": function toggleControlsVisibility() {
        if (this.controlsVisible) {
          this.hideControls();
        } else {
          this.showControls();
          this.autoHideControls();
        }
      }
    }, {
      "key": "autoHideControls",
      "value": function autoHideControls() {
        var r = this;
        if (!this.isLandscape) {
          return;
        }
        if (this.isMouseOverControls) {
          return;
        }
        if (this.controlsHideTimeout) {
          clearTimeout(this.controlsHideTimeout);
        }
        this.controlsHideTimeout = setTimeout((function() {
          r.hideControls();
        }), 3e3);
      }
    }, {
      "key": "updateContainerMinHeight",
      "value": function updateContainerMinHeight() {
        if (!this.container || !this.targetVideo) {
          return;
        }
        if (this.isLandscape) {
          return;
        }
        var r = this.targetVideo.videoWidth || this.targetVideo.naturalWidth;
        var o = this.targetVideo.videoHeight || this.targetVideo.naturalHeight;
        if (r && o) {
          var a = window.innerWidth * (o / r);
          this.container.style.minHeight = "".concat(a, "px");
        }
      }
    }, {
      "key": "assembleDOM",
      "value": function assembleDOM() {
        this.container.appendChild(this.videoWrapper);
        this.buttonContainer.appendChild(this.closeBtn);
        this.buttonContainer.appendChild(this.settingsBtn);
        this.playerContainer.appendChild(this.buttonContainer);
        this.playerContainer.appendChild(this.container);
        this.playerContainer.appendChild(this.handleContainer);
        this.playerContainer.appendChild(this.settingsPanel);
        if (this.playerCore.controlManager && this.playerCore.controlManager.controlButtonsContainer) {
          this.playerContainer.appendChild(this.playerCore.controlManager.controlButtonsContainer);
        }
        document.body.appendChild(this.overlay);
        document.body.appendChild(this.playerContainer);
        this.updateContainerMinHeight();
        this.setupInteractionListeners();
      }
    } ]);
  }();
  function ControlManager_typeof(r) {
    return ControlManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, ControlManager_typeof(r);
  }
  function _createForOfIteratorHelper(r, o) {
    var a = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
    if (!a) {
      if (Array.isArray(r) || (a = _unsupportedIterableToArray(r)) || o && r && "number" == typeof r.length) {
        a && (r = a);
        var l = 0, u = function F() {};
        return {
          "s": u,
          "n": function n() {
            return l >= r.length ? {
              "done": !0
            } : {
              "done": !1,
              "value": r[l++]
            };
          },
          "e": function e(r) {
            throw r;
          },
          "f": u
        };
      }
      throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    }
    var p, v = !0, y = !1;
    return {
      "s": function s() {
        a = a.call(r);
      },
      "n": function n() {
        var r = a.next();
        return v = r.done, r;
      },
      "e": function e(r) {
        y = !0, p = r;
      },
      "f": function f() {
        try {
          v || null == a["return"] || a["return"]();
        } finally {
          if (y) {
            throw p;
          }
        }
      }
    };
  }
  function _unsupportedIterableToArray(r, o) {
    if (r) {
      if ("string" == typeof r) {
        return _arrayLikeToArray(r, o);
      }
      var a = {}.toString.call(r).slice(8, -1);
      return "Object" === a && r.constructor && (a = r.constructor.name), "Map" === a || "Set" === a ? Array.from(r) : "Arguments" === a || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a) ? _arrayLikeToArray(r, o) : void 0;
    }
  }
  function _arrayLikeToArray(r, o) {
    (null == o || o > r.length) && (o = r.length);
    for (var a = 0, l = Array(o); a < o; a++) {
      l[a] = r[a];
    }
    return l;
  }
  function ControlManager_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function ControlManager_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, ControlManager_toPropertyKey(l.key), l);
    }
  }
  function ControlManager_createClass(r, o, a) {
    return o && ControlManager_defineProperties(r.prototype, o), a && ControlManager_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function ControlManager_toPropertyKey(r) {
    var o = ControlManager_toPrimitive(r, "string");
    return "symbol" == ControlManager_typeof(o) ? o : o + "";
  }
  function ControlManager_toPrimitive(r, o) {
    if ("object" != ControlManager_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != ControlManager_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var p = function() {
    function ControlManager(r, o) {
      ControlManager_classCallCheck(this, ControlManager);
      this.playerCore = r;
      this.targetVideo = r.targetVideo;
      this.uiElements = o;
      this.controlButtonsContainer = null;
      this.playPauseButton = null;
      this.muteButton = null;
      this.progressBarElement = null;
      this.progressIndicator = null;
      this.currentTimeDisplay = null;
      this.totalDurationDisplay = null;
      this.timeIndicator = null;
      this.progressControlsContainer = null;
      this.pauseIndicator = null;
      this.playbackRateIndicator = null;
      this.loopManager = null;
      this.loopStartMarker = null;
      this.loopEndMarker = null;
      this.loopStartDisplay = null;
      this.loopEndDisplay = null;
      this.isDraggingProgress = false;
      this.clickLock = false;
      this.clickLockTimeout = null;
      this.volumeSlider = null;
      this.volumeLevel = null;
      this.volumeValue = null;
      this.lastVolume = 1;
      this.supportsVolumeControl = this.checkVolumeControlSupport();
    }
    return ControlManager_createClass(ControlManager, [ {
      "key": "checkVolumeControlSupport",
      "value": function checkVolumeControlSupport() {
        var r;
        return !(/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream);
      }
    }, {
      "key": "init",
      "value": function init() {
        this.progressControlsContainer = this.createProgressControls();
        this.controlButtonsContainer = this.createControlButtonsContainer();
        this.initEventListeners();
        return {
          "progressControlsContainer": this.progressControlsContainer,
          "controlButtonsContainer": this.controlButtonsContainer
        };
      }
    }, {
      "key": "setLoopManager",
      "value": function setLoopManager(r) {
        this.loopManager = r;
      }
    }, {
      "key": "initEventListeners",
      "value": function initEventListeners() {
        var r = this;
        this.targetVideo.addEventListener("timeupdate", this.updateProgressBar.bind(this));
        this.targetVideo.addEventListener("timeupdate", this.updateCurrentTimeDisplay.bind(this));
        this.targetVideo.addEventListener("loadedmetadata", (function() {
          r.updateProgressBar();
          r.updateLoopTimeDisplay();
          r.updateLoopMarkers();
        }));
        this.progressBarElement.addEventListener("click", this.handleProgressClick.bind(this));
        this.progressBarElement.addEventListener("mousedown", this.startProgressDrag.bind(this));
        this.progressBarElement.addEventListener("touchstart", this.startProgressDrag.bind(this), {
          "passive": false
        });
        this.targetVideo.addEventListener("play", (function() {
          r.updatePlayPauseButton();
        }));
        this.targetVideo.addEventListener("pause", (function() {
          r.updatePlayPauseButton();
          r.showPauseIndicator();
        }));
        this.targetVideo.addEventListener("volumechange", (function() {
          r.updateMuteButton();
        }));
        this.targetVideo.addEventListener("ratechange", (function() {
          if (r.playbackRateSlider) {
            var o = r.targetVideo.playbackRate;
            var a = (o - .1) / (3 - .1) * 100;
            if (r.updatePlaybackRateSlider) {
              r.updatePlaybackRateSlider(a);
            }
            r.showPlaybackRateIndicator(o);
          }
        }));
        if (this.loopManager) {
          this.targetVideo.addEventListener("timeupdate", (function() {
            r.loopManager.checkAndLoop();
          }));
        }
      }
    }, {
      "key": "createProgressControls",
      "value": function createProgressControls() {
        var r = this;
        this.progressControlsContainer = document.createElement("div");
        this.progressControlsContainer.className = "tm-progress-controls";
        var o = document.createElement("div");
        o.className = "tm-time-display-container";
        this.currentTimeDisplay = document.createElement("span");
        this.currentTimeDisplay.className = "tm-current-time";
        this.currentTimeDisplay.textContent = "00:00:00";
        this.totalDurationDisplay = document.createElement("span");
        this.totalDurationDisplay.className = "tm-total-duration";
        this.totalDurationDisplay.textContent = "-00:00:00";
        var a = document.createElement("div");
        a.className = "tm-progress-bar-container";
        this.progressBarElement = document.createElement("div");
        this.progressBarElement.className = "tm-progress-bar";
        this.progressIndicator = document.createElement("div");
        this.progressIndicator.className = "tm-progress-indicator";
        a.addEventListener("mouseenter", (function() {
          r.progressBarElement.classList.add("tm-progress-bar-expanded");
        }));
        a.addEventListener("mouseleave", (function() {
          if (!r.isDraggingProgress) {
            r.progressBarElement.classList.add("tm-progress-bar-normal");
            r.progressBarElement.classList.remove("tm-progress-bar-expanded");
          }
        }));
        a.addEventListener("touchstart", (function() {
          r.progressBarElement.classList.add("tm-progress-bar-expanded");
          r.progressBarElement.classList.remove("tm-progress-bar-normal");
        }), {
          "passive": true
        });
        a.addEventListener("touchend", (function() {
          if (!r.isDraggingProgress) {
            r.progressBarElement.classList.add("tm-progress-bar-normal");
            r.progressBarElement.classList.remove("tm-progress-bar-expanded");
          }
        }));
        this.loopStartMarker = document.createElement("div");
        this.loopStartMarker.className = "tm-loop-marker tm-loop-start-marker";
        this.loopStartMarker.style.display = "none";
        this.loopEndMarker = document.createElement("div");
        this.loopEndMarker.className = "tm-loop-marker tm-loop-end-marker";
        this.loopEndMarker.style.display = "none";
        this.loopRangeElement = document.createElement("div");
        this.loopRangeElement.className = "tm-loop-range";
        this.loopRangeElement.style.display = "none";
        o.appendChild(this.currentTimeDisplay);
        o.appendChild(this.totalDurationDisplay);
        this.progressBarElement.appendChild(this.progressIndicator);
        a.appendChild(this.progressBarElement);
        a.appendChild(this.loopStartMarker);
        a.appendChild(this.loopEndMarker);
        a.appendChild(this.loopRangeElement);
        this.progressControlsContainer.appendChild(o);
        this.progressControlsContainer.appendChild(a);
        return this.progressControlsContainer;
      }
    }, {
      "key": "createControlButtonsContainer",
      "value": function createControlButtonsContainer() {
        var r = this;
        this.controlButtonsContainer = document.createElement("div");
        this.controlButtonsContainer.className = "tm-control-buttons";
        var o = document.createElement("div");
        o.className = "tm-progress-row";
        o.appendChild(this.progressControlsContainer);
        this.controlButtonsContainer.appendChild(o);
        var a = document.createElement("div");
        a.className = "tm-seek-control-row";
        var l = document.createElement("div");
        l.className = "tm-loop-control-row";
        var u = document.createElement("div");
        u.className = "tm-time-display";
        var p = document.createElement("div");
        p.className = "tm-loop-control";
        var v = document.createElement("div");
        v.className = "tm-rewind-group";
        var y = document.createElement("div");
        y.className = "tm-forward-group";
        var b = document.createElement("div");
        b.className = "tm-rewind-buttons-container";
        var k = document.createElement("div");
        k.className = "tm-forward-buttons-container";
        v.appendChild(b);
        y.appendChild(k);
        a.appendChild(v);
        a.appendChild(y);
        this.addTimeControlButton(b, "-5s", (function() {
          return r.seekRelative(-5);
        }));
        this.addTimeControlButton(b, "-10s", (function() {
          return r.seekRelative(-10);
        }));
        this.addTimeControlButton(b, "-30s", (function() {
          return r.seekRelative(-30);
        }));
        this.addTimeControlButton(b, "-1m", (function() {
          return r.seekRelative(-60);
        }));
        this.addTimeControlButton(b, "-5m", (function() {
          return r.seekRelative(-300);
        }));
        this.addTimeControlButton(b, "-10m", (function() {
          return r.seekRelative(-600);
        }));
        this.addTimeControlButton(k, "+5s", (function() {
          return r.seekRelative(5);
        }));
        this.addTimeControlButton(k, "+10s", (function() {
          return r.seekRelative(10);
        }));
        this.addTimeControlButton(k, "+30s", (function() {
          return r.seekRelative(30);
        }));
        this.addTimeControlButton(k, "+1m", (function() {
          return r.seekRelative(60);
        }));
        this.addTimeControlButton(k, "+5m", (function() {
          return r.seekRelative(300);
        }));
        this.addTimeControlButton(k, "+10m", (function() {
          return r.seekRelative(600);
        }));
        this.currentPositionDisplay = document.createElement("span");
        this.currentPositionDisplay.className = "tm-loop-start-position";
        this.currentPositionDisplay.textContent = "00:00:00";
        this.setLoopStartButton = document.createElement("span");
        this.setLoopStartButton.className = "tm-set-loop-start-label";
        this.setLoopStartButton.innerHTML = "A";
        this.durationDisplay = document.createElement("span");
        this.durationDisplay.className = "tm-loop-end-position";
        this.durationDisplay.textContent = "00:00:00";
        this.setLoopEndButton = document.createElement("span");
        this.setLoopEndButton.className = "tm-set-loop-end-label";
        this.setLoopEndButton.innerHTML = "B";
        var C = document.createElement("div");
        C.className = "tm-start-time-container";
        var _ = document.createElement("div");
        _.className = "tm-end-time-container";
        C.addEventListener("click", (function() {
          if (r.loopManager) {
            r.loopManager.setLoopStart();
          }
        }));
        C.addEventListener("mouseover", (function() {
          return;
        }));
        C.addEventListener("mouseout", (function() {
          return;
        }));
        _.addEventListener("click", (function() {
          if (r.loopManager) {
            r.loopManager.setLoopEnd();
          }
        }));
        _.addEventListener("mouseover", (function() {
          return;
        }));
        _.addEventListener("mouseout", (function() {
          return;
        }));
        C.appendChild(this.setLoopStartButton);
        C.appendChild(this.currentPositionDisplay);
        _.appendChild(this.setLoopEndButton);
        _.appendChild(this.durationDisplay);
        var P = document.createElement("div");
        P.className = "tm-loop-toggle-button";
        P.innerHTML = '\n            <span class="tm-loop-toggle-label">Loop</span>\n            <svg width="12" height="12" style="vertical-align: middle;">\n                <circle class="tm-loop-indicator-circle" cx="6" cy="6" r="5" fill="hsl(var(--shadcn-muted-foreground) / 0.5)"></circle>\n            </svg>\n        ';
        p.appendChild(P);
        var S = P;
        S.addEventListener("mouseover", (function() {
          return;
        }));
        S.addEventListener("mouseout", (function() {
          return;
        }));
        S.addEventListener("click", (function() {
          if (r.loopManager) {
            r.loopManager.toggleLoop();
          }
        }));
        this.loopToggleButton = S;
        u.appendChild(C);
        u.appendChild(_);
        l.appendChild(u);
        l.appendChild(p);
        this.controlButtonsContainer.appendChild(a);
        this.controlButtonsContainer.appendChild(l);
        var E = document.createElement("div");
        E.className = "tm-playback-control-row";
        var M = document.createElement("div");
        M.className = "tm-left-controls";
        M.style.display = "flex";
        M.style.alignItems = "center";
        M.style.gap = "6px";
        M.style.flex = "1";
        this.createVolumeSlider(M);
        var L = document.createElement("div");
        L.className = "tm-center-controls";
        L.style.display = "flex";
        L.style.alignItems = "center";
        L.style.justifyContent = "center";
        L.style.flex = "1";
        var T = document.createElement("div");
        T.className = "tm-right-controls";
        T.style.display = "flex";
        T.style.alignItems = "center";
        T.style.justifyContent = "flex-end";
        T.style.flex = "1";
        T.style.gap = "6px";
        E.appendChild(M);
        E.appendChild(L);
        E.appendChild(T);
        this.playPauseButton = this.addControlButton(L, "", (function() {
          if (r.targetVideo.paused) {
            r.targetVideo.play();
            r.updatePlayPauseButton();
          } else {
            r.targetVideo.pause();
            r.updatePlayPauseButton();
          }
        }));
        this.createPlaybackRateSlider(T);
        this.controlButtonsContainer.appendChild(E);
        this.updatePlayPauseButton();
        this.updateMuteButton();
        return this.controlButtonsContainer;
      }
    }, {
      "key": "createPlaybackRateSlider",
      "value": function createPlaybackRateSlider(r) {
        var o = this;
        var a = document.createElement("div");
        a.className = "tm-playback-rate-slider";
        var l = .1;
        var u = 3;
        var p = .1;
        var v = false;
        var y = 30;
        var b = 1;
        var k = null;
        var C = document.createElement("div");
        C.className = "tm-slider-container";
        var _ = document.createElement("div");
        _.className = "tm-slider-level";
        var P = document.createElement("div");
        P.className = "tm-slider-marks";
        var S = [ {
          "pos": Math.round((.5 - l) / (u - l) * 100),
          "label": "0.5x"
        }, {
          "pos": Math.round((1 - l) / (u - l) * 100),
          "label": "1.0x"
        }, {
          "pos": Math.round((1.5 - l) / (u - l) * 100),
          "label": "1.5x"
        }, {
          "pos": Math.round((2 - l) / (u - l) * 100),
          "label": "2.0x"
        }, {
          "pos": Math.round((3 - l) / (u - l) * 100),
          "label": "3.0x"
        } ];
        S.forEach((function(r) {
          var o = r.pos, a = r.label;
          var l = document.createElement("div");
          l.className = "tm-slider-mark";
          l.style.left = "".concat(o, "%");
          P.appendChild(l);
        }));
        var E = document.createElement("div");
        E.className = "tm-slider-text";
        var M = document.createElement("div");
        M.className = "tm-speed-label";
        M.textContent = "Speed";
        var L = document.createElement("div");
        L.className = "tm-speed-value";
        L.textContent = "1.0x";
        E.appendChild(M);
        E.appendChild(L);
        C.appendChild(P);
        C.appendChild(_);
        C.appendChild(E);
        a.appendChild(C);
        r.appendChild(a);
        var T = function updateSlider(r) {
          _.style.width = "".concat(r, "%");
          var a;
          var v = l + r / 100 * (u - l);
          v = Math.round(v / p) * p;
          if ((v = Math.max(l, Math.min(u, v))) !== b) {
            b = v;
            o.targetVideo.playbackRate = v;
            L.textContent = "".concat(v.toFixed(1), "x");
            L.classList.remove("tm-speed-value-fast", "tm-speed-value-slow", "tm-speed-value-normal");
            if (v > 1.5) {
              L.classList.add("tm-speed-value-fast");
            } else if (v < .8) {
              L.classList.add("tm-speed-value-slow");
            } else {
              L.classList.add("tm-speed-value-normal");
            }
          }
        };
        var V = function drag(r) {
          if (!v) {
            return;
          }
          D(r);
        };
        var B = function startDrag(r) {
          v = true;
          a.classList.add("dragging");
          a.classList.add("tm-playback-slider-dragging");
          D(r);
        };
        var I = function endDrag() {
          if (!v) {
            return;
          }
          v = false;
          a.classList.remove("dragging");
          a.classList.remove("tm-playback-slider-dragging");
          a.classList.add("tm-playback-slider-default");
          if (k) {
            cancelAnimationFrame(k);
            k = null;
          }
        };
        var D = function handleDragEvent(r) {
          r.preventDefault();
          var o = r.type.includes("touch") ? r.touches[0].clientX : r.clientX;
          var a = C.getBoundingClientRect();
          var l = a.width;
          if (k) {
            cancelAnimationFrame(k);
          }
          k = requestAnimationFrame((function() {
            var r = (o - a.left) / l * 100;
            r = Math.max(0, Math.min(100, r));
            var u;
            var p = 5;
            var v = _createForOfIteratorHelper(S.map((function(r) {
              return r.pos;
            }))), b;
            try {
              for (v.s(); !(b = v.n()).done; ) {
                var k = b.value;
                if (Math.abs(r - k) < p) {
                  r = k;
                  if (window.navigator.vibrate) {
                    window.navigator.vibrate(5);
                  }
                  break;
                }
              }
            } catch (r) {
              v.e(r);
            } finally {
              v.f();
            }
            y = r;
            T(r);
          }));
        };
        C.addEventListener("mousedown", B, {
          "passive": false
        });
        C.addEventListener("touchstart", B, {
          "passive": false
        });
        window.addEventListener("mousemove", V, {
          "passive": false
        });
        window.addEventListener("touchmove", V, {
          "passive": false
        });
        window.addEventListener("mouseup", I);
        window.addEventListener("touchend", I);
        window.addEventListener("mouseleave", I);
        a.addEventListener("dblclick", (function() {
          y = 30;
          T(30);
        }));
        T(30);
        this.playbackRateSlider = a;
        this.updatePlaybackRateSlider = T;
      }
    }, {
      "key": "createVolumeSlider",
      "value": function createVolumeSlider(r) {
        var o = this;
        var a = document.createElement("div");
        a.className = "tm-volume-control";
        var l = document.createElement("button");
        l.className = "tm-volume-button";
        l.innerHTML = this.getVolumeIcon(this.targetVideo.volume);
        var u = document.createElement("div");
        u.className = "tm-volume-slider-container";
        var p = document.createElement("div");
        p.className = "tm-volume-slider-track";
        this.volumeLevel = document.createElement("div");
        this.volumeLevel.className = "tm-volume-slider-level";
        this.volumeLevel.style.width = "".concat(100 * this.targetVideo.volume, "%");
        this.volumeValue = document.createElement("div");
        this.volumeValue.className = "tm-volume-value";
        this.volumeValue.textContent = "".concat(Math.round(100 * this.targetVideo.volume), "%");
        p.appendChild(this.volumeLevel);
        u.appendChild(p);
        u.appendChild(this.volumeValue);
        a.appendChild(l);
        if (this.supportsVolumeControl) {
          a.appendChild(u);
        } else {
          a.classList.add("tm-volume-control-no-slider");
        }
        this.volumeSlider = a;
        var v = false;
        var y = false;
        var b = null;
        var k = function updateVolume(r) {
          if (!o.supportsVolumeControl) {
            return;
          }
          var a = p.getBoundingClientRect();
          var l = a.width;
          var u = (r - a.left) / l * 100;
          u = Math.max(0, Math.min(100, u));
          o.targetVideo.volume = u / 100;
          o.targetVideo.muted = false;
          o.updateVolumeUI();
        };
        var C = function expandSlider() {
          if (!o.supportsVolumeControl) {
            return;
          }
          if (b) {
            clearTimeout(b);
          }
          a.classList.add("expanded");
          y = true;
        };
        var _ = function collapseSlider() {
          if (!o.supportsVolumeControl) {
            return;
          }
          if (!v) {
            a.classList.remove("expanded");
            y = false;
          }
        };
        l.addEventListener("click", (function(r) {
          r.stopPropagation();
          if (o.supportsVolumeControl && !y) {
            C();
            b = setTimeout(_, 3e3);
          } else {
            if (0 === o.targetVideo.volume || o.targetVideo.muted) {
              o.targetVideo.muted = false;
              if (o.supportsVolumeControl) {
                o.targetVideo.volume = o.lastVolume;
              }
            } else if (o.supportsVolumeControl) {
              o.lastVolume = o.targetVideo.volume;
              o.targetVideo.volume = 0;
            } else {
              o.targetVideo.muted = true;
            }
            o.updateVolumeUI();
          }
        }));
        if (this.supportsVolumeControl) {
          p.addEventListener("click", (function(r) {
            r.stopPropagation();
            k(r.clientX);
          }));
          p.addEventListener("touchstart", (function(r) {
            r.stopPropagation();
            v = true;
            a.classList.add("dragging");
            C();
            k(r.touches[0].clientX);
          }), {
            "passive": false
          });
          p.addEventListener("touchmove", (function(r) {
            if (!v) {
              return;
            }
            r.preventDefault();
            k(r.touches[0].clientX);
          }), {
            "passive": false
          });
          p.addEventListener("touchend", (function() {
            v = false;
            a.classList.remove("dragging");
            setTimeout(_, 1500);
          }));
          p.addEventListener("mousedown", (function(r) {
            r.stopPropagation();
            v = true;
            a.classList.add("dragging");
            C();
            k(r.clientX);
          }));
          document.addEventListener("mousemove", (function(r) {
            if (!v) {
              return;
            }
            r.preventDefault();
            k(r.clientX);
          }));
          document.addEventListener("mouseup", (function() {
            if (v) {
              v = false;
              a.classList.remove("dragging");
              setTimeout(_, 1500);
            }
          }));
        }
        r.appendChild(a);
      }
    }, {
      "key": "getVolumeIcon",
      "value": function getVolumeIcon(r) {
        if (this.targetVideo.muted || 0 === r) {
          return '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n                <path d="M11 5L6 9H2V15H6L11 19V5Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n                <path d="M23 9L17 15" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n                <path d="M17 9L23 15" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n            </svg>';
        } else if (this.supportsVolumeControl && r < .5) {
          return '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n                <path d="M11 5L6 9H2V15H6L11 19V5Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n                <path d="M15.54 8.46C16.4774 9.39764 17.0039 10.6692 17.0039 12C17.0039 13.3308 16.4774 14.6024 15.54 15.54" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n            </svg>';
        } else {
          return '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n                <path d="M11 5L6 9H2V15H6L11 19V5Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n                <path d="M15.54 8.46C16.4774 9.39764 17.0039 10.6692 17.0039 12C17.0039 13.3308 16.4774 14.6024 15.54 15.54" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n                <path d="M19.07 4.93C20.9447 6.80527 21.9979 9.34855 21.9979 12C21.9979 14.6515 20.9447 17.1947 19.07 19.07" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n            </svg>';
        }
      }
    }, {
      "key": "updateVolumeUI",
      "value": function updateVolumeUI() {
        if (!this.volumeSlider) {
          return;
        }
        var r;
        if (this.supportsVolumeControl) {
          r = this.targetVideo.muted ? 0 : this.targetVideo.volume;
        } else {
          r = this.targetVideo.muted ? 0 : 1;
        }
        var o = this.volumeSlider.querySelector(".tm-volume-button");
        if (o) {
          o.innerHTML = this.getVolumeIcon(r);
        }
        if (!this.supportsVolumeControl) {
          return;
        }
        if (this.volumeLevel) {
          var a = Math.max(0, Math.min(100, 100 * r));
          this.volumeLevel.style.width = "calc(".concat(a, "% - 2px)");
        }
        if (this.volumeValue) {
          var l = Math.round(100 * r);
          this.volumeValue.textContent = "".concat(l, "%");
          this.volumeValue.classList.remove("volume-high", "volume-medium", "volume-low", "volume-muted");
          if (0 === r || this.targetVideo.muted) {
            this.volumeValue.classList.add("volume-muted");
          } else if (r < .3) {
            this.volumeValue.classList.add("volume-low");
          } else if (r < .7) {
            this.volumeValue.classList.add("volume-medium");
          } else {
            this.volumeValue.classList.add("volume-high");
          }
        }
      }
    }, {
      "key": "updatePlayPauseButton",
      "value": function updatePlayPauseButton() {
        if (!this.playPauseButton) {
          return;
        }
        if (this.targetVideo.paused) {
          this.playPauseButton.innerHTML = '\n                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n                    <path d="M18 12L7 5V19L18 12Z" fill="currentColor" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n                </svg>\n            ';
        } else {
          this.playPauseButton.innerHTML = '\n                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n                    <path d="M10 4H6V20H10V4Z" fill="currentColor" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n                    <path d="M18 4H14V20H18V4Z" fill="currentColor" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n                </svg>\n            ';
        }
      }
    }, {
      "key": "updateMuteButton",
      "value": function updateMuteButton() {
        if (!this.muteButton) {
          return;
        }
        if (this.targetVideo.muted) {
          this.muteButton.innerHTML = '\n                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n                    <path d="M11 5L6 9H2V15H6L11 19V5Z" fill="currentColor" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n                    <path d="M23 9L17 15" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n                    <path d="M17 9L23 15" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n                </svg>\n            ';
        } else {
          this.muteButton.innerHTML = '\n                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n                    <path d="M11 5L6 9H2V15H6L11 19V5Z" fill="currentColor" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n                    <path d="M15.54 8.46C16.4774 9.39764 17.004 10.6692 17.004 11.995C17.004 13.3208 16.4774 14.5924 15.54 15.53" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n                    <path d="M18.54 5.46C20.4246 7.34535 21.4681 9.90302 21.4681 12.575C21.4681 15.247 20.4246 17.8047 18.54 19.69" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n                </svg>\n            ';
        }
      }
    }, {
      "key": "updateProgressBar",
      "value": function updateProgressBar() {
        if (!this.targetVideo || !this.progressBarElement || !this.progressIndicator) {
          return;
        }
        var r = this.targetVideo.currentTime;
        var o = this.targetVideo.duration;
        if (isNaN(o) || o <= 0) {
          return;
        }
        var a = r / o * 100;
        this.progressIndicator.style.width = "".concat(a, "%");
        this.updateCurrentTimeDisplay();
        if (this.loopManager && this.loopManager.loopActive && null !== this.loopManager.loopStartTime && null !== this.loopManager.loopEndTime) {
          if (r >= this.loopManager.loopEndTime) {
            this.targetVideo.currentTime = this.loopManager.loopStartTime;
          }
        }
      }
    }, {
      "key": "updateCurrentTimeDisplay",
      "value": function updateCurrentTimeDisplay() {
        if (!this.targetVideo || !this.currentTimeDisplay || !this.totalDurationDisplay) {
          return;
        }
        var r = this.targetVideo.currentTime;
        var o = this.targetVideo.duration;
        if (isNaN(o)) {
          return;
        }
        this.currentTimeDisplay.textContent = this.formatTime(r);
        var a = o - r;
        this.totalDurationDisplay.textContent = "-".concat(this.formatTime(a));
      }
    }, {
      "key": "addTimeControlButton",
      "value": function addTimeControlButton(r, o, a) {
        var l = function calculateOpacity(r) {
          var o = parseInt(r.replace(/[+-]/g, ""));
          var a = r.includes("m") ? "m" : "s";
          var l = .5;
          if ("s" === a) {
            if (o <= 5) {
              l = .5;
            } else if (o <= 10) {
              l = .6;
            } else {
              l = .7;
            }
          } else if ("m" === a) {
            if (1 === o) {
              l = .8;
            } else if (5 === o) {
              l = .9;
            } else {
              l = 1;
            }
          }
          return l;
        };
        var u = l(o);
        var p = document.createElement("button");
        p.className = "tm-time-control-button";
        p.style.backgroundColor = "hsl(var(--shadcn-secondary) / ".concat(u, ")");
        var v = o.includes("-");
        var y = o.includes("+");
        var b = o.replace(/[+-]/g, "");
        var k = '<svg width="14" height="14" viewBox="0 0 12 24" fill="none" class="tm-rewind-icon">\n            <path fill-rule="evenodd" clip-rule="evenodd" d="M3.70711 4.29289C3.31658 3.90237 2.68342 3.90237 2.29289 4.29289L-4.70711 11.2929C-5.09763 11.6834 -5.09763 12.3166 -4.70711 12.7071L2.29289 19.7071C2.68342 20.0976 3.31658 20.0976 3.70711 19.7071C4.09763 19.3166 4.09763 18.6834 3.70711 18.2929L-2.58579 12L3.70711 5.70711C4.09763 5.31658 4.09763 4.68342 3.70711 4.29289Z" fill="currentColor"/>\n        </svg>';
        var C = '<svg width="14" height="14" viewBox="0 0 12 24" fill="none" class="tm-forward-icon">\n            <path fill-rule="evenodd" clip-rule="evenodd" d="M8.29289 4.29289C8.68342 3.90237 9.31658 3.90237 9.70711 4.29289L16.7071 11.2929C17.0976 11.6834 17.0976 12.3166 16.7071 12.7071L9.70711 19.7071C9.31658 20.0976 8.68342 20.0976 8.29289 19.7071C7.90237 19.3166 7.90237 18.6834 8.29289 18.2929L14.5858 12L8.29289 5.70711C7.90237 5.31658 7.90237 4.68342 8.29289 4.29289Z" fill="currentColor"/>\n        </svg>';
        if (v) {
          p.innerHTML = '<div class="tm-time-control-button-inner">'.concat(k, '<span class="tm-time-text-margin-left">').concat(b, "</span></div>");
        } else if (y) {
          p.innerHTML = '<div class="tm-time-control-button-inner"><span class="tm-time-text-margin-right">'.concat(b, "</span>").concat(C, "</div>");
        } else {
          p.textContent = o;
        }
        p.addEventListener("click", a);
        p.addEventListener("mouseover", (function() {
          p.classList.add("tm-time-control-button-hover");
          p.classList.remove("tm-time-control-button-default");
        }));
        p.addEventListener("mouseout", (function() {
          p.classList.add("tm-time-control-button-default");
          p.classList.remove("tm-time-control-button-hover", "tm-time-control-button-active", "tm-time-control-button-after-active");
        }));
        p.addEventListener("mousedown", (function() {
          p.classList.add("tm-time-control-button-active");
          p.classList.remove("tm-time-control-button-hover", "tm-time-control-button-default", "tm-time-control-button-after-active");
        }));
        p.addEventListener("mouseup", (function() {
          p.classList.add("tm-time-control-button-after-active");
          p.classList.remove("tm-time-control-button-active", "tm-time-control-button-hover", "tm-time-control-button-default");
        }));
        r.appendChild(p);
        return p;
      }
    }, {
      "key": "seekRelative",
      "value": function seekRelative(r) {
        if (!this.targetVideo) {
          return;
        }
        var o = Math.max(0, Math.min(this.targetVideo.duration, this.targetVideo.currentTime + r));
        this.targetVideo.currentTime = o;
      }
    }, {
      "key": "formatTime",
      "value": function formatTime(r) {
        var o = Math.floor(r / 3600);
        var a = Math.floor(r % 3600 / 60);
        var l = Math.floor(r % 60);
        return "".concat(o, ":").concat(a.toString().padStart(2, "0"), ":").concat(l.toString().padStart(2, "0"));
      }
    }, {
      "key": "addControlButton",
      "value": function addControlButton(r, o, a) {
        var l = document.createElement("button");
        l.className = "tm-control-button";
        l.textContent = o;
        l.addEventListener("click", a);
        l.addEventListener("mouseover", (function() {
          l.classList.add("tm-control-button-hover");
          l.classList.remove("tm-control-button-default");
        }));
        l.addEventListener("mouseout", (function() {
          l.classList.add("tm-control-button-default");
          l.classList.remove("tm-control-button-hover");
        }));
        r.appendChild(l);
        return l;
      }
    }, {
      "key": "showPauseIndicator",
      "value": function showPauseIndicator() {
        var r = this;
        if (this.pauseIndicator) {
          if (this.pauseIndicator.parentNode) {
            this.pauseIndicator.parentNode.removeChild(this.pauseIndicator);
          }
          this.pauseIndicator = null;
        }
        this.pauseIndicator = document.createElement("div");
        this.pauseIndicator.className = "tm-indicator-base tm-pause-indicator";
        this.pauseIndicator.style.position = "absolute";
        this.pauseIndicator.style.top = "50%";
        this.pauseIndicator.style.left = "50%";
        this.pauseIndicator.style.transform = "translate(-50%, -50%)";
        this.pauseIndicator.style.display = "flex";
        this.pauseIndicator.style.justifyContent = "center";
        this.pauseIndicator.style.alignItems = "center";
        this.pauseIndicator.innerHTML = '\n            <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">\n                <path d="M14,6v20c0,1.1-0.9,2-2,2H8c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h4C13.1,4,14,4.9,14,6z M24,4h-4\n                c-1.1,0-2,0.9-2,2v20c0,1.1,0.9,2,2,2h4c1.1,0,2-0.9,2-2V6C26,4.9,25.1,4,24,4z" fill="white"/>\n            </svg>\n        ';
        this.uiElements.videoWrapper.appendChild(this.pauseIndicator);
        requestAnimationFrame((function() {
          r.pauseIndicator.classList.add("visible");
        }));
        setTimeout((function() {
          if (r.pauseIndicator) {
            r.pauseIndicator.classList.remove("visible");
            setTimeout((function() {
              if (r.pauseIndicator && r.pauseIndicator.parentNode) {
                r.pauseIndicator.parentNode.removeChild(r.pauseIndicator);
                r.pauseIndicator = null;
              }
            }), 300);
          }
        }), 1e3);
      }
    }, {
      "key": "showPlaybackRateIndicator",
      "value": function showPlaybackRateIndicator(r) {
        var o = this;
        if (this.playbackRateIndicator) {
          clearTimeout(this.playbackRateIndicator.hideTimeout);
          if (this.playbackRateIndicator.parentNode) {
            this.playbackRateIndicator.parentNode.removeChild(this.playbackRateIndicator);
          }
          this.playbackRateIndicator = null;
        }
        this.playbackRateIndicator = document.createElement("div");
        this.playbackRateIndicator.className = "tm-indicator-base tm-playback-rate-indicator";
        this.playbackRateIndicator.style.position = "absolute";
        this.playbackRateIndicator.style.top = "20%";
        this.playbackRateIndicator.style.left = "50%";
        this.playbackRateIndicator.style.transform = "translateX(-50%)";
        this.playbackRateIndicator.textContent = "".concat(r.toFixed(1), "x");
        if (r > 1.5) {
          this.playbackRateIndicator.style.color = "hsl(var(--shadcn-orange))";
        } else if (r < .8) {
          this.playbackRateIndicator.style.color = "hsl(var(--shadcn-blue))";
        }
        this.uiElements.videoWrapper.appendChild(this.playbackRateIndicator);
        requestAnimationFrame((function() {
          o.playbackRateIndicator.classList.add("visible");
        }));
        this.playbackRateIndicator.hideTimeout = setTimeout((function() {
          if (o.playbackRateIndicator) {
            o.playbackRateIndicator.classList.remove("visible");
            setTimeout((function() {
              if (o.playbackRateIndicator && o.playbackRateIndicator.parentNode) {
                o.playbackRateIndicator.parentNode.removeChild(o.playbackRateIndicator);
                o.playbackRateIndicator = null;
              }
            }), 300);
          }
        }), 1500);
      }
    } ]);
  }();
  function DragManager_typeof(r) {
    return DragManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, DragManager_typeof(r);
  }
  function DragManager_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function DragManager_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, DragManager_toPropertyKey(l.key), l);
    }
  }
  function DragManager_createClass(r, o, a) {
    return o && DragManager_defineProperties(r.prototype, o), a && DragManager_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function DragManager_toPropertyKey(r) {
    var o = DragManager_toPrimitive(r, "string");
    return "symbol" == DragManager_typeof(o) ? o : o + "";
  }
  function DragManager_toPrimitive(r, o) {
    if ("object" != DragManager_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != DragManager_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var v = function() {
    function DragManager(r, o) {
      DragManager_classCallCheck(this, DragManager);
      this.playerCore = r;
      this.targetVideo = r.targetVideo;
      this.uiElements = o;
      this.container = o.container;
      this.handle = o.handle;
      this.isDraggingHandle = false;
      this.startX = 0;
      this.startY = 0;
      this.startWidth = 0;
      this.startHeight = 0;
      this.handleMoveHandler = null;
      this.handleEndHandler = null;
    }
    return DragManager_createClass(DragManager, [ {
      "key": "init",
      "value": function init() {
        this.handle.addEventListener("mousedown", this.startHandleDrag.bind(this));
        this.handle.addEventListener("touchstart", this.startHandleDrag.bind(this), {
          "passive": false
        });
        return this;
      }
    }, {
      "key": "updateHandlePosition",
      "value": function updateHandlePosition() {
        if (!this.uiElements.handleContainer || !this.container) {
          return;
        }
        var r = this.container.getBoundingClientRect();
        var o = this.uiElements.videoWrapper.getBoundingClientRect();
        this.uiElements.handleContainer.style.top = "".concat(o.bottom, "px");
      }
    }, {
      "key": "startHandleDrag",
      "value": function startHandleDrag(r) {
        this.isDraggingHandle = true;
        this.handle.style.cursor = "grabbing";
        var o = r.type.includes("touch");
        this.startY = o ? r.touches[0].clientY : r.clientY;
        this.startHeight = this.container.offsetHeight;
        var a = this._handleDragMove.bind(this);
        var l = this._handleDragEnd.bind(this);
        if (o) {
          document.addEventListener("touchmove", a, {
            "passive": false
          });
          document.addEventListener("touchend", l);
          document.addEventListener("touchcancel", l);
        } else {
          document.addEventListener("mousemove", a);
          document.addEventListener("mouseup", l);
        }
        this.handleMoveHandler = a;
        this.handleEndHandler = l;
        r.preventDefault();
      }
    }, {
      "key": "_handleDragMove",
      "value": function _handleDragMove(r) {
        if (!this.isDraggingHandle) {
          return;
        }
        r.preventDefault();
        var o;
        var a;
        var l = (r.type.includes("touch") ? r.touches[0].clientY : r.clientY) - this.startY;
        var u = parseFloat(this.container.style.minHeight) || window.innerWidth * (9 / 16);
        var p = Math.max(u, this.startHeight + l);
        this.container.style.height = p + "px";
      }
    }, {
      "key": "_handleDragEnd",
      "value": function _handleDragEnd(r) {
        if (!this.isDraggingHandle) {
          return;
        }
        this.isDraggingHandle = false;
        this.handle.style.cursor = "grab";
        document.removeEventListener("touchmove", this.handleMoveHandler);
        document.removeEventListener("touchend", this.handleEndHandler);
        document.removeEventListener("touchcancel", this.handleEndHandler);
        document.removeEventListener("mousemove", this.handleMoveHandler);
        document.removeEventListener("mouseup", this.handleEndHandler);
        this.handleMoveHandler = null;
        this.handleEndHandler = null;
        if (r.type.startsWith("touch")) {
          r.preventDefault();
        }
      }
    }, {
      "key": "handleMouseDown",
      "value": function handleMouseDown(r) {
        if (0 !== r.button) {
          return;
        }
        this.isDraggingHandle = true;
        this.startY = r.clientY;
        this.startHeight = this.uiElements.handleContainer.offsetHeight;
        this.handleMoveHandler = this.handleMouseMove.bind(this);
        this.handleEndHandler = this.handleMouseUp.bind(this);
        document.addEventListener("mousemove", this.handleMoveHandler);
        document.addEventListener("mouseup", this.handleEndHandler);
        this.updateHandlePosition();
      }
    }, {
      "key": "handleMouseMove",
      "value": function handleMouseMove(r) {
        if (!this.isDraggingHandle) {
          return;
        }
        var o = r.clientY - this.startY;
        var a = this.startHeight + o;
        if (a < 50 || a > 200) {
          return;
        }
        this.uiElements.handleContainer.style.height = "".concat(a, "px");
        this.updateHandlePosition();
      }
    }, {
      "key": "handleMouseUp",
      "value": function handleMouseUp(r) {
        this.isDraggingHandle = false;
        document.removeEventListener("mousemove", this.handleMoveHandler);
        document.removeEventListener("mouseup", this.handleEndHandler);
        this.updateHandlePosition();
      }
    }, {
      "key": "handleMouseLeave",
      "value": function handleMouseLeave(r) {
        this.isDraggingHandle = false;
        document.removeEventListener("mousemove", this.handleMoveHandler);
        document.removeEventListener("mouseup", this.handleEndHandler);
        this.updateHandlePosition();
      }
    } ]);
  }();
  function LoopManager_typeof(r) {
    return LoopManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, LoopManager_typeof(r);
  }
  function _slicedToArray(r, o) {
    return _arrayWithHoles(r) || _iterableToArrayLimit(r, o) || LoopManager_unsupportedIterableToArray(r, o) || _nonIterableRest();
  }
  function _nonIterableRest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }
  function LoopManager_unsupportedIterableToArray(r, o) {
    if (r) {
      if ("string" == typeof r) {
        return LoopManager_arrayLikeToArray(r, o);
      }
      var a = {}.toString.call(r).slice(8, -1);
      return "Object" === a && r.constructor && (a = r.constructor.name), "Map" === a || "Set" === a ? Array.from(r) : "Arguments" === a || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a) ? LoopManager_arrayLikeToArray(r, o) : void 0;
    }
  }
  function LoopManager_arrayLikeToArray(r, o) {
    (null == o || o > r.length) && (o = r.length);
    for (var a = 0, l = Array(o); a < o; a++) {
      l[a] = r[a];
    }
    return l;
  }
  function _iterableToArrayLimit(r, o) {
    var a = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
    if (null != a) {
      var l, u, p, v, y = [], b = !0, k = !1;
      try {
        if (p = (a = a.call(r)).next, 0 === o) {
          if (Object(a) !== a) {
            return;
          }
          b = !1;
        } else {
          for (;!(b = (l = p.call(a)).done) && (y.push(l.value), y.length !== o); b = !0) {}
        }
      } catch (r) {
        k = !0, u = r;
      } finally {
        try {
          if (!b && null != a["return"] && (v = a["return"](), Object(v) !== v)) {
            return;
          }
        } finally {
          if (k) {
            throw u;
          }
        }
      }
      return y;
    }
  }
  function _arrayWithHoles(r) {
    if (Array.isArray(r)) {
      return r;
    }
  }
  function LoopManager_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function LoopManager_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, LoopManager_toPropertyKey(l.key), l);
    }
  }
  function LoopManager_createClass(r, o, a) {
    return o && LoopManager_defineProperties(r.prototype, o), a && LoopManager_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function LoopManager_toPropertyKey(r) {
    var o = LoopManager_toPrimitive(r, "string");
    return "symbol" == LoopManager_typeof(o) ? o : o + "";
  }
  function LoopManager_toPrimitive(r, o) {
    if ("object" != LoopManager_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != LoopManager_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var y = function() {
    function LoopManager(r, o) {
      LoopManager_classCallCheck(this, LoopManager);
      this.playerCore = r;
      this.targetVideo = r.targetVideo;
      this.uiElements = o;
      this.loopStartTime = null;
      this.loopEndTime = null;
      this.loopActive = false;
      this.loopStartMarker = null;
      this.loopEndMarker = null;
      this.loopRangeElement = null;
      this.currentPositionDisplay = null;
      this.durationDisplay = null;
      this.loopToggleButton = null;
      this._handleLoopTimeUpdate = this._handleLoopTimeUpdate.bind(this);
    }
    return LoopManager_createClass(LoopManager, [ {
      "key": "init",
      "value": function init(r) {
        this.loopStartMarker = r.loopStartMarker;
        this.loopEndMarker = r.loopEndMarker;
        this.loopRangeElement = r.loopRangeElement;
        this.currentPositionDisplay = r.currentPositionDisplay;
        this.durationDisplay = r.durationDisplay;
        this.loopToggleButton = r.loopToggleButton;
        this._parseUrlHashParams();
        return this;
      }
    }, {
      "key": "setState",
      "value": function setState(r) {
        Object.assign(this, r);
        this._updateUI();
        return this;
      }
    }, {
      "key": "_parseUrlHashParams",
      "value": function _parseUrlHashParams() {
        var r = this;
        if (!window.location.hash) {
          return;
        }
        var o = window.location.hash.substring(1);
        if (o.includes("-")) {
          var a, l = _slicedToArray(o.split("-"), 2), u = l[0], p = l[1];
          var v = this._parseTimeString(u);
          var y = this._parseTimeString(p);
          if (null !== v && null !== y) {
            var b = {
              "loopStartTime": v,
              "loopEndTime": y
            };
            var k = function handleMetadata() {
              if (r.currentPositionDisplay) {
                r.currentPositionDisplay.textContent = r.formatTimeWithHours(v);
                r.currentPositionDisplay.classList.add("active");
                var o = document.querySelector(".tm-start-time-container");
                if (o) {
                  o.classList.add("active");
                }
              }
              if (r.durationDisplay) {
                r.durationDisplay.textContent = r.formatTimeWithHours(y);
                r.durationDisplay.classList.add("active");
                var a = document.querySelector(".tm-end-time-container");
                if (a) {
                  a.classList.add("active");
                }
              }
              r.targetVideo.currentTime = v;
              if (window.location.hostname.includes("missav")) {
                b.loopActive = true;
              } else {
                b.loopActive = true;
              }
              r.setState(b);
              r.updateLoopMarkers();
              r.targetVideo.removeEventListener("timeupdate", r._handleLoopTimeUpdate);
              r.targetVideo.addEventListener("timeupdate", r._handleLoopTimeUpdate);
              if (r.targetVideo.paused) {
                r.targetVideo.play()["catch"]((function(r) {}));
              }
              r.targetVideo.removeEventListener("loadedmetadata", k);
            };
            if (this.targetVideo.readyState >= 1) {
              k();
            } else {
              this.targetVideo.addEventListener("loadedmetadata", k);
            }
          }
        } else if (o.match(/^\d{2}:\d{2}:\d{2}$/)) {
          var C = this._parseTimeString(o);
          if (null !== C) {
            var _ = function handleMetadata() {
              if (r.currentPositionDisplay) {
                r.currentPositionDisplay.textContent = r.formatTimeWithHours(C);
                r.currentPositionDisplay.classList.add("active");
                var o = document.querySelector(".tm-start-time-container");
                if (o) {
                  o.classList.add("active");
                }
              }
              r.targetVideo.currentTime = C;
              r.setState({
                "loopStartTime": C
              });
              r.updateLoopMarkers();
              r.targetVideo.removeEventListener("loadedmetadata", _);
            };
            if (this.targetVideo.readyState >= 1) {
              _();
            } else {
              this.targetVideo.addEventListener("loadedmetadata", _);
            }
          }
        }
      }
    }, {
      "key": "_parseTimeString",
      "value": function _parseTimeString(r) {
        if (!r) {
          return null;
        }
        var o = r.match(/^(\d{2}):(\d{2}):(\d{2})$/);
        if (!o) {
          return null;
        }
        var a;
        var l;
        var u;
        return 3600 * parseInt(o[1], 10) + 60 * parseInt(o[2], 10) + parseInt(o[3], 10);
      }
    }, {
      "key": "_updateUrlHash",
      "value": function _updateUrlHash() {
        var r = "";
        if (null !== this.loopStartTime) {
          r = this.formatTimeWithHours(this.loopStartTime);
          if (null !== this.loopEndTime) {
            r += "-".concat(this.formatTimeWithHours(this.loopEndTime));
          }
        }
        if (r) {
          var o = window.location.pathname + window.location.search + "#" + r;
          window.history.replaceState(null, "", o);
        }
      }
    }, {
      "key": "_clickCopyStartTime",
      "value": function _clickCopyStartTime() {
        var r;
        document.querySelector("input#clip-start-time + a").click();
      }
    }, {
      "key": "_clickCopyEndTime",
      "value": function _clickCopyEndTime() {
        var r;
        document.querySelector("input#clip-end-time + a").click();
      }
    }, {
      "key": "_toggleLooping",
      "value": function _toggleLooping() {
        var r;
        document.querySelector(".sm\\:ml-6 button").click();
      }
    }, {
      "key": "setLoopEnd",
      "value": function setLoopEnd() {
        if (!this.targetVideo) {
          return;
        }
        var r = this.targetVideo.currentTime;
        if (window.location.hostname.includes("missav")) {
          this._clickCopyEndTime();
          this.setState({
            "loopEndTime": r
          });
        } else {
          if (null !== this.loopStartTime && r <= this.loopStartTime) {
            return;
          }
          this.setState({
            "loopEndTime": r
          });
          this._updateUrlHash();
        }
        if (window.navigator.vibrate) {
          window.navigator.vibrate(10);
        }
      }
    }, {
      "key": "setLoopStart",
      "value": function setLoopStart() {
        if (!this.targetVideo) {
          return;
        }
        var r = this.targetVideo.currentTime;
        if (window.location.hostname.includes("missav")) {
          this._clickCopyStartTime();
          this.setState({
            "loopStartTime": r
          });
        } else {
          if (null !== this.loopEndTime && r >= this.loopEndTime) {
            return;
          }
          this.setState({
            "loopStartTime": r
          });
          this._updateUrlHash();
        }
        if (window.navigator.vibrate) {
          window.navigator.vibrate(10);
        }
      }
    }, {
      "key": "toggleLoop",
      "value": function toggleLoop() {
        if (window.location.hostname.includes("missav")) {
          this._toggleLooping();
        } else {
          if (null === this.loopStartTime || null === this.loopEndTime) {
            return;
          }
          var r;
          if (!this.loopActive) {
            this.enableLoop();
          } else {
            this.disableLoop();
          }
        }
      }
    }, {
      "key": "enableLoop",
      "value": function enableLoop() {
        if (!this.targetVideo || null === this.loopStartTime || null === this.loopEndTime) {
          return;
        }
        this.setState({
          "loopActive": true
        });
        this.targetVideo.removeEventListener("timeupdate", this._handleLoopTimeUpdate);
        this.targetVideo.addEventListener("timeupdate", this._handleLoopTimeUpdate);
        if (this.targetVideo.currentTime < this.loopStartTime || this.targetVideo.currentTime > this.loopEndTime) {
          this.targetVideo.currentTime = this.loopStartTime;
        }
        if (this.targetVideo.paused) {
          this.targetVideo.play()["catch"]((function(r) {}));
        }
        if (window.navigator.vibrate) {
          window.navigator.vibrate([ 10, 30, 10 ]);
        }
      }
    }, {
      "key": "disableLoop",
      "value": function disableLoop() {
        if (!this.loopActive) {
          return;
        }
        this.targetVideo.removeEventListener("timeupdate", this._handleLoopTimeUpdate);
        this.setState({
          "loopActive": false
        });
      }
    }, {
      "key": "_handleLoopTimeUpdate",
      "value": function _handleLoopTimeUpdate() {
        if (!this.loopActive || null === this.loopStartTime || null === this.loopEndTime) {
          return;
        }
        var r = this.targetVideo.currentTime;
        if (r >= this.loopEndTime || r < this.loopStartTime) {
          this.targetVideo.currentTime = this.loopStartTime;
        }
      }
    }, {
      "key": "_updateUI",
      "value": function _updateUI() {
        this.updateLoopTimeDisplay();
        this.updateLoopMarkers();
        this._updateLoopButtonStyle();
      }
    }, {
      "key": "_updateLoopButtonStyle",
      "value": function _updateLoopButtonStyle() {
        if (!this.loopToggleButton) {
          return;
        }
        if (this.loopActive) {
          this.loopToggleButton.classList.add("active");
          var r = this.loopToggleButton.querySelector(".tm-loop-indicator-circle");
          if (r) {
            r.setAttribute("fill", "hsl(var(--shadcn-red))");
          }
          var o = this.loopToggleButton.querySelector(".tm-loop-toggle-label");
          if (o) {
            o.classList.add("active");
          }
        } else {
          this.loopToggleButton.classList.remove("active");
          var a = this.loopToggleButton.querySelector(".tm-loop-indicator-circle");
          if (a) {
            a.setAttribute("fill", "hsl(var(--shadcn-muted-foreground) / 0.5)");
          }
          var l = this.loopToggleButton.querySelector(".tm-loop-toggle-label");
          if (l) {
            l.classList.remove("active");
          }
        }
      }
    }, {
      "key": "_updateStartTimeContainerStyle",
      "value": function _updateStartTimeContainerStyle() {
        var r = document.querySelector(".tm-start-time-container");
        if (!r) {
          return;
        }
        if (null !== this.loopStartTime) {
          this.currentPositionDisplay.textContent = this.formatTimeWithHours(this.loopStartTime);
          this.currentPositionDisplay.classList.add("active");
          r.classList.add("active");
          var o = r.querySelector(".tm-loop-start-button");
          if (o) {
            o.classList.add("active");
          }
        } else {
          this.currentPositionDisplay.textContent = "00:00:00";
          this.currentPositionDisplay.classList.remove("active");
          r.classList.remove("active");
          var a = r.querySelector(".tm-loop-start-button");
          if (a) {
            a.classList.remove("active");
          }
        }
      }
    }, {
      "key": "_updateEndTimeContainerStyle",
      "value": function _updateEndTimeContainerStyle() {
        var r = document.querySelector(".tm-end-time-container");
        if (!r) {
          return;
        }
        if (null !== this.loopEndTime) {
          this.durationDisplay.textContent = this.formatTimeWithHours(this.loopEndTime);
          this.durationDisplay.classList.add("active");
          r.classList.add("active");
          var o = r.querySelector(".tm-loop-end-button");
          if (o) {
            o.classList.add("active");
          }
        } else {
          this.durationDisplay.textContent = "00:00:00";
          this.durationDisplay.classList.remove("active");
          r.classList.remove("active");
          var a = r.querySelector(".tm-loop-end-button");
          if (a) {
            a.classList.remove("active");
          }
        }
      }
    }, {
      "key": "updateLoopTimeDisplay",
      "value": function updateLoopTimeDisplay() {
        this._updateStartTimeContainerStyle();
        this._updateEndTimeContainerStyle();
      }
    }, {
      "key": "updateLoopMarkers",
      "value": function updateLoopMarkers() {
        var r = this;
        if (!this.targetVideo || !this.loopStartMarker || !this.loopEndMarker) {
          return;
        }
        var o = document.querySelector(".tm-progress-bar");
        if (!o) {
          return;
        }
        var a = o.offsetWidth;
        var l = this.targetVideo.duration;
        if (l <= 0 || !a) {
          return;
        }
        var u = function createMarker(o, a) {
          var u = a ? r.loopStartMarker : r.loopEndMarker;
          if (null !== o && !isNaN(o) && o >= 0 && o <= l) {
            var p = o / l * 100;
            u.style.left = "".concat(p, "%");
            u.style.display = "block";
            if (r.loopActive) {
              u.classList.add("active");
            } else {
              u.classList.remove("active");
            }
            u.setAttribute("title", a ? "循环起点: ".concat(r.formatTimeWithHours(o)) : "循环终点: ".concat(r.formatTimeWithHours(o)));
            u.setAttribute("data-time", r.formatTimeWithHours(o));
          } else {
            u.style.display = "none";
          }
        };
        u(this.loopStartTime, true);
        u(this.loopEndTime, false);
        if (this.loopActive && null !== this.loopStartTime && null !== this.loopEndTime) {
          this.loopStartMarker.classList.add("active");
          this.loopEndMarker.classList.add("active");
          if (this.loopRangeElement) {
            var p = this.loopStartTime / l * 100;
            var v;
            var y = this.loopEndTime / l * 100 - p;
            if (y > 0) {
              this.loopRangeElement.style.left = "".concat(p, "%");
              this.loopRangeElement.style.width = "".concat(y, "%");
              this.loopRangeElement.style.display = "block";
              this.loopRangeElement.classList.add("active");
            } else {
              this.loopRangeElement.style.display = "none";
            }
          }
        } else {
          this.loopStartMarker.classList.remove("active");
          this.loopEndMarker.classList.remove("active");
          if (this.loopRangeElement) {
            this.loopRangeElement.classList.remove("active");
            this.loopRangeElement.style.display = "none";
          }
        }
      }
    }, {
      "key": "formatTimeWithHours",
      "value": function formatTimeWithHours(r) {
        if (isNaN(r) || r < 0) {
          return "00:00:00";
        }
        var o = Math.floor(r);
        var a = Math.floor(o / 3600);
        var l = Math.floor(o % 3600 / 60);
        var u = o % 60;
        return "".concat(a.toString().padStart(2, "0"), ":").concat(l.toString().padStart(2, "0"), ":").concat(u.toString().padStart(2, "0"));
      }
    } ]);
  }();
  function ProgressManager_typeof(r) {
    return ProgressManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, ProgressManager_typeof(r);
  }
  function ProgressManager_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function ProgressManager_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, ProgressManager_toPropertyKey(l.key), l);
    }
  }
  function ProgressManager_createClass(r, o, a) {
    return o && ProgressManager_defineProperties(r.prototype, o), a && ProgressManager_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function ProgressManager_toPropertyKey(r) {
    var o = ProgressManager_toPrimitive(r, "string");
    return "symbol" == ProgressManager_typeof(o) ? o : o + "";
  }
  function ProgressManager_toPrimitive(r, o) {
    if ("object" != ProgressManager_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != ProgressManager_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var b = function() {
    function ProgressManager(r, o) {
      ProgressManager_classCallCheck(this, ProgressManager);
      this.playerCore = r;
      this.targetVideo = r.targetVideo;
      this.uiElements = o;
      this.progressBarElement = null;
      this.progressIndicator = null;
      this.currentTimeDisplay = null;
      this.totalDurationDisplay = null;
      this.timeIndicator = null;
      this.isDraggingProgress = false;
      this.progressHandleMoveHandler = null;
      this.progressHandleUpHandler = null;
      this.lastDragX = 0;
      this.isTouchDevice = "ontouchstart" in window;
    }
    return ProgressManager_createClass(ProgressManager, [ {
      "key": "init",
      "value": function init(r) {
        this.progressBarElement = r.progressBarElement;
        this.progressIndicator = r.progressIndicator;
        this.currentTimeDisplay = r.currentTimeDisplay;
        this.totalDurationDisplay = r.totalDurationDisplay;
        this.timeIndicator = r.timeIndicator;
        this.progressBarContainer = this.progressBarElement.parentElement;
        this.progressBarElement.addEventListener("click", this.handleProgressClick.bind(this));
        this.progressBarContainer.addEventListener("mousedown", this.startProgressDrag.bind(this));
        this.progressBarContainer.addEventListener("touchstart", this.startProgressDrag.bind(this), {
          "passive": false
        });
        this.targetVideo.addEventListener("timeupdate", this.updateProgressBar.bind(this));
        return this;
      }
    }, {
      "key": "updateProgressBar",
      "value": function updateProgressBar() {
        if (!this.targetVideo || !this.progressBarElement || !this.progressIndicator) {
          return;
        }
        var r = this.targetVideo.currentTime;
        var o = this.targetVideo.duration;
        if (isNaN(o) || o <= 0) {
          return;
        }
        var a = r / o * 100;
        this.progressIndicator.style.width = "".concat(a, "%");
        this.updateCurrentTimeDisplay();
      }
    }, {
      "key": "updateCurrentTimeDisplay",
      "value": function updateCurrentTimeDisplay() {
        if (!this.targetVideo || !this.currentTimeDisplay || !this.totalDurationDisplay) {
          return;
        }
        var r = this.targetVideo.currentTime;
        var o = this.targetVideo.duration;
        if (isNaN(o)) {
          return;
        }
        this.currentTimeDisplay.textContent = this.formatTime(r);
        var a = o - r;
        this.totalDurationDisplay.textContent = "-".concat(this.formatTime(a));
      }
    }, {
      "key": "formatTime",
      "value": function formatTime(r) {
        if (isNaN(r) || r < 0) {
          return "00:00:00";
        }
        var o = Math.floor(r);
        var a = Math.floor(o / 3600);
        var l = Math.floor(o % 3600 / 60);
        var u = o % 60;
        return "".concat(a.toString().padStart(2, "0"), ":").concat(l.toString().padStart(2, "0"), ":").concat(u.toString().padStart(2, "0"));
      }
    }, {
      "key": "handleProgressClick",
      "value": function handleProgressClick(r) {
        if (this.isDraggingProgress) {
          return;
        }
        var o = this.progressBarElement.getBoundingClientRect();
        var a = (r.clientX - o.left) / o.width;
        var l = this.targetVideo.duration;
        if (isNaN(l)) {
          return;
        }
        var u = l * a;
        this.targetVideo.currentTime = u;
        this.updateProgressBar();
      }
    }, {
      "key": "seekRelative",
      "value": function seekRelative(r) {
        if (!this.targetVideo) {
          return;
        }
        var o = Math.max(0, Math.min(this.targetVideo.duration, this.targetVideo.currentTime + r));
        this.targetVideo.currentTime = o;
      }
    }, {
      "key": "startProgressDrag",
      "value": function startProgressDrag(r) {
        r.preventDefault();
        r.stopPropagation();
        this.isDraggingProgress = true;
        this.lastDragX = r.type.includes("touch") ? r.touches[0].clientX : r.clientX;
        this.progressBarElement.classList.add("tm-progress-bar-expanded");
        this.progressBarElement.classList.remove("tm-progress-bar-normal");
        this.progressBarElement.classList.add("tm-dragging");
        if (this.timeIndicator) {
          this.timeIndicator.style.display = "block";
          this.timeIndicator.style.opacity = "1";
          this.updateTimeIndicator(r);
        }
        var o = this.handleProgressMove.bind(this);
        var a = this.handleProgressUp.bind(this);
        this.removeProgressEventListeners();
        if (r.type.includes("touch")) {
          document.addEventListener("touchmove", o, {
            "passive": false
          });
          document.addEventListener("touchend", a, {
            "passive": false
          });
          document.addEventListener("touchcancel", a, {
            "passive": false
          });
        } else {
          document.addEventListener("mousemove", o);
          document.addEventListener("mouseup", a);
          document.addEventListener("mouseleave", a);
        }
        this.progressHandleMoveHandler = o;
        this.progressHandleUpHandler = a;
        var l = this.progressBarElement.getBoundingClientRect();
        var u;
        var p = ((r.type.includes("touch") ? r.touches[0].clientX : r.clientX) - l.left) / l.width;
        p = Math.max(0, Math.min(1, p));
        var v = this.targetVideo.duration;
        if (!isNaN(v)) {
          var y = v * p;
          this.targetVideo.currentTime = y;
          this.progressIndicator.style.width = "".concat(100 * p, "%");
          this.updateCurrentTimeDisplay();
        }
      }
    }, {
      "key": "handleProgressMove",
      "value": function handleProgressMove(r) {
        if (!this.isDraggingProgress) {
          return;
        }
        r.preventDefault();
        var o = r.type.includes("touch") ? r.touches[0].clientX : r.clientX;
        this.updateTimeIndicator(r);
        var a = this.progressBarElement.getBoundingClientRect();
        if (a.width <= 0) {
          return;
        }
        var l = (o - a.left) / a.width;
        l = Math.max(0, Math.min(1, l));
        var u = this.targetVideo.duration;
        if (isNaN(u)) {
          return;
        }
        var p = u * l;
        this.progressIndicator.style.width = "".concat(100 * l, "%");
        this.targetVideo.currentTime = p;
        this.currentTimeDisplay.textContent = this.formatTime(p);
        var v = u - p;
        this.totalDurationDisplay.textContent = "-".concat(this.formatTime(v));
        this.lastDragX = o;
      }
    }, {
      "key": "handleProgressUp",
      "value": function handleProgressUp(r) {
        if (!this.isDraggingProgress) {
          return;
        }
        var o = this.progressBarElement.getBoundingClientRect();
        var a;
        var l = ((r.type.includes("touch") ? r.changedTouches && r.changedTouches[0] ? r.changedTouches[0].clientX : this.lastDragX : r.clientX || this.lastDragX) - o.left) / o.width;
        l = Math.max(0, Math.min(1, l));
        var u = this.targetVideo.duration;
        if (!isNaN(u)) {
          this.targetVideo.currentTime = u * l;
        }
        if (this.timeIndicator) {
          this.timeIndicator.style.opacity = "0";
        }
        this.progressBarElement.classList.remove("tm-dragging");
        if (!this.progressBarElement.classList.contains("tm-progress-bar-hovered")) {
          this.progressBarElement.classList.add("tm-progress-bar-normal");
          this.progressBarElement.classList.remove("tm-progress-bar-expanded");
        }
        this.isDraggingProgress = false;
        this.lastDragX = 0;
        this.removeProgressEventListeners();
      }
    }, {
      "key": "removeProgressEventListeners",
      "value": function removeProgressEventListeners() {
        if (this.progressHandleMoveHandler) {
          document.removeEventListener("mousemove", this.progressHandleMoveHandler);
          document.removeEventListener("touchmove", this.progressHandleMoveHandler);
        }
        if (this.progressHandleUpHandler) {
          document.removeEventListener("mouseup", this.progressHandleUpHandler);
          document.removeEventListener("touchend", this.progressHandleUpHandler);
          document.removeEventListener("touchcancel", this.progressHandleUpHandler);
          document.removeEventListener("mouseleave", this.progressHandleUpHandler);
        }
        this.progressHandleMoveHandler = null;
        this.progressHandleUpHandler = null;
      }
    }, {
      "key": "updateTimeIndicator",
      "value": function updateTimeIndicator(r) {
        if (!this.timeIndicator || !this.targetVideo) {
          return;
        }
        var o = r.type.includes("touch") ? r.touches[0].clientX : r.clientX;
        var a = r.type.includes("touch") ? r.touches[0].clientY : r.clientY;
        var l = this.uiElements.videoWrapper.getBoundingClientRect();
        var u = this.progressBarElement.getBoundingClientRect();
        var p = Math.max(l.left + 10, Math.min(l.right - 10, o));
        var v = u.top - 20;
        this.timeIndicator.style.left = "".concat(p, "px");
        this.timeIndicator.style.top = "".concat(v, "px");
        var y = (o - u.left) / u.width;
        var b = Math.max(0, Math.min(1, y));
        var k = this.targetVideo.duration;
        if (isNaN(k)) {
          return;
        }
        var C = k * b;
        this.timeIndicator.textContent = "".concat(this.formatTime(C), " / ").concat(this.formatTime(k));
      }
    } ]);
  }();
  function EventManager_typeof(r) {
    return EventManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, EventManager_typeof(r);
  }
  function EventManager_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function EventManager_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, EventManager_toPropertyKey(l.key), l);
    }
  }
  function EventManager_createClass(r, o, a) {
    return o && EventManager_defineProperties(r.prototype, o), a && EventManager_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function EventManager_toPropertyKey(r) {
    var o = EventManager_toPrimitive(r, "string");
    return "symbol" == EventManager_typeof(o) ? o : o + "";
  }
  function EventManager_toPrimitive(r, o) {
    if ("object" != EventManager_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != EventManager_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var k = function() {
    function EventManager(r, o, a) {
      EventManager_classCallCheck(this, EventManager);
      this.playerCore = r;
      this.targetVideo = r.targetVideo;
      this.uiElements = o;
      this.managers = a;
      this.resizeObserver = null;
      this.clickLock = false;
      this.clickLockTimeout = null;
    }
    return EventManager_createClass(EventManager, [ {
      "key": "init",
      "value": function init() {
        this.handleWindowResizeBound = this.handleWindowResize.bind(this);
        this.handleContainerResizeBound = this.handleContainerResize.bind(this);
        this.handleOverlayTouchMoveBound = function(r) {
          return r.preventDefault();
        };
        this.clickLock = false;
        this.clickLockTimeout = null;
        this.handleCloseButtonClickBound = this.handleCloseButtonClick.bind(this);
        if (this.uiElements.closeBtn) {
          this.uiElements.closeBtn.addEventListener("click", this.handleCloseButtonClickBound);
        }
        this.handleSettingsButtonClickBound = this.handleSettingsButtonClick.bind(this);
        if (this.uiElements.settingsBtn) {
          this.uiElements.settingsBtn.addEventListener("click", this.handleSettingsButtonClickBound);
        }
        window.addEventListener("resize", this.handleWindowResizeBound);
        if (this.uiElements.container && "undefined" !== typeof ResizeObserver) {
          this.resizeObserver = new ResizeObserver(this.handleContainerResizeBound);
          this.resizeObserver.observe(this.uiElements.container);
        }
        if (this.uiElements.overlay) {
          this.uiElements.overlay.addEventListener("touchmove", this.handleOverlayTouchMoveBound, {
            "passive": false
          });
        }
        this.initVideoEventListeners();
      }
    }, {
      "key": "initVideoEventListeners",
      "value": function initVideoEventListeners() {
        var r = this;
        this.handleMetadataLoadedBound = function() {
          if (r.managers.progressManager) {
            r.managers.progressManager.updateProgressBar();
          }
          if (r.managers.loopManager) {
            r.managers.loopManager.updateLoopTimeDisplay();
            r.managers.loopManager.updateLoopMarkers();
          }
          if (r.managers.dragManager) {
            r.managers.dragManager.updateHandlePosition();
          }
          if (r.managers.uiManager) {
            r.managers.uiManager.updateContainerMinHeight();
          }
          if (r.managers.swipeManager) {
            r.managers.swipeManager.updateSize();
          }
        };
        this.targetVideo.addEventListener("loadedmetadata", this.handleMetadataLoadedBound);
        this.handleCanPlayBound = function() {
          if (r.managers.uiManager) {
            r.managers.uiManager.updateContainerMinHeight();
          }
          if (r.managers.swipeManager) {
            r.managers.swipeManager.updateSize();
          }
        };
        this.targetVideo.addEventListener("canplay", this.handleCanPlayBound);
        this.handleVideoResizeBound = function() {
          if (r.managers.uiManager) {
            r.managers.uiManager.updateContainerMinHeight();
          }
          if (r.managers.swipeManager) {
            r.managers.swipeManager.updateSize();
          }
        };
        this.targetVideo.addEventListener("resize", this.handleVideoResizeBound);
        this.handlePlayBound = function() {
          if (r.managers.controlManager) {
            r.managers.controlManager.updatePlayPauseButton();
          }
        };
        this.targetVideo.addEventListener("play", this.handlePlayBound);
        this.handlePauseBound = function() {
          if (r.managers.controlManager) {
            r.managers.controlManager.updatePlayPauseButton();
            r.managers.controlManager.showPauseIndicator();
          }
        };
        this.targetVideo.addEventListener("pause", this.handlePauseBound);
      }
    }, {
      "key": "handleVideoWrapperClick",
      "value": function handleVideoWrapperClick(r) {
        var o = this;
        if (r.target === this.uiElements.videoWrapper || r.target === this.targetVideo) {
          if (this.clickLock) {
            return;
          }
          if (this.managers.swipeManager && "function" === typeof this.managers.swipeManager.wasRecentlyDragging && this.managers.swipeManager.wasRecentlyDragging()) {
            return;
          }
          this.clickLock = true;
          if (this.clickLockTimeout) {
            clearTimeout(this.clickLockTimeout);
          }
          this.clickLockTimeout = setTimeout((function() {
            o.clickLock = false;
            o.clickLockTimeout = null;
          }), 500);
          if (this.targetVideo.paused) {
            this.targetVideo.play();
          } else {
            this.targetVideo.pause();
            if (this.managers.controlManager) {
              this.managers.controlManager.showPauseIndicator();
            }
          }
          if (this.managers.controlManager) {
            this.managers.controlManager.updatePlayPauseButton();
          }
        }
      }
    }, {
      "key": "handleCloseButtonClick",
      "value": function handleCloseButtonClick() {
        this.cleanup();
        this.playerCore.close(this.uiElements.overlay, this.uiElements.container, this.uiElements.playerContainer);
      }
    }, {
      "key": "handleSettingsButtonClick",
      "value": function handleSettingsButtonClick() {
        if (this.managers.settingsManager) {
          this.managers.settingsManager.toggleSettingsPanel();
        }
      }
    }, {
      "key": "handleWindowResize",
      "value": function handleWindowResize() {
        if (this.managers.uiManager) {
          this.managers.uiManager.updateContainerMinHeight();
        }
        if (this.managers.dragManager) {
          this.managers.dragManager.updateHandlePosition();
        }
        if (this.managers.swipeManager) {
          this.managers.swipeManager.updateSize();
        }
      }
    }, {
      "key": "handleContainerResize",
      "value": function handleContainerResize() {
        if (this.managers.dragManager) {
          this.managers.dragManager.updateHandlePosition();
        }
        if (this.managers.swipeManager) {
          this.managers.swipeManager.updateSize();
        }
      }
    }, {
      "key": "cleanup",
      "value": function cleanup() {
        window.removeEventListener("resize", this.handleWindowResizeBound);
        if (this.resizeObserver) {
          this.resizeObserver.disconnect();
          this.resizeObserver = null;
        }
        if (this.clickLockTimeout) {
          clearTimeout(this.clickLockTimeout);
          this.clickLockTimeout = null;
        }
        if (this.uiElements.closeBtn) {
          this.uiElements.closeBtn.removeEventListener("click", this.handleCloseButtonClickBound);
        }
        if (this.uiElements.settingsBtn) {
          this.uiElements.settingsBtn.removeEventListener("click", this.handleSettingsButtonClickBound);
        }
        if (this.targetVideo) {
          this.targetVideo.removeEventListener("loadedmetadata", this.handleMetadataLoadedBound);
          this.targetVideo.removeEventListener("canplay", this.handleCanPlayBound);
          this.targetVideo.removeEventListener("resize", this.handleVideoResizeBound);
          this.targetVideo.removeEventListener("play", this.handlePlayBound);
          this.targetVideo.removeEventListener("pause", this.handlePauseBound);
        }
        if (this.uiElements.overlay) {
          this.uiElements.overlay.removeEventListener("touchmove", this.handleOverlayTouchMoveBound);
        }
      }
    } ]);
  }();
  function SettingsManager_typeof(r) {
    return SettingsManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, SettingsManager_typeof(r);
  }
  function SettingsManager_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function SettingsManager_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, SettingsManager_toPropertyKey(l.key), l);
    }
  }
  function SettingsManager_createClass(r, o, a) {
    return o && SettingsManager_defineProperties(r.prototype, o), a && SettingsManager_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function SettingsManager_toPropertyKey(r) {
    var o = SettingsManager_toPrimitive(r, "string");
    return "symbol" == SettingsManager_typeof(o) ? o : o + "";
  }
  function SettingsManager_toPrimitive(r, o) {
    if ("object" != SettingsManager_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != SettingsManager_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var C = function() {
    function SettingsManager(r, o) {
      SettingsManager_classCallCheck(this, SettingsManager);
      this.playerCore = r;
      this.targetVideo = r.targetVideo;
      this.uiElements = o;
      this.settingsPanel = o.settingsPanel;
      this.overlayClickHandler = null;
      this.settings = {
        "showSeekControlRow": true,
        "showLoopControlRow": true,
        "showPlaybackControlRow": true,
        "showProgressBar": true
      };
    }
    return SettingsManager_createClass(SettingsManager, [ {
      "key": "init",
      "value": function init() {
        this.loadSettings();
        this.createSettingsPanel();
        return this;
      }
    }, {
      "key": "createSettingsPanel",
      "value": function createSettingsPanel() {
        var r = this;
        var o = document.createElement("div");
        o.className = "tm-settings-options";
        o.style.display = "flex";
        o.style.flexDirection = "column";
        o.style.gap = "12px";
        var a = this.createSettingOption("显示-进度条", "showProgressBar", this.settings.showProgressBar, (function(o) {
          r.settings.showProgressBar = o;
          r.saveSettings();
          r.updateControlRowsVisibility();
        }));
        var l = this.createSettingOption("显示-进度跳转", "showSeekControlRow", this.settings.showSeekControlRow, (function(o) {
          r.settings.showSeekControlRow = o;
          r.saveSettings();
          r.updateControlRowsVisibility();
        }));
        var u = this.createSettingOption("显示-循环控制", "showLoopControlRow", this.settings.showLoopControlRow, (function(o) {
          r.settings.showLoopControlRow = o;
          r.saveSettings();
          r.updateControlRowsVisibility();
        }));
        var p = this.createSettingOption("显示-播放倍速", "showPlaybackControlRow", this.settings.showPlaybackControlRow, (function(o) {
          r.settings.showPlaybackControlRow = o;
          r.saveSettings();
          r.updateControlRowsVisibility();
        }));
        o.appendChild(a);
        o.appendChild(l);
        o.appendChild(u);
        o.appendChild(p);
        this.settingsPanel.appendChild(o);
      }
    }, {
      "key": "createSettingOption",
      "value": function createSettingOption(r, o, a, l) {
        var u = document.createElement("div");
        u.className = "tm-settings-option";
        u.id = "tm-setting-".concat(o);
        var p = document.createElement("label");
        p.className = "tm-settings-label";
        p.textContent = r;
        var v = document.createElement("div");
        v.className = "tm-toggle-switch";
        var y = document.createElement("input");
        y.type = "checkbox";
        y.checked = a;
        y.className = "tm-toggle-input";
        var b = document.createElement("span");
        b.className = a ? "tm-toggle-slider checked" : "tm-toggle-slider";
        u.tabIndex = 0;
        v.appendChild(y);
        v.appendChild(b);
        var k = function toggleSwitch(r) {
          r.preventDefault();
          r.stopPropagation();
          y.checked = !y.checked;
          if (y.checked) {
            b.className = "tm-toggle-slider checked";
          } else {
            b.className = "tm-toggle-slider";
          }
          if ("function" === typeof l) {
            l(y.checked);
          }
        };
        u.addEventListener("click", k);
        u.addEventListener("keydown", (function(r) {
          if ("Enter" === r.key || " " === r.key) {
            r.preventDefault();
            k(r);
          }
        }));
        u.appendChild(p);
        u.appendChild(v);
        return u;
      }
    }, {
      "key": "toggleSettingsPanel",
      "value": function toggleSettingsPanel() {
        var r = this;
        var o;
        if (this.settingsPanel.classList.contains("active")) {
          this.closeSettingsPanel();
        } else {
          this.settingsPanel.style.display = "block";
          setTimeout((function() {
            r.settingsPanel.classList.add("active");
          }), 10);
          this.overlayClickHandler = function(o) {
            if (!r.settingsPanel.contains(o.target) && o.target !== r.uiElements.settingsBtn) {
              r.closeSettingsPanel();
            }
          };
          setTimeout((function() {
            if (r.uiElements.overlay) {
              r.uiElements.overlay.addEventListener("click", r.overlayClickHandler);
            }
          }), 50);
        }
      }
    }, {
      "key": "closeSettingsPanel",
      "value": function closeSettingsPanel() {
        var r = this;
        this.settingsPanel.classList.remove("active");
        if (this.uiElements.overlay && this.overlayClickHandler) {
          this.uiElements.overlay.removeEventListener("click", this.overlayClickHandler);
          this.overlayClickHandler = null;
        }
        setTimeout((function() {
          r.settingsPanel.style.display = "none";
        }), 300);
      }
    }, {
      "key": "loadSettings",
      "value": function loadSettings() {
        try {
          var r = function getValue(r, o) {
            try {
              if ("function" === typeof GM_getValue) {
                return GM_getValue(r, o);
              } else {
                var a = localStorage.getItem("missNoAD_".concat(r));
                return null !== a ? JSON.parse(a) : o;
              }
            } catch (r) {
              return o;
            }
          };
          this.settings.showProgressBar = r("showProgressBar", true);
          this.settings.showSeekControlRow = r("showSeekControlRow", true);
          this.settings.showLoopControlRow = r("showLoopControlRow", true);
          this.settings.showPlaybackControlRow = r("showPlaybackControlRow", true);
        } catch (r) {}
      }
    }, {
      "key": "saveSettings",
      "value": function saveSettings() {
        try {
          var r = function setValue(r, o) {
            try {
              if ("function" === typeof GM_setValue) {
                GM_setValue(r, o);
                return true;
              } else {
                localStorage.setItem("missNoAD_".concat(r), JSON.stringify(o));
                return true;
              }
            } catch (r) {
              return false;
            }
          };
          r("showProgressBar", this.settings.showProgressBar);
          r("showSeekControlRow", this.settings.showSeekControlRow);
          r("showLoopControlRow", this.settings.showLoopControlRow);
          r("showPlaybackControlRow", this.settings.showPlaybackControlRow);
        } catch (r) {}
      }
    }, {
      "key": "updateControlRowsVisibility",
      "value": function updateControlRowsVisibility() {
        var r = document.querySelector(".tm-control-buttons");
        if (!r) {
          return;
        }
        var o = r.querySelector(".tm-seek-control-row");
        var a = r.querySelector(".tm-loop-control-row");
        var l = r.querySelector(".tm-playback-control-row");
        var u = r.querySelector(".tm-progress-row");
        if (u) {
          u.style.display = this.settings.showProgressBar ? "flex" : "none";
        }
        if (o) {
          o.style.display = this.settings.showSeekControlRow ? "flex" : "none";
        }
        if (a) {
          a.style.display = this.settings.showLoopControlRow ? "flex" : "none";
        }
        if (l) {
          l.style.display = this.settings.showPlaybackControlRow ? "flex" : "none";
        }
      }
    }, {
      "key": "updateSetting",
      "value": function updateSetting(r, o) {
        if (this.settings.hasOwnProperty(r)) {
          this.settings[r] = o;
          this.saveSettings();
          if (r.startsWith("show") && r.endsWith("Row")) {
            this.updateControlRowsVisibility();
          }
        }
      }
    } ]);
  }();
  function videoSwipeManager_typeof(r) {
    return videoSwipeManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, videoSwipeManager_typeof(r);
  }
  function videoSwipeManager_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function videoSwipeManager_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, videoSwipeManager_toPropertyKey(l.key), l);
    }
  }
  function videoSwipeManager_createClass(r, o, a) {
    return o && videoSwipeManager_defineProperties(r.prototype, o), a && videoSwipeManager_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function videoSwipeManager_toPropertyKey(r) {
    var o = videoSwipeManager_toPrimitive(r, "string");
    return "symbol" == videoSwipeManager_typeof(o) ? o : o + "";
  }
  function videoSwipeManager_toPrimitive(r, o) {
    if ("object" != videoSwipeManager_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != videoSwipeManager_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var _ = function() {
    function VideoSwipeManager(r, o, a) {
      videoSwipeManager_classCallCheck(this, VideoSwipeManager);
      this.video = r;
      this.container = o;
      this.handle = a;
      this.offset = 0;
      this.maxOffset = 0;
      this.isDragging = false;
      this.isHandleDragging = false;
      this.startX = 0;
      this.startOffset = 0;
      this.lastSnapPosition = null;
      this.wasDragging = false;
      this.dragEndTimestamp = 0;
      this.dragDistance = 0;
      this.minDragDistance = 10;
      this.videoWidth = 0;
      this.videoHeight = 0;
      this.containerWidth = 0;
      this.containerHeight = 0;
      this.videoScale = 1;
      this.velocityTracker = {
        "positions": [],
        "lastTimestamp": 0,
        "currentVelocity": 0
      };
      this.handleVelocityTracker = {
        "positions": [],
        "lastTimestamp": 0,
        "currentVelocity": 0
      };
      this.animation = {
        "active": false,
        "rafId": null,
        "targetOffset": 0,
        "startTime": 0,
        "duration": 0
      };
      this._pointerDownHandler = this._handlePointerDown.bind(this);
      this._pointerMoveHandler = this._handlePointerMove.bind(this);
      this._pointerUpHandler = this._handlePointerUp.bind(this);
      this._handlePointerDownHandler = this._handleHandlePointerDown.bind(this);
      this._handlePointerMoveHandler = this._handleHandlePointerMove.bind(this);
      this._handlePointerUpHandler = this._handleHandlePointerUp.bind(this);
      this._init();
    }
    return videoSwipeManager_createClass(VideoSwipeManager, [ {
      "key": "_init",
      "value": function _init() {
        var r = this;
        this.video.style.willChange = "transform";
        this.video.style.transition = "transform 0.2s cubic-bezier(0.215, 0.61, 0.355, 1)";
        this.video.addEventListener("pointerdown", this._pointerDownHandler);
        if (this.handle) {
          this.handle.style.willChange = "transform, left";
          this.handle.style.transition = "left 0.2s cubic-bezier(0.215, 0.61, 0.355, 1), width 0.2s ease";
          this.handle.addEventListener("pointerdown", this._handlePointerDownHandler);
        }
        this._updateConstraints();
        this.video.addEventListener("loadedmetadata", (function() {
          r._updateConstraints();
        }));
        this.video.addEventListener("canplay", (function() {
          r._updateConstraints();
        }));
      }
    }, {
      "key": "_updateVideoDimensions",
      "value": function _updateVideoDimensions() {
        this.videoWidth = this.video.videoWidth || this.video.naturalWidth || 0;
        this.videoHeight = this.video.videoHeight || this.video.naturalHeight || 0;
        this.containerWidth = this.container.offsetWidth;
        this.containerHeight = this.container.offsetHeight;
        if (this.videoWidth <= 0 || this.videoHeight <= 0 || this.containerWidth <= 0 || this.containerHeight <= 0) {
          this.videoScale = 1;
          this.maxOffset = 0;
          return false;
        }
        var r = this.video.getBoundingClientRect();
        var o = r.width;
        var a = r.height;
        this.videoScale = a / this.videoHeight;
        var l = Math.max(0, o - this.containerWidth);
        this.maxOffset = l / 2;
        return true;
      }
    }, {
      "key": "_updateConstraints",
      "value": function _updateConstraints() {
        var r;
        if (!this._updateVideoDimensions() || this.maxOffset <= 0) {
          this._applyOffset(0, false);
          this._updateHandleState(false);
          return false;
        }
        this.offset = Math.max(-this.maxOffset, Math.min(this.offset, this.maxOffset));
        this._applyOffset(this.offset, false);
        this._updateHandleState(true);
        return true;
      }
    }, {
      "key": "_applyOffset",
      "value": function _applyOffset(r) {
        var o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true;
        this.offset = Math.max(-this.maxOffset, Math.min(r, this.maxOffset));
        if (o) {
          this.video.style.transition = "transform 0.2s cubic-bezier(0.215, 0.61, 0.355, 1)";
        } else {
          this.video.style.transition = "none";
        }
        this.video.style.transform = "translateX(".concat(this.offset, "px)");
        this._updateHandlePosition();
        return this;
      }
    }, {
      "key": "_updateHandleState",
      "value": function _updateHandleState(r) {
        if (!this.handle) {
          return;
        }
        this._updateHandleWidth();
        if (r) {
          this.handle.style.cursor = "grab";
          this.video.style.cursor = "grab";
          var o = this.handle.parentElement;
          if (o) {
            o.style.cursor = "grab";
          }
        } else {
          this.handle.style.cursor = "default";
          this.video.style.cursor = "default";
        }
        this._updateHandlePosition();
      }
    }, {
      "key": "_updateHandleWidth",
      "value": function _updateHandleWidth() {
        if (!this.handle) {
          return;
        }
        var r = 30;
        this.handle.style.width = "".concat(r, "%");
      }
    }, {
      "key": "_updateHandlePosition",
      "value": function _updateHandlePosition() {
        if (!this.handle) {
          return;
        }
        var r = this.handle.parentElement;
        if (!r) {
          return;
        }
        if (this.maxOffset <= 0) {
          this.handle.style.left = "50%";
          this.handle.style.transform = "translateX(-50%)";
          return;
        }
        var o = r.offsetWidth;
        var a;
        var l = o - this.handle.offsetWidth;
        var u;
        var p;
        var v = (1 - (this.offset + this.maxOffset) / (2 * this.maxOffset)) * l / o * 100;
        this.handle.style.left = "".concat(v, "%");
        this.handle.style.transform = "";
      }
    }, {
      "key": "_trackVelocity",
      "value": function _trackVelocity(r) {
        var o = Date.now();
        var a = this.velocityTracker;
        a.positions.push({
          "x": r,
          "time": o
        });
        while (a.positions.length > 1 && o - a.positions[0].time > 100) {
          a.positions.shift();
        }
        if (a.positions.length > 1) {
          var l = a.positions[0];
          var u = a.positions[a.positions.length - 1];
          var p = u.time - l.time;
          if (p > 0) {
            a.currentVelocity = (u.x - l.x) / p;
          }
        }
        a.lastTimestamp = o;
      }
    }, {
      "key": "_applyInertia",
      "value": function _applyInertia() {
        if (Math.abs(this.velocityTracker.currentVelocity) < .1) {
          return;
        }
        var r = this.velocityTracker.currentVelocity;
        var o = .002;
        var a = r * r / (2 * o) * Math.sign(r);
        var l = this.offset + a;
        l = Math.max(-this.maxOffset, Math.min(l, this.maxOffset));
        var u = Math.min(.8 * Math.abs(r / o), 400);
        this._animateTo(l, u);
      }
    }, {
      "key": "_animateTo",
      "value": function _animateTo(r) {
        var o = this;
        var a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 300;
        if (this.animation.active) {
          cancelAnimationFrame(this.animation.rafId);
        }
        this.animation.active = true;
        this.animation.targetOffset = r;
        this.animation.startTime = Date.now();
        this.animation.duration = a;
        var l = function animate() {
          var u;
          var p = Date.now() - o.animation.startTime;
          if (p >= a) {
            o._applyOffset(r, false);
            o.animation.active = false;
            return;
          }
          var v = 1 - Math.pow(1 - p / a, 3);
          var y = o.offset + (r - o.offset) * v;
          o._applyOffset(y, false);
          o.animation.rafId = requestAnimationFrame(l);
        };
        this.animation.rafId = requestAnimationFrame(l);
      }
    }, {
      "key": "_handlePointerDown",
      "value": function _handlePointerDown(r) {
        if (this.maxOffset <= 0) {
          return;
        }
        if (!r.isPrimary) {
          return;
        }
        if (this.animation.active) {
          cancelAnimationFrame(this.animation.rafId);
          this.animation.active = false;
        }
        this.isDragging = true;
        this.startX = r.clientX;
        this.startOffset = this.offset;
        this.dragDistance = 0;
        this.velocityTracker.positions = [];
        this.velocityTracker.lastTimestamp = Date.now();
        this.velocityTracker.currentVelocity = 0;
        this._trackVelocity(r.clientX);
        this.video.style.cursor = "grabbing";
        this.video.style.transition = "none";
        if (this.video.setPointerCapture) {
          this.video.setPointerCapture(r.pointerId);
        }
        this.video.addEventListener("pointermove", this._pointerMoveHandler);
        this.video.addEventListener("pointerup", this._pointerUpHandler);
        this.video.addEventListener("pointercancel", this._pointerUpHandler);
        if (window.navigator.vibrate) {
          window.navigator.vibrate(5);
        }
        r.preventDefault();
      }
    }, {
      "key": "_handlePointerMove",
      "value": function _handlePointerMove(r) {
        if (!this.isDragging || !r.isPrimary) {
          return;
        }
        var o = r.clientX - this.startX;
        this.dragDistance = Math.max(this.dragDistance, Math.abs(o));
        var a = Math.max(-this.maxOffset, Math.min(this.startOffset + o, this.maxOffset));
        this._applyOffset(a, false);
        this._trackVelocity(r.clientX);
        r.preventDefault();
      }
    }, {
      "key": "_handlePointerUp",
      "value": function _handlePointerUp(r) {
        if (!this.isDragging || !r.isPrimary) {
          return;
        }
        this.isDragging = false;
        if (this.dragDistance > this.minDragDistance) {
          this.wasDragging = true;
          this.dragEndTimestamp = Date.now();
        } else {
          this.wasDragging = false;
        }
        if (this.video.releasePointerCapture) {
          this.video.releasePointerCapture(r.pointerId);
        }
        this.video.removeEventListener("pointermove", this._pointerMoveHandler);
        this.video.removeEventListener("pointerup", this._pointerUpHandler);
        this.video.removeEventListener("pointercancel", this._pointerUpHandler);
        this.video.style.cursor = "grab";
        this._applyInertia();
        r.preventDefault();
      }
    }, {
      "key": "_handleHandlePointerDown",
      "value": function _handleHandlePointerDown(r) {
        if (this.maxOffset <= 0) {
          return;
        }
        if (!r.isPrimary) {
          return;
        }
        if (this.animation.active) {
          cancelAnimationFrame(this.animation.rafId);
          this.animation.active = false;
        }
        this.isHandleDragging = true;
        this.startX = r.clientX;
        this.dragDistance = 0;
        this.startOffset = this.offset;
        var o = this.handle.parentElement;
        var a = o ? o.offsetWidth : 0;
        if (a > 0) {
          var l = this.handle.getBoundingClientRect();
          this.startHandleLeft = l.left - o.getBoundingClientRect().left;
          this.startHandleLeftPercent = this.startHandleLeft / a * 100;
        } else {
          this.startHandleLeft = 0;
          this.startHandleLeftPercent = 0;
        }
        this.handle.style.cursor = "grabbing";
        this.handle.style.transition = "none";
        if (this.handle.setPointerCapture) {
          this.handle.setPointerCapture(r.pointerId);
        }
        this.handle.addEventListener("pointermove", this._handlePointerMoveHandler);
        this.handle.addEventListener("pointerup", this._handlePointerUpHandler);
        this.handle.addEventListener("pointercancel", this._handlePointerUpHandler);
        if (window.navigator.vibrate) {
          window.navigator.vibrate(5);
        }
        r.preventDefault();
      }
    }, {
      "key": "_handleHandlePointerMove",
      "value": function _handleHandlePointerMove(r) {
        if (!this.isHandleDragging || !r.isPrimary) {
          return;
        }
        var o = this.handle.parentElement;
        if (!o) {
          return;
        }
        var a = o.offsetWidth;
        var l = this.handle.offsetWidth;
        if (a <= 0 || l <= 0) {
          return;
        }
        var u = r.clientX - this.startX;
        this.dragDistance = Math.max(this.dragDistance, Math.abs(u));
        var p = this.startHandleLeft + u;
        var v = a - l;
        p = Math.max(0, Math.min(p, v));
        this._trackHandleVelocity(p);
        var y;
        var b = 15;
        var k = false;
        for (var C = 0, _ = [ 0, v / 2, v ]; C < _.length; C++) {
          var P = _[C];
          if (Math.abs(p - P) < b) {
            p = P;
            k = true;
            if (window.navigator.vibrate && (!this.lastSnapPosition || this.lastSnapPosition !== P)) {
              window.navigator.vibrate(15);
              this.lastSnapPosition = P;
            }
            break;
          }
        }
        if (!k) {
          this.lastSnapPosition = null;
        }
        var S = p / a * 100;
        this.handle.style.left = "".concat(S, "%");
        var E;
        var M = 2 * (1 - (v > 0 ? p / v : 0)) * this.maxOffset - this.maxOffset;
        this.video.style.transform = "translateX(".concat(M, "px)");
        this.video.style.transition = "none";
        this.offset = M;
        r.preventDefault();
      }
    }, {
      "key": "_handleHandlePointerUp",
      "value": function _handleHandlePointerUp(r) {
        if (!this.isHandleDragging || !r.isPrimary) {
          return;
        }
        this.isHandleDragging = false;
        if (this.dragDistance > this.minDragDistance) {
          this.wasDragging = true;
          this.dragEndTimestamp = Date.now();
        } else {
          this.wasDragging = false;
        }
        this.lastSnapPosition = null;
        if (this.handle.releasePointerCapture) {
          this.handle.releasePointerCapture(r.pointerId);
        }
        this.handle.removeEventListener("pointermove", this._handlePointerMoveHandler);
        this.handle.removeEventListener("pointerup", this._handlePointerUpHandler);
        this.handle.removeEventListener("pointercancel", this._handlePointerUpHandler);
        this.handle.style.cursor = "grab";
        this._applyHandleInertia();
        r.preventDefault();
      }
    }, {
      "key": "_trackHandleVelocity",
      "value": function _trackHandleVelocity(r) {
        var o = Date.now();
        var a = this.handleVelocityTracker;
        a.positions.push({
          "position": r,
          "time": o
        });
        while (a.positions.length > 1 && o - a.positions[0].time > 100) {
          a.positions.shift();
        }
        if (a.positions.length > 1) {
          var l = a.positions[0];
          var u = a.positions[a.positions.length - 1];
          var p = u.time - l.time;
          if (p > 0) {
            a.currentVelocity = (u.position - l.position) / p;
          }
        }
        a.lastTimestamp = o;
      }
    }, {
      "key": "_applyHandleInertia",
      "value": function _applyHandleInertia() {
        if (Math.abs(this.handleVelocityTracker.currentVelocity) < .1) {
          return;
        }
        var r = this.handle.parentElement;
        if (!r) {
          return;
        }
        var o = r.offsetWidth;
        var a;
        var l = o - this.handle.offsetWidth;
        var u = this.handle.getBoundingClientRect();
        var p = r.getBoundingClientRect();
        var v = u.left - p.left;
        var y = this.handleVelocityTracker.currentVelocity;
        var b;
        var k;
        var C = v + y * y / (2 * .002) * Math.sign(y);
        var _ = [ 0, l / 2, l ];
        var P = 30;
        var S = C = Math.max(0, Math.min(C, l));
        var E = Number.MAX_VALUE;
        for (var M = 0, L = _; M < L.length; M++) {
          var T = L[M];
          var V = Math.abs(C - T);
          if (V < P && V < E) {
            S = T;
            E = V;
          }
        }
        if (E < Number.MAX_VALUE) {
          C = S;
        }
        var B = C / o * 100;
        var I;
        var D = 2 * (1 - (l > 0 ? C / l : 0)) * this.maxOffset - this.maxOffset;
        this.handle.style.transition = "left 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94)";
        this.video.style.transition = "transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94)";
        this.handle.style.left = "".concat(B, "%");
        this.video.style.transform = "translateX(".concat(D, "px)");
        this.offset = D;
        if (E < Number.MAX_VALUE && window.navigator.vibrate) {
          window.navigator.vibrate(10);
        }
        this.handleVelocityTracker.positions = [];
        this.handleVelocityTracker.currentVelocity = 0;
      }
    }, {
      "key": "setOffset",
      "value": function setOffset(r) {
        var o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true;
        return this._applyOffset(r, o);
      }
    }, {
      "key": "reset",
      "value": function reset() {
        var r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : true;
        this._applyOffset(0, r);
        this.wasDragging = false;
        return this;
      }
    }, {
      "key": "updateSize",
      "value": function updateSize() {
        if (this.video && this.container) {
          var r = this.video.getBoundingClientRect();
          var o = this.container.getBoundingClientRect();
          var a = this._updateConstraints();
        }
        return this;
      }
    }, {
      "key": "destroy",
      "value": function destroy() {
        if (this.video) {
          this.video.removeEventListener("pointerdown", this._pointerDownHandler);
          this.video.style.transform = "";
          this.video.style.willChange = "";
          this.video.style.transition = "";
          this.video.style.cursor = "";
        }
        if (this.handle) {
          this.handle.removeEventListener("pointerdown", this._handlePointerDownHandler);
          this.handle.style.willChange = "";
          this.handle.style.transition = "";
          this.handle.style.left = "";
          this.handle.style.width = "";
          this.handle.style.cursor = "";
        }
        if (this.animation.active) {
          cancelAnimationFrame(this.animation.rafId);
          this.animation.active = false;
        }
        this.wasDragging = false;
      }
    }, {
      "key": "wasRecentlyDragging",
      "value": function wasRecentlyDragging() {
        var r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 150;
        if (!this.wasDragging) {
          return false;
        }
        var o;
        if (Date.now() - this.dragEndTimestamp > r) {
          this.wasDragging = false;
          return false;
        }
        return true;
      }
    } ]);
  }();
  function CustomVideoPlayer_typeof(r) {
    return CustomVideoPlayer_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, CustomVideoPlayer_typeof(r);
  }
  function CustomVideoPlayer_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function CustomVideoPlayer_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, CustomVideoPlayer_toPropertyKey(l.key), l);
    }
  }
  function CustomVideoPlayer_createClass(r, o, a) {
    return o && CustomVideoPlayer_defineProperties(r.prototype, o), a && CustomVideoPlayer_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function CustomVideoPlayer_toPropertyKey(r) {
    var o = CustomVideoPlayer_toPrimitive(r, "string");
    return "symbol" == CustomVideoPlayer_typeof(o) ? o : o + "";
  }
  function CustomVideoPlayer_toPrimitive(r, o) {
    if ("object" != CustomVideoPlayer_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != CustomVideoPlayer_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var P = function() {
    function CustomVideoPlayer() {
      var r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
      CustomVideoPlayer_classCallCheck(this, CustomVideoPlayer);
      this.playerCore = new l(r);
      this.callingButton = r.callingButton || null;
      this.managers = {};
      this.initialized = false;
    }
    return CustomVideoPlayer_createClass(CustomVideoPlayer, [ {
      "key": "init",
      "value": function init() {
        var r = this;
        if (this.initialized) {
          return;
        }
        if (!this.playerCore) {
          this.playerCore = new l({
            "callingButton": this.callingButton
          });
        }
        this.playerCore.init();
        if (!this.playerCore.targetVideo) {
          if (this.callingButton) {
            this.callingButton.style.display = "flex";
          }
          return;
        }
        var o = new u(this.playerCore);
        var P = o.createUI();
        this.managers.uiManager = o;
        var S = new C(this.playerCore, P);
        S.init();
        this.managers.settingsManager = S;
        var E = new p(this.playerCore, P);
        var M = E.createProgressControls();
        var L = E.createControlButtonsContainer();
        this.managers.controlManager = E;
        this.playerCore.controlManager = E;
        var T = new b(this.playerCore, P);
        T.init({
          "progressBarElement": E.progressBarElement,
          "progressIndicator": E.progressIndicator,
          "currentTimeDisplay": E.currentTimeDisplay,
          "totalDurationDisplay": E.totalDurationDisplay,
          "timeIndicator": E.timeIndicator
        });
        this.managers.progressManager = T;
        var V = new y(this.playerCore, P);
        V.init({
          "loopStartMarker": E.loopStartMarker,
          "loopEndMarker": E.loopEndMarker,
          "loopRangeElement": E.loopRangeElement,
          "currentPositionDisplay": E.currentPositionDisplay,
          "durationDisplay": E.durationDisplay,
          "loopToggleButton": E.loopToggleButton
        });
        this.managers.loopManager = V;
        E.setLoopManager(V);
        var B = new v(this.playerCore, P);
        B.init();
        this.managers.dragManager = B;
        if (this.playerCore.targetVideo && P.videoWrapper && P.handle) {
          this.swipeManager = new _(this.playerCore.targetVideo, P.videoWrapper, P.handle);
          this.managers.swipeManager = this.swipeManager;
        }
        var I = new k(this.playerCore, P, this.managers);
        I.init();
        this.managers.eventManager = I;
        o.assembleDOM();
        S.updateControlRowsVisibility();
        this.playerCore.restoreVideoState();
        T.updateProgressBar();
        T.updateCurrentTimeDisplay();
        a.updateSafariThemeColor("#000000", true);
        setTimeout((function() {
          if (r.swipeManager) {
            r.swipeManager.updateSize();
          }
          B.updateHandlePosition();
        }), 100);
        setTimeout((function() {
          if (V) {
            V._updateUI();
            V.updateLoopTimeDisplay();
            V.updateLoopMarkers();
          }
          if (T) {
            T.updateProgressBar();
            T.updateCurrentTimeDisplay();
          }
        }), 500);
        this.initialized = true;
      }
    }, {
      "key": "close",
      "value": function close() {
        this.playerCore.close(this.managers.uiManager.overlay, this.managers.uiManager.container, this.managers.uiManager.playerContainer);
        if (this.managers.eventManager) {
          this.managers.eventManager.cleanup();
        }
        if (this.swipeManager) {
          this.swipeManager.destroy();
          this.swipeManager = null;
        }
        for (var r in this.managers) {
          if (this.managers[r] && "function" === typeof this.managers[r].cleanup) {
            this.managers[r].cleanup();
          }
          this.managers[r] = null;
        }
        this.initialized = false;
        this.managers = {};
        this.playerCore = null;
      }
    } ]);
  }();
  function FloatingButton_typeof(r) {
    return FloatingButton_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, FloatingButton_typeof(r);
  }
  function FloatingButton_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function FloatingButton_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, FloatingButton_toPropertyKey(l.key), l);
    }
  }
  function FloatingButton_createClass(r, o, a) {
    return o && FloatingButton_defineProperties(r.prototype, o), a && FloatingButton_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function FloatingButton_toPropertyKey(r) {
    var o = FloatingButton_toPrimitive(r, "string");
    return "symbol" == FloatingButton_typeof(o) ? o : o + "";
  }
  function FloatingButton_toPrimitive(r, o) {
    if ("object" != FloatingButton_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != FloatingButton_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var S = function() {
    function FloatingButton() {
      var r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
      FloatingButton_classCallCheck(this, FloatingButton);
      this.button = null;
      this.videoPlayer = null;
      this.resizeTimeout = null;
      this.playerState = r.playerState || null;
      this.videoCheckInterval = null;
      this.mutationObserver = null;
    }
    return FloatingButton_createClass(FloatingButton, [ {
      "key": "init",
      "value": function init() {
        this.cleanupExistingButtons();
        if (a.findVideoElement()) {
          this.createButton();
          window.addEventListener("resize", this.handleResize.bind(this));
          window.matchMedia("(orientation: portrait)").addEventListener("change", this.handleResize.bind(this));
          this.setupMutationObserver();
        } else {
          this.startVideoElementCheck();
          this.setupMutationObserver();
        }
      }
    }, {
      "key": "setupMutationObserver",
      "value": function setupMutationObserver() {
        if (this.mutationObserver) {
          this.mutationObserver.disconnect();
        }
        this.mutationObserver = new MutationObserver(this.handleDomMutations.bind(this));
        this.mutationObserver.observe(document.body, {
          "childList": true,
          "subtree": true
        });
      }
    }, {
      "key": "handleDomMutations",
      "value": function handleDomMutations() {
        var r = this;
        if (this.mutationTimeout) {
          clearTimeout(this.mutationTimeout);
        }
        this.mutationTimeout = setTimeout((function() {
          var o = a.findVideoElement();
          if (o && !r.button) {
            r.createButton();
            window.addEventListener("resize", r.handleResize.bind(r));
            window.matchMedia("(orientation: portrait)").addEventListener("change", r.handleResize.bind(r));
          } else if (!o && r.button) {
            r.button.style.display = "none";
          } else if (o && r.button && "none" === r.button.style.display) {
            r.button.style.display = "flex";
          }
        }), 300);
      }
    }, {
      "key": "startVideoElementCheck",
      "value": function startVideoElementCheck() {
        var r = this;
        if (this.videoCheckInterval) {
          clearInterval(this.videoCheckInterval);
        }
        this.videoCheckInterval = setInterval((function() {
          if (a.findVideoElement()) {
            if (!r.button) {
              r.createButton();
              window.addEventListener("resize", r.handleResize.bind(r));
              window.matchMedia("(orientation: portrait)").addEventListener("change", r.handleResize.bind(r));
            } else if ("none" === r.button.style.display) {
              r.button.style.display = "flex";
            }
            clearInterval(r.videoCheckInterval);
            r.videoCheckInterval = null;
          }
        }), 2e3);
      }
    }, {
      "key": "cleanupExistingButtons",
      "value": function cleanupExistingButtons() {
        var r = document.querySelectorAll(".tm-floating-button");
        if (r.length > 0) {
          r.forEach((function(r) {
            if (r && r.parentNode) {
              r.parentNode.removeChild(r);
            }
          }));
        }
      }
    }, {
      "key": "handleResize",
      "value": function handleResize() {
        var r = this;
        if (this.resizeTimeout) {
          clearTimeout(this.resizeTimeout);
        }
        this.resizeTimeout = setTimeout((function() {
          if (a.findVideoElement()) {
            r.button.style.display = "flex";
            r.updateButtonPosition();
          } else if (r.button) {
            r.button.style.display = "none";
          }
        }), 200);
      }
    }, {
      "key": "createButton",
      "value": function createButton() {
        var r = this;
        this.button = a.createElementWithStyle("button", "tm-floating-button");
        var o = '\n            <svg width="48" height="48" viewBox="0 0 68 48" fill="none">\n                <path class="tm-play-button-bg" d="M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z" fill="rgb(254, 98, 142)"></path>\n                <path d="M 45,24 27,14 27,34" fill="#fff"></path>\n            </svg>\n        ';
        this.button.innerHTML = o;
        this.button.addEventListener("click", (function() {
          r.handleButtonClick();
        }));
        this.button.style.display = "flex";
        document.body.appendChild(this.button);
        this.updateButtonPosition();
        return this.button;
      }
    }, {
      "key": "updateButtonPosition",
      "value": function updateButtonPosition() {
        if (!this.button) {
          return;
        }
        var r = a.getSafeAreaInsets();
        var o;
        if (a.isPortrait()) {
          this.button.style.bottom = "".concat(Math.max(20, r.bottom), "px");
          this.button.style.right = "auto";
          this.button.style.left = "50%";
          this.button.style.transform = "translateX(-50%)";
        } else {
          this.button.style.bottom = "".concat(Math.max(20, r.bottom + 10), "px");
          this.button.style.right = "".concat(Math.max(20, r.right + 10), "px");
          this.button.style.left = "auto";
          this.button.style.transform = "translateX(0)";
        }
        this.button.style.zIndex = "9980";
      }
    }, {
      "key": "handleButtonClick",
      "value": function handleButtonClick() {
        this.button.style.display = "none";
        this.videoPlayer = new P({
          "playerState": this.playerState,
          "callingButton": this.button
        });
        this.videoPlayer.init();
      }
    }, {
      "key": "remove",
      "value": function remove() {
        if (this.button && this.button.parentNode) {
          this.button.parentNode.removeChild(this.button);
        }
        window.removeEventListener("resize", this.handleResize);
        if (this.videoCheckInterval) {
          clearInterval(this.videoCheckInterval);
          this.videoCheckInterval = null;
        }
        if (this.mutationObserver) {
          this.mutationObserver.disconnect();
          this.mutationObserver = null;
        }
        this.button = null;
      }
    } ]);
  }();
  function PlayerState_typeof(r) {
    return PlayerState_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, PlayerState_typeof(r);
  }
  function PlayerState_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function PlayerState_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, PlayerState_toPropertyKey(l.key), l);
    }
  }
  function PlayerState_createClass(r, o, a) {
    return o && PlayerState_defineProperties(r.prototype, o), a && PlayerState_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function PlayerState_toPropertyKey(r) {
    var o = PlayerState_toPrimitive(r, "string");
    return "symbol" == PlayerState_typeof(o) ? o : o + "";
  }
  function PlayerState_toPrimitive(r, o) {
    if ("object" != PlayerState_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != PlayerState_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var E = function() {
    function PlayerState() {
      PlayerState_classCallCheck(this, PlayerState);
      this.settings = {
        "showSeekControlRow": true,
        "showLoopControlRow": true,
        "showPlaybackControlRow": true
      };
      this._setupStorageMethods();
    }
    return PlayerState_createClass(PlayerState, [ {
      "key": "_setupStorageMethods",
      "value": function _setupStorageMethods() {
        this.hasGMAPI = "function" === typeof GM_getValue && "function" === typeof GM_setValue;
      }
    }, {
      "key": "getValue",
      "value": function getValue(r, o) {
        try {
          if (this.hasGMAPI) {
            return GM_getValue(r, o);
          } else {
            var a = localStorage.getItem("missNoAD_".concat(r));
            return null !== a ? JSON.parse(a) : o;
          }
        } catch (r) {
          return o;
        }
      }
    }, {
      "key": "setValue",
      "value": function setValue(r, o) {
        try {
          if (this.hasGMAPI) {
            GM_setValue(r, o);
            return true;
          } else {
            localStorage.setItem("missNoAD_".concat(r), JSON.stringify(o));
            return true;
          }
        } catch (r) {
          return false;
        }
      }
    }, {
      "key": "loadSettings",
      "value": function loadSettings() {
        try {
          this.settings.showSeekControlRow = this.getValue("showSeekControlRow", true);
          this.settings.showLoopControlRow = this.getValue("showLoopControlRow", true);
          this.settings.showPlaybackControlRow = this.getValue("showPlaybackControlRow", true);
        } catch (r) {}
      }
    }, {
      "key": "saveSettings",
      "value": function saveSettings() {
        try {
          this.setValue("showSeekControlRow", this.settings.showSeekControlRow);
          this.setValue("showLoopControlRow", this.settings.showLoopControlRow);
          this.setValue("showPlaybackControlRow", this.settings.showPlaybackControlRow);
        } catch (r) {}
      }
    }, {
      "key": "updateSetting",
      "value": function updateSetting(r, o) {
        if (r in this.settings) {
          this.settings[r] = o;
          this.saveSettings();
        }
      }
    } ]);
  }();
  function utils_typeof(r) {
    return utils_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, utils_typeof(r);
  }
  function utils_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function utils_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, utils_toPropertyKey(l.key), l);
    }
  }
  function utils_createClass(r, o, a) {
    return o && utils_defineProperties(r.prototype, o), a && utils_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function utils_toPropertyKey(r) {
    var o = utils_toPrimitive(r, "string");
    return "symbol" == utils_typeof(o) ? o : o + "";
  }
  function utils_toPrimitive(r, o) {
    if ("object" != utils_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != utils_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var M = function() {
    function LoginUtils() {
      utils_classCallCheck(this, LoginUtils);
    }
    return utils_createClass(LoginUtils, null, [ {
      "key": "toast",
      "value": function toast(r) {
        var o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 3e3;
        var a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "rgba(0, 0, 0, 0.8)";
        var l = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "#fff";
        var u = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : "top";
        var toast = document.createElement("div");
        toast.innerText = r;
        toast.style.cssText = "\n            position: fixed;\n            z-index: 100000;\n            left: 50%;\n            transform: translateX(-50%);\n            padding: 10px 15px;\n            border-radius: 4px;\n            color: ".concat(l, ";\n            background: ").concat(a, ";\n            font-size: 14px;\n            max-width: 80%;\n            text-align: center;\n            word-break: break-all;\n        ");
        if ("top" === u) {
          toast.style.top = "10%";
        } else if ("bottom" === u) {
          toast.style.bottom = "10%";
        } else if ("center" === u) {
          toast.style.top = "50%";
          toast.style.transform = "translate(-50%, -50%)";
        }
        document.body.appendChild(toast);
        setTimeout((function() {
          toast.style.opacity = "0";
          toast.style.transition = "opacity 0.5s";
          setTimeout((function() {
            document.body.removeChild(toast);
          }), 500);
        }), o);
      }
    }, {
      "key": "throttle",
      "value": function throttle(r, o) {
        var a = 0;
        return function() {
          var l = Date.now();
          if (l - a >= o) {
            a = l;
            for (var u = arguments.length, p = new Array(u), v = 0; v < u; v++) {
              p[v] = arguments[v];
            }
            return r.apply(this, p);
          }
        };
      }
    }, {
      "key": "waitForElement",
      "value": function waitForElement(r) {
        var o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1e4;
        var a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 100;
        return new Promise((function(l, u) {
          var p = document.querySelector(r);
          if (p) {
            return l(p);
          }
          var v = Date.now();
          var y = setInterval((function() {
            var a = document.querySelector(r);
            if (a) {
              clearInterval(y);
              return l(a);
            }
            if (Date.now() - v > o) {
              clearInterval(y);
              u(new Error("等待元素 ".concat(r, " 超时")));
            }
          }), a);
        }));
      }
    }, {
      "key": "getValue",
      "value": function getValue(r, o) {
        try {
          var a = localStorage.getItem("autologin_".concat(r));
          if (null !== a) {
            try {
              return JSON.parse(a);
            } catch (r) {
              return a;
            }
          }
          return o;
        } catch (r) {
          return o;
        }
      }
    }, {
      "key": "setValue",
      "value": function setValue(r, o) {
        try {
          var a = "object" === utils_typeof(o) ? JSON.stringify(o) : o;
          localStorage.setItem("autologin_".concat(r), a);
        } catch (r) {}
      }
    } ]);
  }();
  function i18n_typeof(r) {
    return i18n_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, i18n_typeof(r);
  }
  function i18n_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function i18n_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, i18n_toPropertyKey(l.key), l);
    }
  }
  function i18n_createClass(r, o, a) {
    return o && i18n_defineProperties(r.prototype, o), a && i18n_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function i18n_defineProperty(r, o, a) {
    return (o = i18n_toPropertyKey(o)) in r ? Object.defineProperty(r, o, {
      "value": a,
      "enumerable": !0,
      "configurable": !0,
      "writable": !0
    }) : r[o] = a, r;
  }
  function i18n_toPropertyKey(r) {
    var o = i18n_toPrimitive(r, "string");
    return "symbol" == i18n_typeof(o) ? o : o + "";
  }
  function i18n_toPrimitive(r, o) {
    if ("object" != i18n_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != i18n_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var L = function() {
    function I18n() {
      i18n_classCallCheck(this, I18n);
    }
    return i18n_createClass(I18n, null, [ {
      "key": "userLang",
      "get": function get() {
        return navigator.languages && navigator.languages[0] || navigator.language || "en";
      }
    }, {
      "key": "translate",
      "value": function translate(r) {
        var o;
        var a = (arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "") || this.userLang;
        return (this.strings[a] || this.strings.en)[r] || this.strings.en[r];
      }
    } ]);
  }();
  i18n_defineProperty(L, "strings", {
    "en": {
      "accountNull": "Error: Email or password is empty.",
      "loginSuccess": "Login successful, refreshing the page.",
      "networkFailed": "Status code error.",
      "loginFailed": "Login failed, incorrect email or password. Check console for error details.",
      "autoLogin": "Auto Login"
    },
    "zh-CN": {
      "accountNull": "邮箱或密码为空",
      "loginSuccess": "登录成功,即将刷新页面。",
      "networkFailed": "状态码错误",
      "loginFailed": "登录失败,邮箱或密码错误,可以在控制台查看错误信息。",
      "autoLogin": "自动登录"
    },
    "zh-TW": {
      "accountNull": "郵箱或密碼為空",
      "loginSuccess": "登錄成功,即將刷新頁面。",
      "networkFailed": "狀態碼錯誤",
      "loginFailed": "登錄失敗,郵箱或密碼錯誤,可以在控制台查看錯誤信息。",
      "autoLogin": "自動登錄"
    },
    "ja": {
      "accountNull": "エラー:メールアドレスまたはパスワードが空です。",
      "loginSuccess": "ログイン成功、ページを更新します。",
      "networkFailed": "ステータスコードエラー",
      "loginFailed": "ログインに失敗しました。メールアドレスまたはパスワードが間違っています。エラーの詳細はコンソールで確認できます。",
      "autoLogin": "自動ログイン"
    },
    "vi": {
      "accountNull": "Lỗi: Email hoặc mật khẩu trống.",
      "loginSuccess": "Đăng nhập thành công, đang làm mới trang.",
      "networkFailed": "Lỗi mã trạng thái.",
      "loginFailed": "Đăng nhập không thành công, email hoặc mật khẩu không chính xác. Xem chi tiết lỗi trên bảng điều khiển.",
      "autoLogin": "Đăng nhập tự động"
    }
  });
  function MissavLoginProvider_typeof(r) {
    return MissavLoginProvider_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, MissavLoginProvider_typeof(r);
  }
  function _regeneratorRuntime() {
    _regeneratorRuntime = function _regeneratorRuntime() {
      return o;
    };
    var r, o = {}, a = Object.prototype, l = a.hasOwnProperty, u = "function" == typeof Symbol ? Symbol : {}, p = u.iterator || "@@iterator", v = u.asyncIterator || "@@asyncIterator", y = u.toStringTag || "@@toStringTag";
    function c(r, o, a, l) {
      return Object.defineProperty(r, o, {
        "value": a,
        "enumerable": !l,
        "configurable": !l,
        "writable": !l
      });
    }
    try {
      c({}, "");
    } catch (r) {
      c = function c(r, o, a) {
        return r[o] = a;
      };
    }
    function h(o, a, l, u) {
      var p = a && a.prototype instanceof Generator ? a : Generator, v = Object.create(p.prototype);
      return c(v, "_invoke", function(o, a, l) {
        var u = 1;
        return function(p, v) {
          if (3 === u) {
            throw Error("Generator is already running");
          }
          if (4 === u) {
            if ("throw" === p) {
              throw v;
            }
            return {
              "value": r,
              "done": !0
            };
          }
          for (l.method = p, l.arg = v; ;) {
            var y = l.delegate;
            if (y) {
              var k = d(y, l);
              if (k) {
                if (k === b) {
                  continue;
                }
                return k;
              }
            }
            if ("next" === l.method) {
              l.sent = l._sent = l.arg;
            } else if ("throw" === l.method) {
              if (1 === u) {
                throw u = 4, l.arg;
              }
              l.dispatchException(l.arg);
            } else {
              "return" === l.method && l.abrupt("return", l.arg);
            }
            u = 3;
            var C = s(o, a, l);
            if ("normal" === C.type) {
              if (u = l.done ? 4 : 2, C.arg === b) {
                continue;
              }
              return {
                "value": C.arg,
                "done": l.done
              };
            }
            "throw" === C.type && (u = 4, l.method = "throw", l.arg = C.arg);
          }
        };
      }(o, l, new Context(u || [])), !0), v;
    }
    function s(r, o, a) {
      try {
        return {
          "type": "normal",
          "arg": r.call(o, a)
        };
      } catch (r) {
        return {
          "type": "throw",
          "arg": r
        };
      }
    }
    o.wrap = h;
    var b = {};
    function Generator() {}
    function GeneratorFunction() {}
    function GeneratorFunctionPrototype() {}
    var k = {};
    c(k, p, (function() {
      return this;
    }));
    var C = Object.getPrototypeOf, _ = C && C(C(x([])));
    _ && _ !== a && l.call(_, p) && (k = _);
    var P = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(k);
    function g(r) {
      [ "next", "throw", "return" ].forEach((function(o) {
        c(r, o, (function(r) {
          return this._invoke(o, r);
        }));
      }));
    }
    function AsyncIterator(r, o) {
      function e(a, u, p, v) {
        var y = s(r[a], r, u);
        if ("throw" !== y.type) {
          var b = y.arg, k = b.value;
          return k && "object" == MissavLoginProvider_typeof(k) && l.call(k, "__await") ? o.resolve(k.__await).then((function(r) {
            e("next", r, p, v);
          }), (function(r) {
            e("throw", r, p, v);
          })) : o.resolve(k).then((function(r) {
            b.value = r, p(b);
          }), (function(r) {
            return e("throw", r, p, v);
          }));
        }
        v(y.arg);
      }
      var a;
      c(this, "_invoke", (function(r, l) {
        function i() {
          return new o((function(o, a) {
            e(r, l, o, a);
          }));
        }
        return a = a ? a.then(i, i) : i();
      }), !0);
    }
    function d(o, a) {
      var l = a.method, u = o.i[l];
      if (u === r) {
        return a.delegate = null, "throw" === l && o.i["return"] && (a.method = "return", 
        a.arg = r, d(o, a), "throw" === a.method) || "return" !== l && (a.method = "throw", 
        a.arg = new TypeError("The iterator does not provide a '" + l + "' method")), b;
      }
      var p = s(u, o.i, a.arg);
      if ("throw" === p.type) {
        return a.method = "throw", a.arg = p.arg, a.delegate = null, b;
      }
      var v = p.arg;
      return v ? v.done ? (a[o.r] = v.value, a.next = o.n, "return" !== a.method && (a.method = "next", 
      a.arg = r), a.delegate = null, b) : v : (a.method = "throw", a.arg = new TypeError("iterator result is not an object"), 
      a.delegate = null, b);
    }
    function w(r) {
      this.tryEntries.push(r);
    }
    function m(o) {
      var a = o[4] || {};
      a.type = "normal", a.arg = r, o[4] = a;
    }
    function Context(r) {
      this.tryEntries = [ [ -1 ] ], r.forEach(w, this), this.reset(!0);
    }
    function x(o) {
      if (null != o) {
        var a = o[p];
        if (a) {
          return a.call(o);
        }
        if ("function" == typeof o.next) {
          return o;
        }
        if (!isNaN(o.length)) {
          var u = -1, v = function e() {
            for (;++u < o.length; ) {
              if (l.call(o, u)) {
                return e.value = o[u], e.done = !1, e;
              }
            }
            return e.value = r, e.done = !0, e;
          };
          return v.next = v;
        }
      }
      throw new TypeError(MissavLoginProvider_typeof(o) + " is not iterable");
    }
    return GeneratorFunction.prototype = GeneratorFunctionPrototype, c(P, "constructor", GeneratorFunctionPrototype), 
    c(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = c(GeneratorFunctionPrototype, y, "GeneratorFunction"), 
    o.isGeneratorFunction = function(r) {
      var o = "function" == typeof r && r.constructor;
      return !!o && (o === GeneratorFunction || "GeneratorFunction" === (o.displayName || o.name));
    }, o.mark = function(r) {
      return Object.setPrototypeOf ? Object.setPrototypeOf(r, GeneratorFunctionPrototype) : (r.__proto__ = GeneratorFunctionPrototype, 
      c(r, y, "GeneratorFunction")), r.prototype = Object.create(P), r;
    }, o.awrap = function(r) {
      return {
        "__await": r
      };
    }, g(AsyncIterator.prototype), c(AsyncIterator.prototype, v, (function() {
      return this;
    })), o.AsyncIterator = AsyncIterator, o.async = function(r, a, l, u, p) {
      void 0 === p && (p = Promise);
      var v = new AsyncIterator(h(r, a, l, u), p);
      return o.isGeneratorFunction(a) ? v : v.next().then((function(r) {
        return r.done ? r.value : v.next();
      }));
    }, g(P), c(P, y, "Generator"), c(P, p, (function() {
      return this;
    })), c(P, "toString", (function() {
      return "[object Generator]";
    })), o.keys = function(r) {
      var o = Object(r), a = [];
      for (var l in o) {
        a.unshift(l);
      }
      return function t() {
        for (;a.length; ) {
          if ((l = a.pop()) in o) {
            return t.value = l, t.done = !1, t;
          }
        }
        return t.done = !0, t;
      };
    }, o.values = x, Context.prototype = {
      "constructor": Context,
      "reset": function reset(o) {
        if (this.prev = this.next = 0, this.sent = this._sent = r, this.done = !1, this.delegate = null, 
        this.method = "next", this.arg = r, this.tryEntries.forEach(m), !o) {
          for (var a in this) {
            "t" === a.charAt(0) && l.call(this, a) && !isNaN(+a.slice(1)) && (this[a] = r);
          }
        }
      },
      "stop": function stop() {
        this.done = !0;
        var r = this.tryEntries[0][4];
        if ("throw" === r.type) {
          throw r.arg;
        }
        return this.rval;
      },
      "dispatchException": function dispatchException(o) {
        if (this.done) {
          throw o;
        }
        var a = this;
        function n(r) {
          p.type = "throw", p.arg = o, a.next = r;
        }
        for (var l = a.tryEntries.length - 1; l >= 0; --l) {
          var u = this.tryEntries[l], p = u[4], v = this.prev, y = u[1], b = u[2];
          if (-1 === u[0]) {
            return n("end"), !1;
          }
          if (!y && !b) {
            throw Error("try statement without catch or finally");
          }
          if (null != u[0] && u[0] <= v) {
            if (v < y) {
              return this.method = "next", this.arg = r, n(y), !0;
            }
            if (v < b) {
              return n(b), !1;
            }
          }
        }
      },
      "abrupt": function abrupt(r, o) {
        for (var a = this.tryEntries.length - 1; a >= 0; --a) {
          var l = this.tryEntries[a];
          if (l[0] > -1 && l[0] <= this.prev && this.prev < l[2]) {
            var u = l;
            break;
          }
        }
        u && ("break" === r || "continue" === r) && u[0] <= o && o <= u[2] && (u = null);
        var p = u ? u[4] : {};
        return p.type = r, p.arg = o, u ? (this.method = "next", this.next = u[2], b) : this.complete(p);
      },
      "complete": function complete(r, o) {
        if ("throw" === r.type) {
          throw r.arg;
        }
        return "break" === r.type || "continue" === r.type ? this.next = r.arg : "return" === r.type ? (this.rval = this.arg = r.arg, 
        this.method = "return", this.next = "end") : "normal" === r.type && o && (this.next = o), 
        b;
      },
      "finish": function finish(r) {
        for (var o = this.tryEntries.length - 1; o >= 0; --o) {
          var a = this.tryEntries[o];
          if (a[2] === r) {
            return this.complete(a[4], a[3]), m(a), b;
          }
        }
      },
      "catch": function _catch(r) {
        for (var o = this.tryEntries.length - 1; o >= 0; --o) {
          var a = this.tryEntries[o];
          if (a[0] === r) {
            var l = a[4];
            if ("throw" === l.type) {
              var u = l.arg;
              m(a);
            }
            return u;
          }
        }
        throw Error("illegal catch attempt");
      },
      "delegateYield": function delegateYield(o, a, l) {
        return this.delegate = {
          "i": x(o),
          "r": a,
          "n": l
        }, "next" === this.method && (this.arg = r), b;
      }
    }, o;
  }
  function asyncGeneratorStep(r, o, a, l, u, p, v) {
    try {
      var y = r[p](v), b = y.value;
    } catch (r) {
      return void a(r);
    }
    y.done ? o(b) : Promise.resolve(b).then(l, u);
  }
  function _asyncToGenerator(r) {
    return function() {
      var o = this, a = arguments;
      return new Promise((function(l, u) {
        var p = r.apply(o, a);
        function _next(r) {
          asyncGeneratorStep(p, l, u, _next, _throw, "next", r);
        }
        function _throw(r) {
          asyncGeneratorStep(p, l, u, _next, _throw, "throw", r);
        }
        _next(void 0);
      }));
    };
  }
  function MissavLoginProvider_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function MissavLoginProvider_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, MissavLoginProvider_toPropertyKey(l.key), l);
    }
  }
  function MissavLoginProvider_createClass(r, o, a) {
    return o && MissavLoginProvider_defineProperties(r.prototype, o), a && MissavLoginProvider_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function MissavLoginProvider_toPropertyKey(r) {
    var o = MissavLoginProvider_toPrimitive(r, "string");
    return "symbol" == MissavLoginProvider_typeof(o) ? o : o + "";
  }
  function MissavLoginProvider_toPrimitive(r, o) {
    if ("object" != MissavLoginProvider_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != MissavLoginProvider_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var T = function() {
    function MissavLoginProvider() {
      MissavLoginProvider_classCallCheck(this, MissavLoginProvider);
      this.domains = [ "missav.ws", "missav.ai", "missav.com", "thisav.com" ];
    }
    return MissavLoginProvider_createClass(MissavLoginProvider, [ {
      "key": "isSupportedSite",
      "value": function isSupportedSite() {
        var r = window.location.hostname;
        return this.domains.some((function(o) {
          return r.includes(o);
        }));
      }
    }, {
      "key": "login",
      "value": function() {
        var r = _asyncToGenerator(_regeneratorRuntime().mark((function _callee(r, o) {
          var a, l, u, p, v;
          return _regeneratorRuntime().wrap((function _callee$(y) {
            while (1) {
              switch (y.prev = y.next) {
               case 0:
                if (!(!r || !o)) {
                  y.next = 3;
                  break;
                }
                M.toast(L.translate("accountNull"), 2e3, "#FF0000", "#ffffff", "top");
                return y.abrupt("return", false);

               case 3:
                y.prev = 3;
                y.next = 6;
                return fetch("https://missav.ws/cn/api/login", {
                  "method": "POST",
                  "headers": {
                    "Content-Type": "application/json"
                  },
                  "body": JSON.stringify({
                    "email": r,
                    "password": o,
                    "remember": true
                  })
                });

               case 6:
                if ((l = y.sent).ok) {
                  y.next = 13;
                  break;
                }
                y.next = 10;
                return l.text();

               case 10:
                u = y.sent;
                M.toast("登录失败: ".concat(u), 2e3, "#FF0000", "#ffffff", "top");
                throw new Error(L.translate("networkFailed"));

               case 13:
                if (!(null !== (a = l.headers.get("Content-Type")) && void 0 !== a && a.includes("application/json"))) {
                  y.next = 19;
                  break;
                }
                y.next = 16;
                return l.json();

               case 16:
                p = y.sent;
                y.next = 24;
                break;

               case 19:
                y.next = 21;
                return l.text();

               case 21:
                v = y.sent;
                M.toast(L.translate("loginFailed"), 2e3, "#FF0000", "#ffffff", "top");
                throw new Error(L.translate("loginFailed"));

               case 24:
                M.toast(L.translate("loginSuccess"), 2e3, "rgb(18, 187, 2)", "#ffffff", "top");
                setTimeout((function() {
                  location.reload();
                }), 1e3);
                return y.abrupt("return", true);

               case 29:
                y.prev = 29;
                y.t0 = y["catch"](3);
                M.toast("错误发生: ".concat(y.t0.message), 2e3, "#FF0000", "#ffffff", "top");
                return y.abrupt("return", false);

               case 33:
               case "end":
                return y.stop();
              }
            }
          }), _callee, null, [ [ 3, 29 ] ]);
        })));
        function login(o, a) {
          return r.apply(this, arguments);
        }
        return login;
      }()
    }, {
      "key": "checkLoginStatus",
      "value": function() {
        var r = _asyncToGenerator(_regeneratorRuntime().mark((function _callee2() {
          var r;
          return _regeneratorRuntime().wrap((function _callee2$(o) {
            while (1) {
              switch (o.prev = o.next) {
               case 0:
                o.prev = 0;
                o.next = 3;
                return this.checkLoginByAPI();

               case 3:
                if (!(null !== (r = o.sent))) {
                  o.next = 6;
                  break;
                }
                return o.abrupt("return", r);

               case 6:
                return o.abrupt("return", this.checkLoginByDOM());

               case 9:
                o.prev = 9;
                o.t0 = o["catch"](0);
                return o.abrupt("return", false);

               case 12:
               case "end":
                return o.stop();
              }
            }
          }), _callee2, this, [ [ 0, 9 ] ]);
        })));
        function checkLoginStatus() {
          return r.apply(this, arguments);
        }
        return checkLoginStatus;
      }()
    }, {
      "key": "checkLoginByAPI",
      "value": function() {
        var r = _asyncToGenerator(_regeneratorRuntime().mark((function _callee3() {
          var r, o, a;
          return _regeneratorRuntime().wrap((function _callee3$(l) {
            while (1) {
              switch (l.prev = l.next) {
               case 0:
                l.prev = 0;
                r = "https://missav.ws/api/actresses/1016525/view";
                l.next = 4;
                return fetch(r, {
                  "method": "GET",
                  "credentials": "include"
                });

               case 4:
                if ((o = l.sent).ok) {
                  l.next = 7;
                  break;
                }
                return l.abrupt("return", null);

               case 7:
                l.next = 9;
                return o.json();

               case 9:
                a = l.sent;
                return l.abrupt("return", null !== a.user);

               case 13:
                l.prev = 13;
                l.t0 = l["catch"](0);
                return l.abrupt("return", null);

               case 16:
               case "end":
                return l.stop();
              }
            }
          }), _callee3, null, [ [ 0, 13 ] ]);
        })));
        function checkLoginByAPI() {
          return r.apply(this, arguments);
        }
        return checkLoginByAPI;
      }()
    }, {
      "key": "checkLoginByDOM",
      "value": function checkLoginByDOM() {
        try {
          var r = document.querySelector("button[x-on\\:click=\"currentPage = 'login'\"]");
          var o = document.querySelector(".relative.ml-3 img.h-8.w-8.rounded-full");
          var a = document.querySelector('[x-data="{userDropdownOpen: false}"]');
          return !r || o || a;
        } catch (r) {
          return false;
        }
      }
    }, {
      "key": "addAutoLoginOption",
      "value": function() {
        var r = _asyncToGenerator(_regeneratorRuntime().mark((function _callee4(r) {
          var o, a, l, u, p, v;
          return _regeneratorRuntime().wrap((function _callee4$(y) {
            while (1) {
              switch (y.prev = y.next) {
               case 0:
                y.prev = 0;
                y.next = 3;
                return M.waitForElement("form[x-show=\"currentPage === 'login'\"] .relative.flex.items-start.justify-between");

               case 3:
                o = y.sent;
                (a = document.createElement("div")).className = "flex";
                a.innerHTML = '\n                <div class="flex items-center h-5">\n                    <input id="auto_login" type="checkbox" class="focus:ring-primary h-4 w-4 text-primary border-gray-300 rounded __text_mode_custom_bg__">\n                </div>\n                <div class="ml-3 text-sm">\n                    <label for="auto_login" class="font-medium text-nord4">'.concat(L.translate("autoLogin"), "</label>\n                </div>\n            ");
                (l = o.querySelector(".flex")).parentNode.insertBefore(a, l.nextSibling);
                u = M.getValue("autoLogin", true);
                document.getElementById("auto_login").checked = u;
                document.getElementById("auto_login").addEventListener("change", (function() {
                  var o = document.getElementById("auto_login").checked;
                  M.setValue("autoLogin", o);
                  if (r) {
                    r({
                      "autoLogin": o
                    });
                  }
                }));
                if (p = document.querySelector("form[x-show=\"currentPage === 'login'\"]")) {
                  if (v = p.querySelector('button[type="submit"]')) {
                    v.addEventListener("click", (function() {
                      setTimeout((function() {
                        var o = document.getElementById("login_email");
                        var a = document.getElementById("login_password");
                        var l = document.getElementById("auto_login");
                        if (o && a && l && l.checked) {
                          var u = o.value;
                          var p = a.value;
                          M.setValue("userEmail", u);
                          M.setValue("userPassword", p);
                          if (r) {
                            r({
                              "email": u,
                              "password": p,
                              "autoLogin": true
                            });
                          }
                        }
                      }), 100);
                    }));
                  }
                }
                y.next = 18;
                break;

               case 16:
                y.prev = 16;
                y.t0 = y["catch"](0);

               case 18:
               case "end":
                return y.stop();
              }
            }
          }), _callee4, null, [ [ 0, 16 ] ]);
        })));
        function addAutoLoginOption(o) {
          return r.apply(this, arguments);
        }
        return addAutoLoginOption;
      }()
    } ]);
  }();
  function LoginManager_typeof(r) {
    return LoginManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, LoginManager_typeof(r);
  }
  function LoginManager_createForOfIteratorHelper(r, o) {
    var a = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
    if (!a) {
      if (Array.isArray(r) || (a = LoginManager_unsupportedIterableToArray(r)) || o && r && "number" == typeof r.length) {
        a && (r = a);
        var l = 0, u = function F() {};
        return {
          "s": u,
          "n": function n() {
            return l >= r.length ? {
              "done": !0
            } : {
              "done": !1,
              "value": r[l++]
            };
          },
          "e": function e(r) {
            throw r;
          },
          "f": u
        };
      }
      throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    }
    var p, v = !0, y = !1;
    return {
      "s": function s() {
        a = a.call(r);
      },
      "n": function n() {
        var r = a.next();
        return v = r.done, r;
      },
      "e": function e(r) {
        y = !0, p = r;
      },
      "f": function f() {
        try {
          v || null == a["return"] || a["return"]();
        } finally {
          if (y) {
            throw p;
          }
        }
      }
    };
  }
  function LoginManager_unsupportedIterableToArray(r, o) {
    if (r) {
      if ("string" == typeof r) {
        return LoginManager_arrayLikeToArray(r, o);
      }
      var a = {}.toString.call(r).slice(8, -1);
      return "Object" === a && r.constructor && (a = r.constructor.name), "Map" === a || "Set" === a ? Array.from(r) : "Arguments" === a || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a) ? LoginManager_arrayLikeToArray(r, o) : void 0;
    }
  }
  function LoginManager_arrayLikeToArray(r, o) {
    (null == o || o > r.length) && (o = r.length);
    for (var a = 0, l = Array(o); a < o; a++) {
      l[a] = r[a];
    }
    return l;
  }
  function LoginManager_regeneratorRuntime() {
    LoginManager_regeneratorRuntime = function _regeneratorRuntime() {
      return o;
    };
    var r, o = {}, a = Object.prototype, l = a.hasOwnProperty, u = "function" == typeof Symbol ? Symbol : {}, p = u.iterator || "@@iterator", v = u.asyncIterator || "@@asyncIterator", y = u.toStringTag || "@@toStringTag";
    function c(r, o, a, l) {
      return Object.defineProperty(r, o, {
        "value": a,
        "enumerable": !l,
        "configurable": !l,
        "writable": !l
      });
    }
    try {
      c({}, "");
    } catch (r) {
      c = function c(r, o, a) {
        return r[o] = a;
      };
    }
    function h(o, a, l, u) {
      var p = a && a.prototype instanceof Generator ? a : Generator, v = Object.create(p.prototype);
      return c(v, "_invoke", function(o, a, l) {
        var u = 1;
        return function(p, v) {
          if (3 === u) {
            throw Error("Generator is already running");
          }
          if (4 === u) {
            if ("throw" === p) {
              throw v;
            }
            return {
              "value": r,
              "done": !0
            };
          }
          for (l.method = p, l.arg = v; ;) {
            var y = l.delegate;
            if (y) {
              var k = d(y, l);
              if (k) {
                if (k === b) {
                  continue;
                }
                return k;
              }
            }
            if ("next" === l.method) {
              l.sent = l._sent = l.arg;
            } else if ("throw" === l.method) {
              if (1 === u) {
                throw u = 4, l.arg;
              }
              l.dispatchException(l.arg);
            } else {
              "return" === l.method && l.abrupt("return", l.arg);
            }
            u = 3;
            var C = s(o, a, l);
            if ("normal" === C.type) {
              if (u = l.done ? 4 : 2, C.arg === b) {
                continue;
              }
              return {
                "value": C.arg,
                "done": l.done
              };
            }
            "throw" === C.type && (u = 4, l.method = "throw", l.arg = C.arg);
          }
        };
      }(o, l, new Context(u || [])), !0), v;
    }
    function s(r, o, a) {
      try {
        return {
          "type": "normal",
          "arg": r.call(o, a)
        };
      } catch (r) {
        return {
          "type": "throw",
          "arg": r
        };
      }
    }
    o.wrap = h;
    var b = {};
    function Generator() {}
    function GeneratorFunction() {}
    function GeneratorFunctionPrototype() {}
    var k = {};
    c(k, p, (function() {
      return this;
    }));
    var C = Object.getPrototypeOf, _ = C && C(C(x([])));
    _ && _ !== a && l.call(_, p) && (k = _);
    var P = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(k);
    function g(r) {
      [ "next", "throw", "return" ].forEach((function(o) {
        c(r, o, (function(r) {
          return this._invoke(o, r);
        }));
      }));
    }
    function AsyncIterator(r, o) {
      function e(a, u, p, v) {
        var y = s(r[a], r, u);
        if ("throw" !== y.type) {
          var b = y.arg, k = b.value;
          return k && "object" == LoginManager_typeof(k) && l.call(k, "__await") ? o.resolve(k.__await).then((function(r) {
            e("next", r, p, v);
          }), (function(r) {
            e("throw", r, p, v);
          })) : o.resolve(k).then((function(r) {
            b.value = r, p(b);
          }), (function(r) {
            return e("throw", r, p, v);
          }));
        }
        v(y.arg);
      }
      var a;
      c(this, "_invoke", (function(r, l) {
        function i() {
          return new o((function(o, a) {
            e(r, l, o, a);
          }));
        }
        return a = a ? a.then(i, i) : i();
      }), !0);
    }
    function d(o, a) {
      var l = a.method, u = o.i[l];
      if (u === r) {
        return a.delegate = null, "throw" === l && o.i["return"] && (a.method = "return", 
        a.arg = r, d(o, a), "throw" === a.method) || "return" !== l && (a.method = "throw", 
        a.arg = new TypeError("The iterator does not provide a '" + l + "' method")), b;
      }
      var p = s(u, o.i, a.arg);
      if ("throw" === p.type) {
        return a.method = "throw", a.arg = p.arg, a.delegate = null, b;
      }
      var v = p.arg;
      return v ? v.done ? (a[o.r] = v.value, a.next = o.n, "return" !== a.method && (a.method = "next", 
      a.arg = r), a.delegate = null, b) : v : (a.method = "throw", a.arg = new TypeError("iterator result is not an object"), 
      a.delegate = null, b);
    }
    function w(r) {
      this.tryEntries.push(r);
    }
    function m(o) {
      var a = o[4] || {};
      a.type = "normal", a.arg = r, o[4] = a;
    }
    function Context(r) {
      this.tryEntries = [ [ -1 ] ], r.forEach(w, this), this.reset(!0);
    }
    function x(o) {
      if (null != o) {
        var a = o[p];
        if (a) {
          return a.call(o);
        }
        if ("function" == typeof o.next) {
          return o;
        }
        if (!isNaN(o.length)) {
          var u = -1, v = function e() {
            for (;++u < o.length; ) {
              if (l.call(o, u)) {
                return e.value = o[u], e.done = !1, e;
              }
            }
            return e.value = r, e.done = !0, e;
          };
          return v.next = v;
        }
      }
      throw new TypeError(LoginManager_typeof(o) + " is not iterable");
    }
    return GeneratorFunction.prototype = GeneratorFunctionPrototype, c(P, "constructor", GeneratorFunctionPrototype), 
    c(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = c(GeneratorFunctionPrototype, y, "GeneratorFunction"), 
    o.isGeneratorFunction = function(r) {
      var o = "function" == typeof r && r.constructor;
      return !!o && (o === GeneratorFunction || "GeneratorFunction" === (o.displayName || o.name));
    }, o.mark = function(r) {
      return Object.setPrototypeOf ? Object.setPrototypeOf(r, GeneratorFunctionPrototype) : (r.__proto__ = GeneratorFunctionPrototype, 
      c(r, y, "GeneratorFunction")), r.prototype = Object.create(P), r;
    }, o.awrap = function(r) {
      return {
        "__await": r
      };
    }, g(AsyncIterator.prototype), c(AsyncIterator.prototype, v, (function() {
      return this;
    })), o.AsyncIterator = AsyncIterator, o.async = function(r, a, l, u, p) {
      void 0 === p && (p = Promise);
      var v = new AsyncIterator(h(r, a, l, u), p);
      return o.isGeneratorFunction(a) ? v : v.next().then((function(r) {
        return r.done ? r.value : v.next();
      }));
    }, g(P), c(P, y, "Generator"), c(P, p, (function() {
      return this;
    })), c(P, "toString", (function() {
      return "[object Generator]";
    })), o.keys = function(r) {
      var o = Object(r), a = [];
      for (var l in o) {
        a.unshift(l);
      }
      return function t() {
        for (;a.length; ) {
          if ((l = a.pop()) in o) {
            return t.value = l, t.done = !1, t;
          }
        }
        return t.done = !0, t;
      };
    }, o.values = x, Context.prototype = {
      "constructor": Context,
      "reset": function reset(o) {
        if (this.prev = this.next = 0, this.sent = this._sent = r, this.done = !1, this.delegate = null, 
        this.method = "next", this.arg = r, this.tryEntries.forEach(m), !o) {
          for (var a in this) {
            "t" === a.charAt(0) && l.call(this, a) && !isNaN(+a.slice(1)) && (this[a] = r);
          }
        }
      },
      "stop": function stop() {
        this.done = !0;
        var r = this.tryEntries[0][4];
        if ("throw" === r.type) {
          throw r.arg;
        }
        return this.rval;
      },
      "dispatchException": function dispatchException(o) {
        if (this.done) {
          throw o;
        }
        var a = this;
        function n(r) {
          p.type = "throw", p.arg = o, a.next = r;
        }
        for (var l = a.tryEntries.length - 1; l >= 0; --l) {
          var u = this.tryEntries[l], p = u[4], v = this.prev, y = u[1], b = u[2];
          if (-1 === u[0]) {
            return n("end"), !1;
          }
          if (!y && !b) {
            throw Error("try statement without catch or finally");
          }
          if (null != u[0] && u[0] <= v) {
            if (v < y) {
              return this.method = "next", this.arg = r, n(y), !0;
            }
            if (v < b) {
              return n(b), !1;
            }
          }
        }
      },
      "abrupt": function abrupt(r, o) {
        for (var a = this.tryEntries.length - 1; a >= 0; --a) {
          var l = this.tryEntries[a];
          if (l[0] > -1 && l[0] <= this.prev && this.prev < l[2]) {
            var u = l;
            break;
          }
        }
        u && ("break" === r || "continue" === r) && u[0] <= o && o <= u[2] && (u = null);
        var p = u ? u[4] : {};
        return p.type = r, p.arg = o, u ? (this.method = "next", this.next = u[2], b) : this.complete(p);
      },
      "complete": function complete(r, o) {
        if ("throw" === r.type) {
          throw r.arg;
        }
        return "break" === r.type || "continue" === r.type ? this.next = r.arg : "return" === r.type ? (this.rval = this.arg = r.arg, 
        this.method = "return", this.next = "end") : "normal" === r.type && o && (this.next = o), 
        b;
      },
      "finish": function finish(r) {
        for (var o = this.tryEntries.length - 1; o >= 0; --o) {
          var a = this.tryEntries[o];
          if (a[2] === r) {
            return this.complete(a[4], a[3]), m(a), b;
          }
        }
      },
      "catch": function _catch(r) {
        for (var o = this.tryEntries.length - 1; o >= 0; --o) {
          var a = this.tryEntries[o];
          if (a[0] === r) {
            var l = a[4];
            if ("throw" === l.type) {
              var u = l.arg;
              m(a);
            }
            return u;
          }
        }
        throw Error("illegal catch attempt");
      },
      "delegateYield": function delegateYield(o, a, l) {
        return this.delegate = {
          "i": x(o),
          "r": a,
          "n": l
        }, "next" === this.method && (this.arg = r), b;
      }
    }, o;
  }
  function LoginManager_asyncGeneratorStep(r, o, a, l, u, p, v) {
    try {
      var y = r[p](v), b = y.value;
    } catch (r) {
      return void a(r);
    }
    y.done ? o(b) : Promise.resolve(b).then(l, u);
  }
  function LoginManager_asyncToGenerator(r) {
    return function() {
      var o = this, a = arguments;
      return new Promise((function(l, u) {
        var p = r.apply(o, a);
        function _next(r) {
          LoginManager_asyncGeneratorStep(p, l, u, _next, _throw, "next", r);
        }
        function _throw(r) {
          LoginManager_asyncGeneratorStep(p, l, u, _next, _throw, "throw", r);
        }
        _next(void 0);
      }));
    };
  }
  function LoginManager_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function LoginManager_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, LoginManager_toPropertyKey(l.key), l);
    }
  }
  function LoginManager_createClass(r, o, a) {
    return o && LoginManager_defineProperties(r.prototype, o), a && LoginManager_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function LoginManager_toPropertyKey(r) {
    var o = LoginManager_toPrimitive(r, "string");
    return "symbol" == LoginManager_typeof(o) ? o : o + "";
  }
  function LoginManager_toPrimitive(r, o) {
    if ("object" != LoginManager_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != LoginManager_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var V = function() {
    function LoginManager() {
      LoginManager_classCallCheck(this, LoginManager);
      this.userEmail = "";
      this.userPassword = "";
      this.autoLogin = true;
      this.providers = [ new T ];
      this.activeProvider = null;
    }
    return LoginManager_createClass(LoginManager, [ {
      "key": "init",
      "value": function() {
        var r = LoginManager_asyncToGenerator(LoginManager_regeneratorRuntime().mark((function _callee() {
          return LoginManager_regeneratorRuntime().wrap((function _callee$(r) {
            while (1) {
              switch (r.prev = r.next) {
               case 0:
                this.loadLoginInfo();
                this.activeProvider = this.getMatchingProvider();
                if (this.activeProvider) {
                  r.next = 4;
                  break;
                }
                return r.abrupt("return");

               case 4:
                r.next = 6;
                return this.activeProvider.addAutoLoginOption(this.handleLoginInfoChange.bind(this));

               case 6:
                r.next = 8;
                return this.checkLoginAndAutoLogin();

               case 8:
               case "end":
                return r.stop();
              }
            }
          }), _callee, this);
        })));
        function init() {
          return r.apply(this, arguments);
        }
        return init;
      }()
    }, {
      "key": "handleLoginInfoChange",
      "value": function handleLoginInfoChange(r) {
        if (void 0 !== r.email) {
          this.userEmail = r.email;
          M.setValue("userEmail", r.email);
        }
        if (void 0 !== r.password) {
          this.userPassword = r.password;
          M.setValue("userPassword", r.password);
        }
        if (void 0 !== r.autoLogin) {
          this.autoLogin = r.autoLogin;
          M.setValue("autoLogin", r.autoLogin);
        }
      }
    }, {
      "key": "loadLoginInfo",
      "value": function loadLoginInfo() {
        this.userEmail = M.getValue("userEmail", "");
        this.userPassword = M.getValue("userPassword", "");
        this.autoLogin = M.getValue("autoLogin", true);
      }
    }, {
      "key": "getMatchingProvider",
      "value": function getMatchingProvider() {
        var r = LoginManager_createForOfIteratorHelper(this.providers), o;
        try {
          for (r.s(); !(o = r.n()).done; ) {
            var a = o.value;
            if (a.isSupportedSite()) {
              return a;
            }
          }
        } catch (o) {
          r.e(o);
        } finally {
          r.f();
        }
        return null;
      }
    }, {
      "key": "checkLoginAndAutoLogin",
      "value": function() {
        var r = LoginManager_asyncToGenerator(LoginManager_regeneratorRuntime().mark((function _callee2() {
          var r;
          return LoginManager_regeneratorRuntime().wrap((function _callee2$(o) {
            while (1) {
              switch (o.prev = o.next) {
               case 0:
                if (this.activeProvider) {
                  o.next = 2;
                  break;
                }
                return o.abrupt("return");

               case 2:
                o.prev = 2;
                o.next = 5;
                return this.activeProvider.checkLoginStatus();

               case 5:
                if (!(!(r = o.sent) && this.autoLogin && this.userEmail && this.userPassword)) {
                  o.next = 9;
                  break;
                }
                o.next = 9;
                return this.activeProvider.login(this.userEmail, this.userPassword);

               case 9:
                o.next = 13;
                break;

               case 11:
                o.prev = 11;
                o.t0 = o["catch"](2);

               case 13:
               case "end":
                return o.stop();
              }
            }
          }), _callee2, this, [ [ 2, 11 ] ]);
        })));
        function checkLoginAndAutoLogin() {
          return r.apply(this, arguments);
        }
        return checkLoginAndAutoLogin;
      }()
    }, {
      "key": "login",
      "value": function() {
        var r = LoginManager_asyncToGenerator(LoginManager_regeneratorRuntime().mark((function _callee3(r, o) {
          return LoginManager_regeneratorRuntime().wrap((function _callee3$(a) {
            while (1) {
              switch (a.prev = a.next) {
               case 0:
                if (this.activeProvider) {
                  a.next = 2;
                  break;
                }
                return a.abrupt("return", false);

               case 2:
                this.handleLoginInfoChange({
                  "email": r,
                  "password": o
                });
                a.next = 5;
                return this.activeProvider.login(r, o);

               case 5:
                return a.abrupt("return", a.sent);

               case 6:
               case "end":
                return a.stop();
              }
            }
          }), _callee3, this);
        })));
        function login(o, a) {
          return r.apply(this, arguments);
        }
        return login;
      }()
    } ]);
  }();
  function autologin_typeof(r) {
    return autologin_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, autologin_typeof(r);
  }
  function autologin_regeneratorRuntime() {
    autologin_regeneratorRuntime = function _regeneratorRuntime() {
      return o;
    };
    var r, o = {}, a = Object.prototype, l = a.hasOwnProperty, u = "function" == typeof Symbol ? Symbol : {}, p = u.iterator || "@@iterator", v = u.asyncIterator || "@@asyncIterator", y = u.toStringTag || "@@toStringTag";
    function c(r, o, a, l) {
      return Object.defineProperty(r, o, {
        "value": a,
        "enumerable": !l,
        "configurable": !l,
        "writable": !l
      });
    }
    try {
      c({}, "");
    } catch (r) {
      c = function c(r, o, a) {
        return r[o] = a;
      };
    }
    function h(o, a, l, u) {
      var p = a && a.prototype instanceof Generator ? a : Generator, v = Object.create(p.prototype);
      return c(v, "_invoke", function(o, a, l) {
        var u = 1;
        return function(p, v) {
          if (3 === u) {
            throw Error("Generator is already running");
          }
          if (4 === u) {
            if ("throw" === p) {
              throw v;
            }
            return {
              "value": r,
              "done": !0
            };
          }
          for (l.method = p, l.arg = v; ;) {
            var y = l.delegate;
            if (y) {
              var k = d(y, l);
              if (k) {
                if (k === b) {
                  continue;
                }
                return k;
              }
            }
            if ("next" === l.method) {
              l.sent = l._sent = l.arg;
            } else if ("throw" === l.method) {
              if (1 === u) {
                throw u = 4, l.arg;
              }
              l.dispatchException(l.arg);
            } else {
              "return" === l.method && l.abrupt("return", l.arg);
            }
            u = 3;
            var C = s(o, a, l);
            if ("normal" === C.type) {
              if (u = l.done ? 4 : 2, C.arg === b) {
                continue;
              }
              return {
                "value": C.arg,
                "done": l.done
              };
            }
            "throw" === C.type && (u = 4, l.method = "throw", l.arg = C.arg);
          }
        };
      }(o, l, new Context(u || [])), !0), v;
    }
    function s(r, o, a) {
      try {
        return {
          "type": "normal",
          "arg": r.call(o, a)
        };
      } catch (r) {
        return {
          "type": "throw",
          "arg": r
        };
      }
    }
    o.wrap = h;
    var b = {};
    function Generator() {}
    function GeneratorFunction() {}
    function GeneratorFunctionPrototype() {}
    var k = {};
    c(k, p, (function() {
      return this;
    }));
    var C = Object.getPrototypeOf, _ = C && C(C(x([])));
    _ && _ !== a && l.call(_, p) && (k = _);
    var P = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(k);
    function g(r) {
      [ "next", "throw", "return" ].forEach((function(o) {
        c(r, o, (function(r) {
          return this._invoke(o, r);
        }));
      }));
    }
    function AsyncIterator(r, o) {
      function e(a, u, p, v) {
        var y = s(r[a], r, u);
        if ("throw" !== y.type) {
          var b = y.arg, k = b.value;
          return k && "object" == autologin_typeof(k) && l.call(k, "__await") ? o.resolve(k.__await).then((function(r) {
            e("next", r, p, v);
          }), (function(r) {
            e("throw", r, p, v);
          })) : o.resolve(k).then((function(r) {
            b.value = r, p(b);
          }), (function(r) {
            return e("throw", r, p, v);
          }));
        }
        v(y.arg);
      }
      var a;
      c(this, "_invoke", (function(r, l) {
        function i() {
          return new o((function(o, a) {
            e(r, l, o, a);
          }));
        }
        return a = a ? a.then(i, i) : i();
      }), !0);
    }
    function d(o, a) {
      var l = a.method, u = o.i[l];
      if (u === r) {
        return a.delegate = null, "throw" === l && o.i["return"] && (a.method = "return", 
        a.arg = r, d(o, a), "throw" === a.method) || "return" !== l && (a.method = "throw", 
        a.arg = new TypeError("The iterator does not provide a '" + l + "' method")), b;
      }
      var p = s(u, o.i, a.arg);
      if ("throw" === p.type) {
        return a.method = "throw", a.arg = p.arg, a.delegate = null, b;
      }
      var v = p.arg;
      return v ? v.done ? (a[o.r] = v.value, a.next = o.n, "return" !== a.method && (a.method = "next", 
      a.arg = r), a.delegate = null, b) : v : (a.method = "throw", a.arg = new TypeError("iterator result is not an object"), 
      a.delegate = null, b);
    }
    function w(r) {
      this.tryEntries.push(r);
    }
    function m(o) {
      var a = o[4] || {};
      a.type = "normal", a.arg = r, o[4] = a;
    }
    function Context(r) {
      this.tryEntries = [ [ -1 ] ], r.forEach(w, this), this.reset(!0);
    }
    function x(o) {
      if (null != o) {
        var a = o[p];
        if (a) {
          return a.call(o);
        }
        if ("function" == typeof o.next) {
          return o;
        }
        if (!isNaN(o.length)) {
          var u = -1, v = function e() {
            for (;++u < o.length; ) {
              if (l.call(o, u)) {
                return e.value = o[u], e.done = !1, e;
              }
            }
            return e.value = r, e.done = !0, e;
          };
          return v.next = v;
        }
      }
      throw new TypeError(autologin_typeof(o) + " is not iterable");
    }
    return GeneratorFunction.prototype = GeneratorFunctionPrototype, c(P, "constructor", GeneratorFunctionPrototype), 
    c(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = c(GeneratorFunctionPrototype, y, "GeneratorFunction"), 
    o.isGeneratorFunction = function(r) {
      var o = "function" == typeof r && r.constructor;
      return !!o && (o === GeneratorFunction || "GeneratorFunction" === (o.displayName || o.name));
    }, o.mark = function(r) {
      return Object.setPrototypeOf ? Object.setPrototypeOf(r, GeneratorFunctionPrototype) : (r.__proto__ = GeneratorFunctionPrototype, 
      c(r, y, "GeneratorFunction")), r.prototype = Object.create(P), r;
    }, o.awrap = function(r) {
      return {
        "__await": r
      };
    }, g(AsyncIterator.prototype), c(AsyncIterator.prototype, v, (function() {
      return this;
    })), o.AsyncIterator = AsyncIterator, o.async = function(r, a, l, u, p) {
      void 0 === p && (p = Promise);
      var v = new AsyncIterator(h(r, a, l, u), p);
      return o.isGeneratorFunction(a) ? v : v.next().then((function(r) {
        return r.done ? r.value : v.next();
      }));
    }, g(P), c(P, y, "Generator"), c(P, p, (function() {
      return this;
    })), c(P, "toString", (function() {
      return "[object Generator]";
    })), o.keys = function(r) {
      var o = Object(r), a = [];
      for (var l in o) {
        a.unshift(l);
      }
      return function t() {
        for (;a.length; ) {
          if ((l = a.pop()) in o) {
            return t.value = l, t.done = !1, t;
          }
        }
        return t.done = !0, t;
      };
    }, o.values = x, Context.prototype = {
      "constructor": Context,
      "reset": function reset(o) {
        if (this.prev = this.next = 0, this.sent = this._sent = r, this.done = !1, this.delegate = null, 
        this.method = "next", this.arg = r, this.tryEntries.forEach(m), !o) {
          for (var a in this) {
            "t" === a.charAt(0) && l.call(this, a) && !isNaN(+a.slice(1)) && (this[a] = r);
          }
        }
      },
      "stop": function stop() {
        this.done = !0;
        var r = this.tryEntries[0][4];
        if ("throw" === r.type) {
          throw r.arg;
        }
        return this.rval;
      },
      "dispatchException": function dispatchException(o) {
        if (this.done) {
          throw o;
        }
        var a = this;
        function n(r) {
          p.type = "throw", p.arg = o, a.next = r;
        }
        for (var l = a.tryEntries.length - 1; l >= 0; --l) {
          var u = this.tryEntries[l], p = u[4], v = this.prev, y = u[1], b = u[2];
          if (-1 === u[0]) {
            return n("end"), !1;
          }
          if (!y && !b) {
            throw Error("try statement without catch or finally");
          }
          if (null != u[0] && u[0] <= v) {
            if (v < y) {
              return this.method = "next", this.arg = r, n(y), !0;
            }
            if (v < b) {
              return n(b), !1;
            }
          }
        }
      },
      "abrupt": function abrupt(r, o) {
        for (var a = this.tryEntries.length - 1; a >= 0; --a) {
          var l = this.tryEntries[a];
          if (l[0] > -1 && l[0] <= this.prev && this.prev < l[2]) {
            var u = l;
            break;
          }
        }
        u && ("break" === r || "continue" === r) && u[0] <= o && o <= u[2] && (u = null);
        var p = u ? u[4] : {};
        return p.type = r, p.arg = o, u ? (this.method = "next", this.next = u[2], b) : this.complete(p);
      },
      "complete": function complete(r, o) {
        if ("throw" === r.type) {
          throw r.arg;
        }
        return "break" === r.type || "continue" === r.type ? this.next = r.arg : "return" === r.type ? (this.rval = this.arg = r.arg, 
        this.method = "return", this.next = "end") : "normal" === r.type && o && (this.next = o), 
        b;
      },
      "finish": function finish(r) {
        for (var o = this.tryEntries.length - 1; o >= 0; --o) {
          var a = this.tryEntries[o];
          if (a[2] === r) {
            return this.complete(a[4], a[3]), m(a), b;
          }
        }
      },
      "catch": function _catch(r) {
        for (var o = this.tryEntries.length - 1; o >= 0; --o) {
          var a = this.tryEntries[o];
          if (a[0] === r) {
            var l = a[4];
            if ("throw" === l.type) {
              var u = l.arg;
              m(a);
            }
            return u;
          }
        }
        throw Error("illegal catch attempt");
      },
      "delegateYield": function delegateYield(o, a, l) {
        return this.delegate = {
          "i": x(o),
          "r": a,
          "n": l
        }, "next" === this.method && (this.arg = r), b;
      }
    }, o;
  }
  function autologin_asyncGeneratorStep(r, o, a, l, u, p, v) {
    try {
      var y = r[p](v), b = y.value;
    } catch (r) {
      return void a(r);
    }
    y.done ? o(b) : Promise.resolve(b).then(l, u);
  }
  function autologin_asyncToGenerator(r) {
    return function() {
      var o = this, a = arguments;
      return new Promise((function(l, u) {
        var p = r.apply(o, a);
        function _next(r) {
          autologin_asyncGeneratorStep(p, l, u, _next, _throw, "next", r);
        }
        function _throw(r) {
          autologin_asyncGeneratorStep(p, l, u, _next, _throw, "throw", r);
        }
        _next(void 0);
      }));
    };
  }
  function initAutoLogin() {
    return _initAutoLogin.apply(this, arguments);
  }
  function _initAutoLogin() {
    return (_initAutoLogin = autologin_asyncToGenerator(autologin_regeneratorRuntime().mark((function _callee() {
      var r;
      return autologin_regeneratorRuntime().wrap((function _callee$(o) {
        while (1) {
          switch (o.prev = o.next) {
           case 0:
            o.prev = 0;
            r = new V;
            o.next = 4;
            return r.init();

           case 4:
            return o.abrupt("return", r);

           case 7:
            o.prev = 7;
            o.t0 = o["catch"](0);
            return o.abrupt("return", null);

           case 10:
           case "end":
            return o.stop();
          }
        }
      }), _callee, null, [ [ 0, 7 ] ]);
    })))).apply(this, arguments);
  }
  var B = function Toast(r) {
    var o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 3e3;
    var a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "rgba(0, 0, 0, 0.8)";
    var l = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "#fff";
    var u = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : "top";
    var p = document.createElement("div");
    p.innerText = r;
    p.style.cssText = "\n      position: fixed;\n      z-index: 100000;\n      left: 50%;\n      transform: translateX(-50%);\n      padding: 10px 15px;\n      border-radius: 4px;\n      color: ".concat(l, ";\n      background: ").concat(a, ";\n      font-size: 14px;\n      max-width: 80%;\n      text-align: center;\n      word-break: break-all;\n    ");
    if ("top" === u) {
      p.style.top = "10%";
    } else if ("bottom" === u) {
      p.style.bottom = "10%";
    } else if ("center" === u) {
      p.style.top = "50%";
      p.style.transform = "translate(-50%, -50%)";
    }
    document.body.appendChild(p);
    setTimeout((function() {
      p.style.opacity = "0";
      p.style.transition = "opacity 0.5s";
      setTimeout((function() {
        document.body.removeChild(p);
      }), 500);
    }), o);
  }, I = function throttle(r, o) {
    var a = 0;
    return function() {
      var l = Date.now();
      if (l - a >= o) {
        a = l;
        for (var u = arguments.length, p = new Array(u), v = 0; v < u; v++) {
          p[v] = arguments[v];
        }
        return r.apply(this, p);
      }
    };
  }, D = function waitForElement(r) {
    var o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1e4;
    var a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 100;
    return new Promise((function(l, u) {
      var p = document.querySelector(r);
      if (p) {
        return l(p);
      }
      var v = Date.now();
      var y = setInterval((function() {
        var a = document.querySelector(r);
        if (a) {
          clearInterval(y);
          return l(a);
        }
        if (Date.now() - v > o) {
          clearInterval(y);
          u(new Error("等待元素 ".concat(r, " 超时")));
        }
      }), a);
    }));
  }, O = function loadScript(r) {
    return new Promise((function(o, a) {
      var l = document.createElement("script");
      l.src = r;
      l.onload = function() {
        return o();
      };
      l.onerror = function(o) {
        return a(new Error("脚本加载失败: ".concat(r)));
      };
      document.head.appendChild(l);
    }));
  }, A = function isInViewport(r) {
    var o = r.getBoundingClientRect();
    return o.top >= 0 && o.left >= 0 && o.bottom <= (window.innerHeight || document.documentElement.clientHeight) && o.right <= (window.innerWidth || document.documentElement.clientWidth);
  }, R = function formatTime(r) {
    var o = Math.floor(r / 3600);
    var a = Math.floor(r % 3600 / 60);
    var l = Math.floor(r % 60);
    var u;
    var p;
    var v;
    return (o > 0 ? String(o).padStart(2, "0") + ":" : "") + (String(a).padStart(2, "0") + ":") + String(l).padStart(2, "0");
  };
  function AdBlockConfig_typeof(r) {
    return AdBlockConfig_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, AdBlockConfig_typeof(r);
  }
  function AdBlockConfig_createForOfIteratorHelper(r, o) {
    var a = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
    if (!a) {
      if (Array.isArray(r) || (a = AdBlockConfig_unsupportedIterableToArray(r)) || o && r && "number" == typeof r.length) {
        a && (r = a);
        var l = 0, u = function F() {};
        return {
          "s": u,
          "n": function n() {
            return l >= r.length ? {
              "done": !0
            } : {
              "done": !1,
              "value": r[l++]
            };
          },
          "e": function e(r) {
            throw r;
          },
          "f": u
        };
      }
      throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    }
    var p, v = !0, y = !1;
    return {
      "s": function s() {
        a = a.call(r);
      },
      "n": function n() {
        var r = a.next();
        return v = r.done, r;
      },
      "e": function e(r) {
        y = !0, p = r;
      },
      "f": function f() {
        try {
          v || null == a["return"] || a["return"]();
        } finally {
          if (y) {
            throw p;
          }
        }
      }
    };
  }
  function AdBlockConfig_unsupportedIterableToArray(r, o) {
    if (r) {
      if ("string" == typeof r) {
        return AdBlockConfig_arrayLikeToArray(r, o);
      }
      var a = {}.toString.call(r).slice(8, -1);
      return "Object" === a && r.constructor && (a = r.constructor.name), "Map" === a || "Set" === a ? Array.from(r) : "Arguments" === a || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a) ? AdBlockConfig_arrayLikeToArray(r, o) : void 0;
    }
  }
  function AdBlockConfig_arrayLikeToArray(r, o) {
    (null == o || o > r.length) && (o = r.length);
    for (var a = 0, l = Array(o); a < o; a++) {
      l[a] = r[a];
    }
    return l;
  }
  function AdBlockConfig_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function AdBlockConfig_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, AdBlockConfig_toPropertyKey(l.key), l);
    }
  }
  function AdBlockConfig_createClass(r, o, a) {
    return o && AdBlockConfig_defineProperties(r.prototype, o), a && AdBlockConfig_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function AdBlockConfig_toPropertyKey(r) {
    var o = AdBlockConfig_toPrimitive(r, "string");
    return "symbol" == AdBlockConfig_typeof(o) ? o : o + "";
  }
  function AdBlockConfig_toPrimitive(r, o) {
    if ("object" != AdBlockConfig_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != AdBlockConfig_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var H;
  const j = function() {
    function AdBlockConfig() {
      var r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
      AdBlockConfig_classCallCheck(this, AdBlockConfig);
      this.adSelectors = r.adSelectors || [];
      this.customStyles = r.customStyles || [];
      this.blockedUrlPatternsSet = new Set(r.blockedUrlPatterns || []);
      this.adKeywordsRegex = /ads|analytics|tracker|affiliate|stat|pixel|banner|pop|click|outstream\.video|vast|vmap|preroll|midroll|postroll|adserve/i;
    }
    return AdBlockConfig_createClass(AdBlockConfig, [ {
      "key": "isEmpty",
      "value": function isEmpty() {
        return 0 === this.adSelectors.length && 0 === this.customStyles.length && 0 === this.blockedUrlPatternsSet.size;
      }
    }, {
      "key": "shouldBlockUrl",
      "value": function shouldBlockUrl(r) {
        if (!r || "string" !== typeof r) {
          return false;
        }
        if (this.adKeywordsRegex.test(r)) {
          return true;
        }
        var o = AdBlockConfig_createForOfIteratorHelper(this.blockedUrlPatternsSet), a;
        try {
          for (o.s(); !(a = o.n()).done; ) {
            var l = a.value;
            if (r.includes(l)) {
              return true;
            }
          }
        } catch (r) {
          o.e(r);
        } finally {
          o.f();
        }
        return false;
      }
    } ]);
  }();
  function StyleManager_typeof(r) {
    return StyleManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, StyleManager_typeof(r);
  }
  function StyleManager_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function StyleManager_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, StyleManager_toPropertyKey(l.key), l);
    }
  }
  function StyleManager_createClass(r, o, a) {
    return o && StyleManager_defineProperties(r.prototype, o), a && StyleManager_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function StyleManager_toPropertyKey(r) {
    var o = StyleManager_toPrimitive(r, "string");
    return "symbol" == StyleManager_typeof(o) ? o : o + "";
  }
  function StyleManager_toPrimitive(r, o) {
    if ("object" != StyleManager_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != StyleManager_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var N;
  const z = function() {
    function StyleManager(r) {
      StyleManager_classCallCheck(this, StyleManager);
      this.config = r;
    }
    return StyleManager_createClass(StyleManager, [ {
      "key": "applyAdBlockStyles",
      "value": function applyAdBlockStyles() {
        if (0 === this.config.adSelectors.length && 0 === this.config.customStyles.length) {
          return;
        }
        var r = document.createElement("style");
        r.id = "adblock-styles";
        r.type = "text/css";
        var o = "";
        if (this.config.adSelectors.length > 0) {
          o += this.config.adSelectors.join(", ") + " { display: none !important; visibility: hidden !important; height: 0 !important; min-height: 0 !important; }";
        }
        if (this.config.customStyles.length > 0) {
          o += "\n" + this.config.customStyles.map((function(r) {
            return "".concat(r.selector, " { ").concat(r.styles, " }");
          })).join("\n");
        }
        r.textContent = o;
        document.head.appendChild(r);
      }
    } ]);
  }();
  function DOMCleaner_typeof(r) {
    return DOMCleaner_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, DOMCleaner_typeof(r);
  }
  function DOMCleaner_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function DOMCleaner_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, DOMCleaner_toPropertyKey(l.key), l);
    }
  }
  function DOMCleaner_createClass(r, o, a) {
    return o && DOMCleaner_defineProperties(r.prototype, o), a && DOMCleaner_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function DOMCleaner_toPropertyKey(r) {
    var o = DOMCleaner_toPrimitive(r, "string");
    return "symbol" == DOMCleaner_typeof(o) ? o : o + "";
  }
  function DOMCleaner_toPrimitive(r, o) {
    if ("object" != DOMCleaner_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != DOMCleaner_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var U;
  const G = function() {
    function DOMCleaner(r) {
      DOMCleaner_classCallCheck(this, DOMCleaner);
      this.config = r;
      this.CLEANUP_THROTTLE = 500;
      this.observer = null;
    }
    return DOMCleaner_createClass(DOMCleaner, [ {
      "key": "cleanIframes",
      "value": function cleanIframes() {
        var r;
        var o = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null) || document.getElementsByTagName("iframe");
        for (var a = 0; a < o.length; a++) {
          var l = o[a];
          if (l.src && !l.src.includes("plyr.io")) {
            l.remove();
          }
        }
      }
    }, {
      "key": "removeAdElements",
      "value": function removeAdElements() {
        var r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;
        if (0 === this.config.adSelectors.length) {
          return;
        }
        for (var o = 0; o < this.config.adSelectors.length; o++) {
          try {
            var a = document.querySelectorAll(this.config.adSelectors[o]);
            for (var l = 0; l < a.length; l++) {
              a[l].remove();
            }
          } catch (r) {}
        }
      }
    }, {
      "key": "observeDOMChanges",
      "value": function observeDOMChanges() {
        var r = this;
        if (this.observer) {
          return;
        }
        var o = false;
        var a = false;
        var l = null;
        var u = function processChanges() {
          if (o) {
            r.removeAdElements();
            o = false;
          }
          if (a) {
            r.cleanIframes();
            a = false;
          }
          l = null;
        };
        this.observer = new MutationObserver((function(r) {
          var p = false;
          var v = false;
          for (var y = 0; y < r.length; y++) {
            var b = r[y];
            if (b.addedNodes.length) {
              p = true;
              for (var k = 0; k < b.addedNodes.length; k++) {
                var C;
                if ("IFRAME" === b.addedNodes[k].nodeName) {
                  v = true;
                  break;
                }
              }
            }
            if (p && v) {
              break;
            }
          }
          if (p) {
            o = true;
          }
          if (v) {
            a = true;
          }
          if ((o || a) && !l) {
            l = setTimeout(u, 50);
          }
        }));
        this.observer.observe(document.documentElement, {
          "childList": true,
          "subtree": true
        });
      }
    }, {
      "key": "disconnect",
      "value": function disconnect() {
        if (this.observer) {
          this.observer.disconnect();
          this.observer = null;
        }
      }
    } ]);
  }();
  function RequestBlocker_typeof(r) {
    return RequestBlocker_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, RequestBlocker_typeof(r);
  }
  function RequestBlocker_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function RequestBlocker_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, RequestBlocker_toPropertyKey(l.key), l);
    }
  }
  function RequestBlocker_createClass(r, o, a) {
    return o && RequestBlocker_defineProperties(r.prototype, o), a && RequestBlocker_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function RequestBlocker_toPropertyKey(r) {
    var o = RequestBlocker_toPrimitive(r, "string");
    return "symbol" == RequestBlocker_typeof(o) ? o : o + "";
  }
  function RequestBlocker_toPrimitive(r, o) {
    if ("object" != RequestBlocker_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != RequestBlocker_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var q;
  const W = function() {
    function RequestBlocker(r) {
      RequestBlocker_classCallCheck(this, RequestBlocker);
      this.config = r;
    }
    return RequestBlocker_createClass(RequestBlocker, [ {
      "key": "blockTrackingRequests",
      "value": function blockTrackingRequests() {
        var r = XMLHttpRequest.prototype.open;
        var o = this.config;
        XMLHttpRequest.prototype.open = function(a, l) {
          if ("string" === typeof l && o.shouldBlockUrl(l)) {
            this.send = function() {};
            this.onload = null;
            this.onerror = null;
            return;
          }
          return r.apply(this, arguments);
        };
        var a = window.fetch;
        window.fetch = function(r, l) {
          var u = r;
          if (r instanceof Request) {
            u = r.url;
          }
          if ("string" === typeof u && o.shouldBlockUrl(u)) {
            return Promise.resolve(new Response("", {
              "status": 200,
              "headers": {
                "Content-Type": "text/plain"
              }
            }));
          }
          return a.apply(this, arguments);
        };
      }
    }, {
      "key": "blockIframeLoading",
      "value": function blockIframeLoading() {
        var r = document.createElement;
        var o = this.config;
        document.createElement = function(a) {
          var l = r.call(document, a);
          if ("iframe" === a.toLowerCase()) {
            var u = l.src;
            Object.defineProperty(l, "src", {
              "set": function set(r) {
                if ("string" === typeof r && o.shouldBlockUrl(r)) {
                  return;
                }
                u = r;
              },
              "get": function get() {
                return u;
              }
            });
            var p = l.setAttribute;
            l.setAttribute = function(r, a) {
              if ("src" === r && "string" === typeof a && o.shouldBlockUrl(a)) {
                return;
              }
              return p.call(this, r, a);
            };
          }
          return l;
        };
      }
    }, {
      "key": "blockPopups",
      "value": function blockPopups() {
        window.open = function() {
          return null;
        };
        if ("undefined" !== typeof unsafeWindow) {
          unsafeWindow.open = function() {
            return null;
          };
        }
      }
    }, {
      "key": "init",
      "value": function init() {
        this.blockIframeLoading();
        this.blockTrackingRequests();
        this.blockPopups();
      }
    } ]);
  }();
  var X;
  var K;
  var Y;
  const Q = {
    "adSelectors": [ 'div[class="space-y-6 mb-6"]', 'div[class*="root--"][class*="bottomRight--"]', 'div[class="grid md:grid-cols-2 gap-8"]', 'ul[class="mb-4 list-none text-nord14 grid grid-cols-2 gap-2"]', 'div[class="space-y-5 mb-5"]', 'iframe[src*="ads"]', 'iframe[src*="banner"]', 'iframe[src*="pop"]', "iframe[data-ad]", 'iframe[id*="ads"]', 'iframe[class*="ads"]', 'iframe:not([src*="plyr.io"])' ],
    "customStyles": [ {
      "selector": 'div[class="my-2 text-sm text-nord4 truncate"]',
      "styles": "white-space: normal !important;"
    }, {
      "selector": "body",
      "styles": "background-color: #000000 !important;"
    }, {
      "selector": 'div[class*="z-max"]',
      "styles": "z-index: 9000 !important;"
    } ],
    "blockedUrlPatterns": [ "exoclick.com", "juicyads.com", "popads.net", "adsterra.com", "trafficjunky.com", "adnium.com", "ad-maven.com", "browser-update.org", "mopvip.icu", "toppages.pw", "cpmstar.com", "propellerads.com", "tsyndicate.com", "syndication.exosrv.com", "ads.exosrv.com", "tsyndicate.com/sdk", "cdn.tsyndicate.com", "adsco.re", "adscpm.site", "a-ads.com", "ad-delivery.net", "outbrain.com", "taboola.com", "mgid.com", "revcontent.com", "adnxs.com", "pubmatic.com", "rubiconproject.com", "openx.net", "criteo.com", "doubleclick.net" ],
    "isVideoSite": true,
    "domains": [ "missav.ws", "missav.ai", "missav.com", "thisav.com" ]
  };
  function adblock_typeof(r) {
    return adblock_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, adblock_typeof(r);
  }
  function adblock_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function adblock_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, adblock_toPropertyKey(l.key), l);
    }
  }
  function adblock_createClass(r, o, a) {
    return o && adblock_defineProperties(r.prototype, o), a && adblock_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function adblock_toPropertyKey(r) {
    var o = adblock_toPrimitive(r, "string");
    return "symbol" == adblock_typeof(o) ? o : o + "";
  }
  function adblock_toPrimitive(r, o) {
    if ("object" != adblock_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != adblock_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  function getSiteConfig(r) {
    if (/^https?:\/\/(www\.)?(missav|thisav)\.(com|ws|ai)/.test(r)) {
      return Q;
    }
    return {
      "adSelectors": [],
      "customStyles": [],
      "blockedUrlPatterns": []
    };
  }
  var $;
  const Z = function() {
    function AdBlocker() {
      adblock_classCallCheck(this, AdBlocker);
      var r = getSiteConfig(window.location.href);
      this.config = new j(r);
      this.styleManager = new z(this.config);
      this.domCleaner = new G(this.config);
      this.requestBlocker = new W(this.config);
    }
    return adblock_createClass(AdBlocker, [ {
      "key": "preventDetection",
      "value": function preventDetection() {
        window.AdBlock = false;
        window.adblock = false;
        window.adsbygoogle = {
          "loaded": true
        };
        if ("undefined" !== typeof unsafeWindow) {
          unsafeWindow.AdBlock = false;
          unsafeWindow.adblock = false;
          unsafeWindow.adsbygoogle = {
            "loaded": true
          };
        }
      }
    }, {
      "key": "setupPeriodicCleaning",
      "value": function setupPeriodicCleaning() {
        var r = this;
        this.domCleaner.removeAdElements(true);
        this.domCleaner.observeDOMChanges();
        setInterval((function() {
          return r.domCleaner.removeAdElements();
        }), 2e3);
      }
    }, {
      "key": "init",
      "value": function init() {
        var r = this;
        if (this.config.isEmpty()) {
          return;
        }
        this.preventDetection();
        this.styleManager.applyAdBlockStyles();
        this.requestBlocker.init();
        if ("loading" === document.readyState) {
          document.addEventListener("DOMContentLoaded", (function() {
            return r.setupPeriodicCleaning();
          }));
        } else {
          this.setupPeriodicCleaning();
        }
      }
    } ]);
  }();
  function DetailExpander_typeof(r) {
    return DetailExpander_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, DetailExpander_typeof(r);
  }
  function DetailExpander_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function DetailExpander_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, DetailExpander_toPropertyKey(l.key), l);
    }
  }
  function DetailExpander_createClass(r, o, a) {
    return o && DetailExpander_defineProperties(r.prototype, o), a && DetailExpander_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function DetailExpander_toPropertyKey(r) {
    var o = DetailExpander_toPrimitive(r, "string");
    return "symbol" == DetailExpander_typeof(o) ? o : o + "";
  }
  function DetailExpander_toPrimitive(r, o) {
    if ("object" != DetailExpander_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != DetailExpander_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var J = function() {
    function DetailExpander() {
      DetailExpander_classCallCheck(this, DetailExpander);
      this.maxAttempts = 3;
      this.attemptInterval = 1e3;
    }
    return DetailExpander_createClass(DetailExpander, [ {
      "key": "SHOW_MORE_SELECTOR",
      "get": function get() {
        return "a.text-nord13.font-medium.flex.items-center";
      }
    }, {
      "key": "autoExpandDetails",
      "value": function autoExpandDetails() {
        var r = this;
        this.expandDetailsSingle();
        var o = 0;
        var a = setInterval((function() {
          if (r.expandDetailsSingle() || ++o >= r.maxAttempts) {
            clearInterval(a);
          }
        }), this.attemptInterval);
      }
    }, {
      "key": "expandDetailsSingle",
      "value": function expandDetailsSingle() {
        try {
          var r = document.querySelector(this.SHOW_MORE_SELECTOR);
          if (r) {
            r.click();
            return true;
          }
        } catch (r) {}
        return false;
      }
    } ]);
  }();
  function QualityManager_typeof(r) {
    return QualityManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, QualityManager_typeof(r);
  }
  function _toConsumableArray(r) {
    return _arrayWithoutHoles(r) || _iterableToArray(r) || QualityManager_unsupportedIterableToArray(r) || _nonIterableSpread();
  }
  function _nonIterableSpread() {
    throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }
  function QualityManager_unsupportedIterableToArray(r, o) {
    if (r) {
      if ("string" == typeof r) {
        return QualityManager_arrayLikeToArray(r, o);
      }
      var a = {}.toString.call(r).slice(8, -1);
      return "Object" === a && r.constructor && (a = r.constructor.name), "Map" === a || "Set" === a ? Array.from(r) : "Arguments" === a || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a) ? QualityManager_arrayLikeToArray(r, o) : void 0;
    }
  }
  function _iterableToArray(r) {
    if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) {
      return Array.from(r);
    }
  }
  function _arrayWithoutHoles(r) {
    if (Array.isArray(r)) {
      return QualityManager_arrayLikeToArray(r);
    }
  }
  function QualityManager_arrayLikeToArray(r, o) {
    (null == o || o > r.length) && (o = r.length);
    for (var a = 0, l = Array(o); a < o; a++) {
      l[a] = r[a];
    }
    return l;
  }
  function QualityManager_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function QualityManager_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, QualityManager_toPropertyKey(l.key), l);
    }
  }
  function QualityManager_createClass(r, o, a) {
    return o && QualityManager_defineProperties(r.prototype, o), a && QualityManager_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function QualityManager_toPropertyKey(r) {
    var o = QualityManager_toPrimitive(r, "string");
    return "symbol" == QualityManager_typeof(o) ? o : o + "";
  }
  function QualityManager_toPrimitive(r, o) {
    if ("object" != QualityManager_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != QualityManager_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var tt = function() {
    function QualityManager() {
      QualityManager_classCallCheck(this, QualityManager);
      this.maxAttempts = 20;
      this.attemptInterval = 500;
    }
    return QualityManager_createClass(QualityManager, [ {
      "key": "setupAutoHighestQuality",
      "value": function setupAutoHighestQuality() {
        var r = this;
        if (this.setHighestQualitySingle()) {
          return;
        }
        var o = 0;
        var a = setInterval((function() {
          if (r.setHighestQualitySingle() || ++o >= r.maxAttempts) {
            clearInterval(a);
          }
        }), this.attemptInterval);
        window.addEventListener("load", (function() {
          return r.setHighestQualitySingle();
        }));
      }
    }, {
      "key": "setHighestQualitySingle",
      "value": function setHighestQualitySingle() {
        try {
          var r = window.player || ("undefined" !== typeof unsafeWindow ? unsafeWindow.player : null);
          if (!r || !r.config || !r.config.quality || !r.config.quality.options || !r.config.quality.options.length) {
            return false;
          }
          var o = Math.max.apply(Math, _toConsumableArray(r.config.quality.options));
          r.quality = o;
          r.config.quality.selected = o;
          if ("function" === typeof r.quality) {
            r.quality(o);
          }
          return true;
        } catch (r) {
          return false;
        }
      }
    } ]);
  }();
  function UrlRedirector_typeof(r) {
    return UrlRedirector_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, UrlRedirector_typeof(r);
  }
  function UrlRedirector_createForOfIteratorHelper(r, o) {
    var a = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
    if (!a) {
      if (Array.isArray(r) || (a = UrlRedirector_unsupportedIterableToArray(r)) || o && r && "number" == typeof r.length) {
        a && (r = a);
        var l = 0, u = function F() {};
        return {
          "s": u,
          "n": function n() {
            return l >= r.length ? {
              "done": !0
            } : {
              "done": !1,
              "value": r[l++]
            };
          },
          "e": function e(r) {
            throw r;
          },
          "f": u
        };
      }
      throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    }
    var p, v = !0, y = !1;
    return {
      "s": function s() {
        a = a.call(r);
      },
      "n": function n() {
        var r = a.next();
        return v = r.done, r;
      },
      "e": function e(r) {
        y = !0, p = r;
      },
      "f": function f() {
        try {
          v || null == a["return"] || a["return"]();
        } finally {
          if (y) {
            throw p;
          }
        }
      }
    };
  }
  function UrlRedirector_unsupportedIterableToArray(r, o) {
    if (r) {
      if ("string" == typeof r) {
        return UrlRedirector_arrayLikeToArray(r, o);
      }
      var a = {}.toString.call(r).slice(8, -1);
      return "Object" === a && r.constructor && (a = r.constructor.name), "Map" === a || "Set" === a ? Array.from(r) : "Arguments" === a || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a) ? UrlRedirector_arrayLikeToArray(r, o) : void 0;
    }
  }
  function UrlRedirector_arrayLikeToArray(r, o) {
    (null == o || o > r.length) && (o = r.length);
    for (var a = 0, l = Array(o); a < o; a++) {
      l[a] = r[a];
    }
    return l;
  }
  function UrlRedirector_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function UrlRedirector_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, UrlRedirector_toPropertyKey(l.key), l);
    }
  }
  function UrlRedirector_createClass(r, o, a) {
    return o && UrlRedirector_defineProperties(r.prototype, o), a && UrlRedirector_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function UrlRedirector_toPropertyKey(r) {
    var o = UrlRedirector_toPrimitive(r, "string");
    return "symbol" == UrlRedirector_typeof(o) ? o : o + "";
  }
  function UrlRedirector_toPrimitive(r, o) {
    if ("object" != UrlRedirector_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != UrlRedirector_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var et = function() {
    function UrlRedirector() {
      UrlRedirector_classCallCheck(this, UrlRedirector);
      this.redirectRules = [ {
        "pattern": /^https?:\/\/(www\.)?(missav|thisav|missav\.ws|missav123)\.com\/|^https?:\/\/(www\.)?missav\.live\//i,
        "targetDomain": "missav.ai"
      } ];
    }
    return UrlRedirector_createClass(UrlRedirector, [ {
      "key": "checkAndRedirect",
      "value": function checkAndRedirect() {
        var r = window.location.href;
        var o = UrlRedirector_createForOfIteratorHelper(this.redirectRules), a;
        try {
          for (o.s(); !(a = o.n()).done; ) {
            var l = a.value;
            if (l.pattern.test(r)) {
              var u = this.applyRedirect(r, l);
              if (u !== r) {
                window.location.href = u;
                return true;
              }
            }
          }
        } catch (r) {
          o.e(r);
        } finally {
          o.f();
        }
        return false;
      }
    }, {
      "key": "applyRedirect",
      "value": function applyRedirect(r, o) {
        if (o.targetDomain) {
          var a = r.replace(/^(https?:\/\/)(www\.)?(missav|thisav|missav\.ws|missav123)\.com\//i, "$1".concat(o.targetDomain, "/"));
          if (a === r) {
            a = r.replace(/^(https?:\/\/)(www\.)?missav\.live\//i, "$1".concat(o.targetDomain, "/"));
          }
          return a;
        }
        return r;
      }
    } ]);
  }();
  function userExperienceEnhancer_typeof(r) {
    return userExperienceEnhancer_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, userExperienceEnhancer_typeof(r);
  }
  function userExperienceEnhancer_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function userExperienceEnhancer_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, userExperienceEnhancer_toPropertyKey(l.key), l);
    }
  }
  function userExperienceEnhancer_createClass(r, o, a) {
    return o && userExperienceEnhancer_defineProperties(r.prototype, o), a && userExperienceEnhancer_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function userExperienceEnhancer_toPropertyKey(r) {
    var o = userExperienceEnhancer_toPrimitive(r, "string");
    return "symbol" == userExperienceEnhancer_typeof(o) ? o : o + "";
  }
  function userExperienceEnhancer_toPrimitive(r, o) {
    if ("object" != userExperienceEnhancer_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != userExperienceEnhancer_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var nt = function() {
    function UserExperienceEnhancer() {
      userExperienceEnhancer_classCallCheck(this, UserExperienceEnhancer);
      this.detailExpander = new J;
      this.qualityManager = new tt;
      this.urlRedirector = new et;
    }
    return userExperienceEnhancer_createClass(UserExperienceEnhancer, [ {
      "key": "init",
      "value": function init() {
        var r = this;
        var o;
        if (!(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false)) {
          if (this.urlRedirector.checkAndRedirect()) {
            return;
          }
        }
        if ("loading" === document.readyState) {
          document.addEventListener("DOMContentLoaded", (function() {
            r.initFeatures();
          }));
        } else {
          this.initFeatures();
        }
      }
    }, {
      "key": "initFeatures",
      "value": function initFeatures() {
        try {
          this.detailExpander.autoExpandDetails();
          this.qualityManager.setupAutoHighestQuality();
        } catch (r) {}
      }
    } ]);
  }();
  function initUserExperienceEnhancer() {
    var r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;
    var o = new nt;
    o.init(r);
    return o;
  }
  function constants_i18n_typeof(r) {
    return constants_i18n_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, constants_i18n_typeof(r);
  }
  function constants_i18n_classCallCheck(r, o) {
    if (!(r instanceof o)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function constants_i18n_defineProperties(r, o) {
    for (var a = 0; a < o.length; a++) {
      var l = o[a];
      l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), 
      Object.defineProperty(r, constants_i18n_toPropertyKey(l.key), l);
    }
  }
  function constants_i18n_createClass(r, o, a) {
    return o && constants_i18n_defineProperties(r.prototype, o), a && constants_i18n_defineProperties(r, a), 
    Object.defineProperty(r, "prototype", {
      "writable": !1
    }), r;
  }
  function constants_i18n_defineProperty(r, o, a) {
    return (o = constants_i18n_toPropertyKey(o)) in r ? Object.defineProperty(r, o, {
      "value": a,
      "enumerable": !0,
      "configurable": !0,
      "writable": !0
    }) : r[o] = a, r;
  }
  function constants_i18n_toPropertyKey(r) {
    var o = constants_i18n_toPrimitive(r, "string");
    return "symbol" == constants_i18n_typeof(o) ? o : o + "";
  }
  function constants_i18n_toPrimitive(r, o) {
    if ("object" != constants_i18n_typeof(r) || !r) {
      return r;
    }
    var a = r[Symbol.toPrimitive];
    if (void 0 !== a) {
      var l = a.call(r, o || "default");
      if ("object" != constants_i18n_typeof(l)) {
        return l;
      }
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return ("string" === o ? String : Number)(r);
  }
  var rt = function() {
    function I18n() {
      constants_i18n_classCallCheck(this, I18n);
    }
    return constants_i18n_createClass(I18n, null, [ {
      "key": "userLang",
      "get": function get() {
        return navigator.languages && navigator.languages[0] || navigator.language || "en";
      }
    }, {
      "key": "translate",
      "value": function translate(r) {
        var o;
        var a = (arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "") || this.userLang;
        var l;
        return (this.strings[a] || this.strings[a.split("-")[0]] || this.strings.en)[r] || this.strings.en[r];
      }
    } ]);
  }();
  constants_i18n_defineProperty(rt, "strings", {
    "en": {
      "scriptName": "Miss Player | Cinema Mode (One-handed Player)",
      "scriptDescription": "MissAV ad-free|One-handed mode|MissAV auto-expand details|MissAV auto high quality|MissAV redirect support|MissAV auto login|Custom player supporting jable po*nhub etc",
      "viewportConfigured": "Viewport configured to support safe area",
      "stylesInjected": "Styles injected",
      "enhancerInitialized": "User experience enhancer module initialized",
      "loginModuleInitialized": "Auto login module initialized",
      "initializationComplete": "Initialization complete",
      "initializationFailed": "Initialization failed",
      "play": "Play",
      "pause": "Pause",
      "mute": "Mute",
      "unmute": "Unmute",
      "fullscreen": "Fullscreen",
      "exitFullscreen": "Exit Fullscreen",
      "settings": "Settings",
      "quality": "Quality",
      "speed": "Speed",
      "autoplay": "Auto Play",
      "loop": "Loop",
      "autoQuality": "Auto Quality",
      "loadingError": "Failed to load video",
      "networkError": "Network error",
      "loginSuccess": "Login successful",
      "loginFailed": "Login failed"
    },
    "zh-CN": {
      "scriptName": "Miss Player | 影院模式 (单手播放器)",
      "scriptDescription": "MissAV去广告|单手模式|MissAV自动展开详情|MissAV自动高画质|MissAV重定向支持|MissAV自动登录|定制播放器 支持 jable po*nhub 等通用",
      "viewportConfigured": "已配置viewport以支持安全区域",
      "stylesInjected": "样式注入完成",
      "enhancerInitialized": "用户体验增强模块已初始化",
      "loginModuleInitialized": "自动登录模块已初始化",
      "initializationComplete": "初始化完成",
      "initializationFailed": "初始化失败",
      "play": "播放",
      "pause": "暂停",
      "mute": "静音",
      "unmute": "取消静音",
      "fullscreen": "全屏",
      "exitFullscreen": "退出全屏",
      "settings": "设置",
      "quality": "画质",
      "speed": "速度",
      "autoplay": "自动播放",
      "loop": "循环播放",
      "autoQuality": "自动画质",
      "loadingError": "视频加载失败",
      "networkError": "网络错误",
      "loginSuccess": "登录成功",
      "loginFailed": "登录失败"
    },
    "zh-TW": {
      "scriptName": "Miss Player | 影院模式 (單手播放器)",
      "scriptDescription": "MissAV去廣告|單手模式|MissAV自動展開詳情|MissAV自動高畫質|MissAV重定向支持|MissAV自動登錄|定制播放器 支持 jable po*nhub 等通用",
      "viewportConfigured": "已配置viewport以支持安全區域",
      "stylesInjected": "樣式注入完成",
      "enhancerInitialized": "用戶體驗增強模塊已初始化",
      "loginModuleInitialized": "自動登錄模塊已初始化",
      "initializationComplete": "初始化完成",
      "initializationFailed": "初始化失敗",
      "play": "播放",
      "pause": "暫停",
      "mute": "靜音",
      "unmute": "取消靜音",
      "fullscreen": "全屏",
      "exitFullscreen": "退出全屏",
      "settings": "設置",
      "quality": "畫質",
      "speed": "速度",
      "autoplay": "自動播放",
      "loop": "循環播放",
      "autoQuality": "自動畫質",
      "loadingError": "視頻加載失敗",
      "networkError": "網絡錯誤",
      "loginSuccess": "登錄成功",
      "loginFailed": "登錄失敗"
    },
    "ja": {
      "scriptName": "Miss Player | シネマモード (片手プレーヤー)",
      "scriptDescription": "MissAV広告なし|片手モード|MissAV自動詳細展開|MissAV自動高画質|MissAVリダイレクトサポート|MissAV自動ログイン|jable po*nhub などをサポートするカスタムプレーヤー",
      "viewportConfigured": "セーフエリアをサポートするためにビューポートを設定しました",
      "stylesInjected": "スタイルが注入されました",
      "enhancerInitialized": "ユーザー体験向上モジュールが初期化されました",
      "loginModuleInitialized": "自動ログインモジュールが初期化されました",
      "initializationComplete": "初期化が完了しました",
      "initializationFailed": "初期化に失敗しました",
      "play": "再生",
      "pause": "一時停止",
      "mute": "ミュート",
      "unmute": "ミュート解除",
      "fullscreen": "全画面",
      "exitFullscreen": "全画面解除",
      "settings": "設定",
      "quality": "画質",
      "speed": "速度",
      "autoplay": "自動再生",
      "loop": "ループ再生",
      "autoQuality": "自動画質",
      "loadingError": "動画の読み込みに失敗しました",
      "networkError": "ネットワークエラー",
      "loginSuccess": "ログイン成功",
      "loginFailed": "ログイン失敗"
    },
    "vi": {
      "scriptName": "Miss Player | Chế độ Rạp chiếu phim (Trình phát một tay)",
      "scriptDescription": "MissAV không quảng cáo|Chế độ một tay|MissAV tự động mở rộng chi tiết|MissAV tự động chất lượng cao|Hỗ trợ chuyển hướng MissAV|Đăng nhập tự động MissAV|Trình phát tùy chỉnh hỗ trợ jable po*nhub v.v.",
      "viewportConfigured": "Đã cấu hình viewport để hỗ trợ vùng an toàn",
      "stylesInjected": "Đã tiêm CSS",
      "enhancerInitialized": "Đã khởi tạo mô-đun nâng cao trải nghiệm người dùng",
      "loginModuleInitialized": "Đã khởi tạo mô-đun đăng nhập tự động",
      "initializationComplete": "Khởi tạo hoàn tất",
      "initializationFailed": "Khởi tạo thất bại",
      "play": "Phát",
      "pause": "Tạm dừng",
      "mute": "Tắt tiếng",
      "unmute": "Bật tiếng",
      "fullscreen": "Toàn màn hình",
      "exitFullscreen": "Thoát toàn màn hình",
      "settings": "Cài đặt",
      "quality": "Chất lượng",
      "speed": "Tốc độ",
      "autoplay": "Tự động phát",
      "loop": "Lặp lại",
      "autoQuality": "Chất lượng tự động",
      "loadingError": "Không thể tải video",
      "networkError": "Lỗi mạng",
      "loginSuccess": "Đăng nhập thành công",
      "loginFailed": "Đăng nhập thất bại"
    }
  });
  function __(r) {
    var o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "";
    return rt.translate(r, o);
  }
  function src_typeof(r) {
    return src_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(r) {
      return typeof r;
    } : function(r) {
      return r && "function" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? "symbol" : typeof r;
    }, src_typeof(r);
  }
  function src_regeneratorRuntime() {
    src_regeneratorRuntime = function _regeneratorRuntime() {
      return o;
    };
    var r, o = {}, a = Object.prototype, l = a.hasOwnProperty, u = "function" == typeof Symbol ? Symbol : {}, p = u.iterator || "@@iterator", v = u.asyncIterator || "@@asyncIterator", y = u.toStringTag || "@@toStringTag";
    function c(r, o, a, l) {
      return Object.defineProperty(r, o, {
        "value": a,
        "enumerable": !l,
        "configurable": !l,
        "writable": !l
      });
    }
    try {
      c({}, "");
    } catch (r) {
      c = function c(r, o, a) {
        return r[o] = a;
      };
    }
    function h(o, a, l, u) {
      var p = a && a.prototype instanceof Generator ? a : Generator, v = Object.create(p.prototype);
      return c(v, "_invoke", function(o, a, l) {
        var u = 1;
        return function(p, v) {
          if (3 === u) {
            throw Error("Generator is already running");
          }
          if (4 === u) {
            if ("throw" === p) {
              throw v;
            }
            return {
              "value": r,
              "done": !0
            };
          }
          for (l.method = p, l.arg = v; ;) {
            var y = l.delegate;
            if (y) {
              var k = d(y, l);
              if (k) {
                if (k === b) {
                  continue;
                }
                return k;
              }
            }
            if ("next" === l.method) {
              l.sent = l._sent = l.arg;
            } else if ("throw" === l.method) {
              if (1 === u) {
                throw u = 4, l.arg;
              }
              l.dispatchException(l.arg);
            } else {
              "return" === l.method && l.abrupt("return", l.arg);
            }
            u = 3;
            var C = s(o, a, l);
            if ("normal" === C.type) {
              if (u = l.done ? 4 : 2, C.arg === b) {
                continue;
              }
              return {
                "value": C.arg,
                "done": l.done
              };
            }
            "throw" === C.type && (u = 4, l.method = "throw", l.arg = C.arg);
          }
        };
      }(o, l, new Context(u || [])), !0), v;
    }
    function s(r, o, a) {
      try {
        return {
          "type": "normal",
          "arg": r.call(o, a)
        };
      } catch (r) {
        return {
          "type": "throw",
          "arg": r
        };
      }
    }
    o.wrap = h;
    var b = {};
    function Generator() {}
    function GeneratorFunction() {}
    function GeneratorFunctionPrototype() {}
    var k = {};
    c(k, p, (function() {
      return this;
    }));
    var C = Object.getPrototypeOf, _ = C && C(C(x([])));
    _ && _ !== a && l.call(_, p) && (k = _);
    var P = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(k);
    function g(r) {
      [ "next", "throw", "return" ].forEach((function(o) {
        c(r, o, (function(r) {
          return this._invoke(o, r);
        }));
      }));
    }
    function AsyncIterator(r, o) {
      function e(a, u, p, v) {
        var y = s(r[a], r, u);
        if ("throw" !== y.type) {
          var b = y.arg, k = b.value;
          return k && "object" == src_typeof(k) && l.call(k, "__await") ? o.resolve(k.__await).then((function(r) {
            e("next", r, p, v);
          }), (function(r) {
            e("throw", r, p, v);
          })) : o.resolve(k).then((function(r) {
            b.value = r, p(b);
          }), (function(r) {
            return e("throw", r, p, v);
          }));
        }
        v(y.arg);
      }
      var a;
      c(this, "_invoke", (function(r, l) {
        function i() {
          return new o((function(o, a) {
            e(r, l, o, a);
          }));
        }
        return a = a ? a.then(i, i) : i();
      }), !0);
    }
    function d(o, a) {
      var l = a.method, u = o.i[l];
      if (u === r) {
        return a.delegate = null, "throw" === l && o.i["return"] && (a.method = "return", 
        a.arg = r, d(o, a), "throw" === a.method) || "return" !== l && (a.method = "throw", 
        a.arg = new TypeError("The iterator does not provide a '" + l + "' method")), b;
      }
      var p = s(u, o.i, a.arg);
      if ("throw" === p.type) {
        return a.method = "throw", a.arg = p.arg, a.delegate = null, b;
      }
      var v = p.arg;
      return v ? v.done ? (a[o.r] = v.value, a.next = o.n, "return" !== a.method && (a.method = "next", 
      a.arg = r), a.delegate = null, b) : v : (a.method = "throw", a.arg = new TypeError("iterator result is not an object"), 
      a.delegate = null, b);
    }
    function w(r) {
      this.tryEntries.push(r);
    }
    function m(o) {
      var a = o[4] || {};
      a.type = "normal", a.arg = r, o[4] = a;
    }
    function Context(r) {
      this.tryEntries = [ [ -1 ] ], r.forEach(w, this), this.reset(!0);
    }
    function x(o) {
      if (null != o) {
        var a = o[p];
        if (a) {
          return a.call(o);
        }
        if ("function" == typeof o.next) {
          return o;
        }
        if (!isNaN(o.length)) {
          var u = -1, v = function e() {
            for (;++u < o.length; ) {
              if (l.call(o, u)) {
                return e.value = o[u], e.done = !1, e;
              }
            }
            return e.value = r, e.done = !0, e;
          };
          return v.next = v;
        }
      }
      throw new TypeError(src_typeof(o) + " is not iterable");
    }
    return GeneratorFunction.prototype = GeneratorFunctionPrototype, c(P, "constructor", GeneratorFunctionPrototype), 
    c(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = c(GeneratorFunctionPrototype, y, "GeneratorFunction"), 
    o.isGeneratorFunction = function(r) {
      var o = "function" == typeof r && r.constructor;
      return !!o && (o === GeneratorFunction || "GeneratorFunction" === (o.displayName || o.name));
    }, o.mark = function(r) {
      return Object.setPrototypeOf ? Object.setPrototypeOf(r, GeneratorFunctionPrototype) : (r.__proto__ = GeneratorFunctionPrototype, 
      c(r, y, "GeneratorFunction")), r.prototype = Object.create(P), r;
    }, o.awrap = function(r) {
      return {
        "__await": r
      };
    }, g(AsyncIterator.prototype), c(AsyncIterator.prototype, v, (function() {
      return this;
    })), o.AsyncIterator = AsyncIterator, o.async = function(r, a, l, u, p) {
      void 0 === p && (p = Promise);
      var v = new AsyncIterator(h(r, a, l, u), p);
      return o.isGeneratorFunction(a) ? v : v.next().then((function(r) {
        return r.done ? r.value : v.next();
      }));
    }, g(P), c(P, y, "Generator"), c(P, p, (function() {
      return this;
    })), c(P, "toString", (function() {
      return "[object Generator]";
    })), o.keys = function(r) {
      var o = Object(r), a = [];
      for (var l in o) {
        a.unshift(l);
      }
      return function t() {
        for (;a.length; ) {
          if ((l = a.pop()) in o) {
            return t.value = l, t.done = !1, t;
          }
        }
        return t.done = !0, t;
      };
    }, o.values = x, Context.prototype = {
      "constructor": Context,
      "reset": function reset(o) {
        if (this.prev = this.next = 0, this.sent = this._sent = r, this.done = !1, this.delegate = null, 
        this.method = "next", this.arg = r, this.tryEntries.forEach(m), !o) {
          for (var a in this) {
            "t" === a.charAt(0) && l.call(this, a) && !isNaN(+a.slice(1)) && (this[a] = r);
          }
        }
      },
      "stop": function stop() {
        this.done = !0;
        var r = this.tryEntries[0][4];
        if ("throw" === r.type) {
          throw r.arg;
        }
        return this.rval;
      },
      "dispatchException": function dispatchException(o) {
        if (this.done) {
          throw o;
        }
        var a = this;
        function n(r) {
          p.type = "throw", p.arg = o, a.next = r;
        }
        for (var l = a.tryEntries.length - 1; l >= 0; --l) {
          var u = this.tryEntries[l], p = u[4], v = this.prev, y = u[1], b = u[2];
          if (-1 === u[0]) {
            return n("end"), !1;
          }
          if (!y && !b) {
            throw Error("try statement without catch or finally");
          }
          if (null != u[0] && u[0] <= v) {
            if (v < y) {
              return this.method = "next", this.arg = r, n(y), !0;
            }
            if (v < b) {
              return n(b), !1;
            }
          }
        }
      },
      "abrupt": function abrupt(r, o) {
        for (var a = this.tryEntries.length - 1; a >= 0; --a) {
          var l = this.tryEntries[a];
          if (l[0] > -1 && l[0] <= this.prev && this.prev < l[2]) {
            var u = l;
            break;
          }
        }
        u && ("break" === r || "continue" === r) && u[0] <= o && o <= u[2] && (u = null);
        var p = u ? u[4] : {};
        return p.type = r, p.arg = o, u ? (this.method = "next", this.next = u[2], b) : this.complete(p);
      },
      "complete": function complete(r, o) {
        if ("throw" === r.type) {
          throw r.arg;
        }
        return "break" === r.type || "continue" === r.type ? this.next = r.arg : "return" === r.type ? (this.rval = this.arg = r.arg, 
        this.method = "return", this.next = "end") : "normal" === r.type && o && (this.next = o), 
        b;
      },
      "finish": function finish(r) {
        for (var o = this.tryEntries.length - 1; o >= 0; --o) {
          var a = this.tryEntries[o];
          if (a[2] === r) {
            return this.complete(a[4], a[3]), m(a), b;
          }
        }
      },
      "catch": function _catch(r) {
        for (var o = this.tryEntries.length - 1; o >= 0; --o) {
          var a = this.tryEntries[o];
          if (a[0] === r) {
            var l = a[4];
            if ("throw" === l.type) {
              var u = l.arg;
              m(a);
            }
            return u;
          }
        }
        throw Error("illegal catch attempt");
      },
      "delegateYield": function delegateYield(o, a, l) {
        return this.delegate = {
          "i": x(o),
          "r": a,
          "n": l
        }, "next" === this.method && (this.arg = r), b;
      }
    }, o;
  }
  function src_asyncGeneratorStep(r, o, a, l, u, p, v) {
    try {
      var y = r[p](v), b = y.value;
    } catch (r) {
      return void a(r);
    }
    y.done ? o(b) : Promise.resolve(b).then(l, u);
  }
  function src_asyncToGenerator(r) {
    return function() {
      var o = this, a = arguments;
      return new Promise((function(l, u) {
        var p = r.apply(o, a);
        function _next(r) {
          src_asyncGeneratorStep(p, l, u, _next, _throw, "next", r);
        }
        function _throw(r) {
          src_asyncGeneratorStep(p, l, u, _next, _throw, "throw", r);
        }
        _next(void 0);
      }));
    };
  }
  function setupViewport() {
    var r = document.querySelector('meta[name="viewport"]');
    if (!r) {
      (r = document.createElement("meta")).name = "viewport";
      document.head.appendChild(r);
    }
    r.content = "width=device-width, initial-scale=1.0, viewport-fit=cover";
  }
  !function() {
    var r = null;
    var o = null;
    function injectStyles() {
      if (document.getElementById("tm-player-styles")) {
        return;
      }
      setupViewport();
      initCSSVariables();
    }
    function startScript() {
      return _startScript.apply(this, arguments);
    }
    function _startScript() {
      return (_startScript = src_asyncToGenerator(src_regeneratorRuntime().mark((function _callee() {
        var o, a, l, u;
        return src_regeneratorRuntime().wrap((function _callee$(p) {
          while (1) {
            switch (p.prev = p.next) {
             case 0:
              p.prev = 0;
              injectStyles();
              o = initUserExperienceEnhancer();
              (r = new E).loadSettings();
              (a = new S({
                "playerState": r
              })).init();
              p.next = 9;
              return initAutoLogin();

             case 9:
              if (l = p.sent) {}
              (u = new Z).init();
              p.next = 17;
              break;

             case 15:
              p.prev = 15;
              p.t0 = p["catch"](0);

             case 17:
             case "end":
              return p.stop();
            }
          }
        }), _callee, null, [ [ 0, 15 ] ]);
      })))).apply(this, arguments);
    }
    if ("complete" === document.readyState || "interactive" === document.readyState) {
      setTimeout(startScript, 100);
    } else {
      document.addEventListener("DOMContentLoaded", (function() {
        return setTimeout(startScript, 100);
      }));
    }
  }();
})();