1!function (e, t) { 2 "use strict"; 3 "object" == typeof module && "object" == typeof module.exports ? module.exports = t(e, document) : "function" == typeof define && define.amd ? define([], function () { 4 return t(e, document) 5 }) : e.plyr = t(e, document) 6}("undefined" != typeof window ? window : this, function (e, t) { 7 "use strict"; 8 9 function n() { 10 var e = t.getElementsByTagName("script"); 11 if (e && e.length) for (var n = 0; n < e.length; n++) if (e[n].src.indexOf("plyr.js") > -1 || e[n].src.indexOf("plyr.min.js") > -1) return e[n] 12 } 13 14 function a() { 15 var e, n, a, i = navigator.userAgent, r = navigator.appName, s = "" + parseFloat(navigator.appVersion), 16 o = parseInt(navigator.appVersion, 10), l = !1, u = !1, d = !1, c = !1, p = !1; 17 return -1 !== navigator.appVersion.indexOf("Windows NT") && -1 !== navigator.appVersion.indexOf("rv:11") ? (l = !0, r = "IE", s = "11") : -1 !== (n = i.indexOf("MSIE")) ? (l = !0, r = "IE", s = i.substring(n + 5)) : -1 !== (n = i.indexOf("Edge")) ? (u = !0, r = "Edge", s = i.substring(n + 5)) : -1 !== (n = i.indexOf("Chrome")) ? (c = !0, r = "Chrome", s = i.substring(n + 7)) : -1 !== (n = i.indexOf("Safari")) ? (p = !0, r = "Safari", s = i.substring(n + 7), -1 !== (n = i.indexOf("Version")) && (s = i.substring(n + 8))) : -1 !== (n = i.indexOf("Firefox")) ? (d = !0, r = "Firefox", s = i.substring(n + 8)) : (e = i.lastIndexOf(" ") + 1) < (n = i.lastIndexOf("/")) && (r = i.substring(e, n), s = i.substring(n + 1), r.toLowerCase() === r.toUpperCase() && (r = navigator.appName)), -1 !== (a = s.indexOf(";")) && (s = s.substring(0, a)), -1 !== (a = s.indexOf(" ")) && (s = s.substring(0, a)), o = parseInt("" + s, 10), isNaN(o) && (s = "" + parseFloat(navigator.appVersion), o = parseInt(navigator.appVersion, 10)), { 18 name: r, 19 version: o, 20 isIE: l, 21 isEdge: u, 22 isFirefox: d, 23 isChrome: c, 24 isSafari: p, 25 isIos: /(iPad|iPhone|iPod)/gi.test(navigator.platform), 26 isTouch: "ontouchstart" in t.documentElement 27 } 28 } 29 30 function i(e) { 31 if (!t.querySelectorAll('script[src="' + e + '"]').length) { 32 var n = t.createElement("script"); 33 n.src = e; 34 var a = t.getElementsByTagName("script")[0]; 35 a.parentNode.insertBefore(n, a) 36 } 37 } 38 39 function r(e, t) { 40 return Array.prototype.indexOf && -1 !== e.indexOf(t) 41 } 42 43 function s(e, t, n) { 44 return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g, "\\$1"), "g"), n) 45 } 46 47 function o(e, t) { 48 e.length || (e = [e]); 49 for (var n = e.length - 1; n >= 0; n--) { 50 var a = n > 0 ? t.cloneNode(!0) : t, i = e[n], r = i.parentNode, s = i.nextSibling; 51 return a.appendChild(i), s ? r.insertBefore(a, s) : r.appendChild(a), a 52 } 53 } 54 55 function l(e) { 56 e && e.parentNode.removeChild(e) 57 } 58 59 function u(e, t) { 60 e.insertBefore(t, e.firstChild) 61 } 62 63 function d(e, t) { 64 for (var n in t) e.setAttribute(n, F.boolean(t[n]) && t[n] ? "" : t[n]) 65 } 66 67 function c(e, n, a) { 68 var i = t.createElement(e); 69 d(i, a), u(n, i) 70 } 71 72 function p(e, t, n) { 73 if (e) if (e.classList) e.classList[n ? "add" : "remove"](t); else { 74 var a = (" " + e.className + " ").replace(/\s+/g, " ").replace(" " + t + " ", ""); 75 e.className = a + (n ? " " + t : "") 76 } 77 } 78 79 function y(e, t) { 80 return !!e && (e.classList ? e.classList.contains(t) : new RegExp("(\\s|^)" + t + "(\\s|$)").test(e.className)) 81 } 82 83 function m(e, n) { 84 var a = Element.prototype; 85 return (a.matches || a.webkitMatchesSelector || a.mozMatchesSelector || a.msMatchesSelector || function (e) { 86 return -1 !== [].indexOf.call(t.querySelectorAll(e), this) 87 }).call(e, n) 88 } 89 90 function f(e, t, n, a, i) { 91 g(e, t, function (t) { 92 n && n.apply(e, [t]), a.apply(e, [t]) 93 }, i) 94 } 95 96 function b(e, t, n, a, i) { 97 var r = t.split(" "); 98 if (F.boolean(i) || (i = !1), e instanceof NodeList) for (var s = 0; s < e.length; s++) e[s] instanceof Node && b(e[s], arguments[1], arguments[2], arguments[3]); else for (var o = 0; o < r.length; o++) e[a ? "addEventListener" : "removeEventListener"](r[o], n, i) 99 } 100 101 function g(e, t, n, a) { 102 F.undefined(e) || b(e, t, n, !0, a) 103 } 104 105 function v(e, t, n, a) { 106 F.undefined(e) || b(e, t, n, !1, a) 107 } 108 109 function h(e, t, n, a) { 110 if (e && t) { 111 F.boolean(n) || (n = !1); 112 var i = new CustomEvent(t, {bubbles: n, detail: a}); 113 e.dispatchEvent(i) 114 } 115 } 116 117 function _(e, t) { 118 if (e) return t = F.boolean(t) ? t : !e.getAttribute("aria-pressed"), e.setAttribute("aria-pressed", t), t 119 } 120 121 function k(e, t) { 122 return 0 === e || 0 === t || isNaN(e) || isNaN(t) ? 0 : (e / t * 100).toFixed(2) 123 } 124 125 function x() { 126 var e = arguments; 127 if (e.length) { 128 if (1 === e.length) return e[0]; 129 for (var t = Array.prototype.shift.call(e), n = e.length, a = 0; a < n; a++) { 130 var i = e[a]; 131 for (var r in i) i[r] && i[r].constructor && i[r].constructor === Object ? (t[r] = t[r] || {}, x(t[r], i[r])) : t[r] = i[r] 132 } 133 return t 134 } 135 } 136 137 function S(n, b) { 138 function S(e, t, n, a) { 139 h(e, t, n, x({}, a, {plyr: xt})) 140 } 141 142 function C(t, n) { 143 b.debug && e.console && (n = Array.prototype.slice.call(n), F.string(b.logPrefix) && b.logPrefix.length && n.unshift(b.logPrefix), console[t].apply(console, n)) 144 } 145 146 function N() { 147 return {url: b.iconUrl, absolute: 0 === b.iconUrl.indexOf("http") || St.browser.isIE} 148 } 149 150 function M(e, t) { 151 var n = ["font-style_none", "font-style_raised", "font-style_depressed", "font-style_uniform", "font-style_dropshadow"]; 152 return 3 === e ? t.indexOf("black") > -1 || t.indexOf("blue") > -1 ? n[3] + "_white" : n[3] + "_black" : n[e] 153 } 154 155 function D() { 156 var e = ["white", "black", "red", "green", "blue", "yellow", "magenta", "cyan"], 157 t = ["opaque", "translucent", "semitransparent", "transparent"], 158 n = ["font_mono_serif", "font_proportional_serif", "font_mono_sans_serif", "font_proportional_sans_serif", "font_casual", "font_cursive", "font_small_caps"], 159 a = ["font-size_50", "font-size_100", "font-size_150", "font-size_200"], 160 i = "txt_" + e[St.captions.fontColorIndex] + "_" + t[St.captions.fontOpacityIndex], 161 r = "bg_" + e[St.captions.backgroundColorIndex] + "_" + t[St.captions.backgroundOpacityIndex]; 162 return [n[St.captions.fontIndex], i, M(St.captions.fontStyleIndex, i), a[St.captions.fontSizeIndex], r].join(".") 163 } 164 165 function B() { 166 W(b.selectors.settings.font, St.captions.fonts, function () { 167 var e = this, t = parseInt(e.dataset.index); 168 St.captions.font = e.innerText, F.htmlElement(St.settings.font) && (St.settings.font.innerText = St.captions.font), St.captions.fontIndex = t, de(), oe() 169 }) 170 } 171 172 function L() { 173 W(b.selectors.settings.fontColor, St.captions.colors, function () { 174 var e = this, t = parseInt(e.dataset.index); 175 St.captions.fontColor = e.innerText, F.htmlElement(St.settings.fontColor) && (St.settings.fontColor.innerText = St.captions.fontColor), St.captions.fontColorIndex = t, de(), oe() 176 }) 177 } 178 179 function z() { 180 W(b.selectors.settings.fontSize, St.captions.fontSizes, function () { 181 var e = this, t = parseInt(e.dataset.index); 182 St.captions.fontSize = e.innerText, F.htmlElement(St.settings.fontSize) && (St.settings.fontSize.innerText = St.captions.fontSize), St.captions.fontSizeIndex = t, de(), oe() 183 }) 184 } 185 186 function V() { 187 W(b.selectors.settings.fontOpacity, St.captions.opacities, function () { 188 var e = this, t = parseInt(e.dataset.index); 189 St.captions.fontOpacity = e.innerText, F.htmlElement(St.settings.fontOpacity) && (St.settings.fontOpacity.innerText = St.captions.fontOpacity), St.captions.fontOpacityIndex = t, de(), oe() 190 }) 191 } 192 193 function j() { 194 W(b.selectors.settings.fontStyle, St.captions.fontStyles, function () { 195 var e = this, t = parseInt(e.dataset.index); 196 St.captions.fontStyle = e.innerText, F.htmlElement(St.settings.fontStyle) && (St.settings.fontStyle.innerText = St.captions.fontStyle), St.captions.fontStyleIndex = t, de(), oe() 197 }) 198 } 199 200 function q() { 201 W(b.selectors.settings.backgroundColor, St.captions.colors, function () { 202 var e = this, t = parseInt(e.dataset.index); 203 St.captions.backgroundColor = e.innerText, F.htmlElement(St.settings.backgroundColor) && (St.settings.backgroundColor.innerText = St.captions.backgroundColor), St.captions.backgroundColorIndex = t, de(), oe() 204 }) 205 } 206 207 function R() { 208 W(b.selectors.settings.backgroundOpacity, St.captions.opacities, function () { 209 var e = this, t = parseInt(e.dataset.index); 210 St.captions.backgroundOpacity = e.innerText, F.htmlElement(St.settings.backgroundOpacity) && (St.settings.backgroundOpacity.innerText = St.captions.backgroundOpacity), St.captions.backgroundOpacityIndex = t, de(), oe() 211 }) 212 } 213 214 function W(e, n, a) { 215 var i = me(e); 216 if (F.htmlElement(i)) { 217 for (var r = t.createDocumentFragment(), s = 0; s < n.length; s++) r.appendChild(Y(n[s], s, a)); 218 i.appendChild(r) 219 } 220 } 221 222 function Y(e, n, a) { 223 var i = t.createElement("li"), r = t.createElement("button"); 224 return r.setAttribute("type", "button"), r.setAttribute("aria-controls", "plyr-settings-" + St.id + "-captionStyle"), r.innerText = e, r.dataset.index = n, a && (r.onclick = a), i.appendChild(r), i 225 } 226 227 function H() { 228 var e = this, t = parseInt(e.dataset.id, 10); 229 St.adaptivePlayer.audioTrackId = t, U(e.dataset.name) 230 } 231 232 function U(e) { 233 F.htmlElement(St.settings.audio) && (St.settings.audio.innerText = e) 234 } 235 236 function G() { 237 var e = this, t = parseInt(e.dataset.index); 238 Ke(t), St.captionsEnabled = t >= 0, oe() 239 } 240 241 function X(e) { 242 F.htmlElement(St.settings.caption) && (St.settings.caption.innerText = e) 243 } 244 245 function K() { 246 if (r(b.controls, "settings")) {
247 for (var e = me(b.selectors.settings.captions); e.lastChild && e.children.length > 1;) e.removeChild(e.lastChild); 248 var n = t.createDocumentFragment(), a = t.createElement("li"), i = t.createElement("button"); 249 i.setAttribute("type", "button"), i.innerText = b.i18n.none, i.dataset.index = -1, i.onclick = G, a.appendChild(i), n.appendChild(a); 250 for (var s = 0; s < St.media.textTracks.length; s++) if ("subtitles" === St.media.textTracks[s].kind || "captions" === St.media.textTracks[s].kind) { 251 a = t.createElement("li"), i = t.createElement("button"), i.setAttribute("type", "button"), i.setAttribute("aria-controls", "plyr-settings-" + St.id + "-primary"); 252 var o = St.media.textTracks[s].label; 253 "" === o && (o = "Subtitles"), i.innerText = o, i.dataset.index = s, i.onclick = G, a.appendChild(i), n.appendChild(a) 254 } 255 e.appendChild(n) 256 } 257 } 258 259 function J() { 260 if (r(b.controls, "settings")) { 261 for (var e = me(b.selectors.settings.audio); e.lastChild && e.children.length > 1;) e.removeChild(e.lastChild); 262 var n = t.createDocumentFragment(), a = St.adaptivePlayer.audioTracks; 263 if (!a) return; 264 for (var i = 0; i < a.length; i++) { 265 var s = a[i], o = ae(s), l = t.createElement("li"), u = t.createElement("button"); 266 u.setAttribute("type", "button"), u.setAttribute("aria-controls", "plyr-settings-" + St.id + "-primary"), u.innerText = o, u.dataset.id = s.id, u.dataset.name = o, u.onclick = H, l.appendChild(u), n.appendChild(l), s.enabled && U(o) 267 } 268 e.appendChild(n) 269 } 270 } 271 272 function $() { 273 return !St.browser.isFirefox && (!St.browser.isEdge && !St.browser.isIE) 274 } 275 276 function Q() { 277 r(b.controls, "settings") && F.htmlElement(St.buttons.settings) && ($() ? (B(), L(), z(), V(), j(), q(), R()) : St.settings.captionTab.setAttribute("style", "display: none;")) 278 } 279 280 function Z() { 281 var e = "LIVE" === St.adaptivePlayer.playlistType; 282 if (Q(), b.showThumbnails && !St.adaptivePlayer.supportsThumbnails) { 283 St.progress.container.removeChild(St.progress.seek.container); 284 var n = t.createElement("span"); 285 n.setAttribute("class", "plyr__tooltip plyr__tooltip--container plyr__tooltip--time"), n.innerText = "00:00", St.progress.container.appendChild(n), St.progress.seek = { 286 container: me(b.selectors.progress.seek.container), 287 tooltip: me(b.selectors.progress.seek.tooltip), 288 thumbnail: me(b.selectors.progress.seek.thumbnail) 289 } 290 } 291 if (e) { 292 p(St.progress.container, b.classes.hideProgress, !0), St.currentTime && (p(St.currentTime, "plyr__time--current", !1), p(St.currentTime, "plyr__time", !0), St.currentTime.innerHTML = "LIVE", St.currentTime = void 0), St.duration && St.duration.setAttribute("style", "display: none;"), St.buttons && St.buttons.pause && St.buttons.pause.setAttribute("style", "display: none;"), b.clickToPlay = !1; 293 var a = me("." + b.classes.videoWrapper); 294 a && (a.style.cursor = "default", v(a, "click", mt)) 295 } 296 } 297 298 function ee() { 299 St.captions = {}, St.captions.fonts = [b.i18n.monoSerif, b.i18n.proportionalSerif, b.i18n.monoSansSerif, b.i18n.proportionalSansSerif, b.i18n.casual, b.i18n.cursive, b.i18n.smallCaps], St.captions.colors = [b.i18n.white, b.i18n.black, b.i18n.red, b.i18n.green, b.i18n.blue, b.i18n.yellow, b.i18n.magenta, b.i18n.cyan], St.captions.opacities = [b.i18n.opaque, b.i18n.translucent, b.i18n.semitransparent, b.i18n.transparent], St.captions.fontSizes = ["50%", "100%", "150%", "200%"], St.captions.fontStyles = [b.i18n.none, b.i18n.raised, b.i18n.depressed, b.i18n.uniform, b.i18n.dropShadow], re() || (St.captions.fontIndex = 3, St.captions.fontColorIndex = 0, St.captions.fontSizeIndex = 1, St.captions.fontOpacityIndex = 0, St.captions.fontStyleIndex = 4, St.captions.backgroundColorIndex = 1, St.captions.backgroundOpacityIndex = 3), St.captions.font = St.captions.fonts[St.captions.fontIndex], St.captions.fontColor = St.captions.colors[St.captions.fontColorIndex], St.captions.fontSize = St.captions.fontSizes[St.captions.fontSizeIndex], St.captions.fontOpacity = St.captions.opacities[St.captions.fontOpacityIndex], St.captions.fontStyle = St.captions.fontStyles[St.captions.fontStyleIndex], St.captions.backgroundColor = St.captions.colors[St.captions.backgroundColorIndex], St.captions.backgroundOpacity = St.captions.opacities[St.captions.backgroundOpacityIndex] 300 } 301 302 function te() { 303 var e = [], t = N(), n = (t.absolute ? "" : t.url) + "#" + b.iconPrefix; 304 return e.push('<div class="plyr__ad-overlay">'), e.push('<span class="plyr__time">', '<span class="plyr__sr-only">' + b.i18n.adDuration + "</span>", '<span class="plyr__time--ad-duration">00:00</span>
304', "</span>"), e.push("</div>"), r(b.controls, "play-large") && e.push('<button type="button" data-plyr="play" class="plyr__play-large">', '<svg><use xlink:href="' + n + '-play" /></svg>', '<span class="plyr__sr-only">' + b.i18n.play + "</span>", "</button>"), e.push('<div class="plyr__controls">'), r(b.controls, "restart") && e.push('<button type="button" data-plyr="restart">', '<svg><use xlink:href="' + n + '-restart" /></svg>', '<span class="plyr__sr-only">' + b.i18n.restart + "</span>", "</button>"), r(b.controls, "rewind") && e.push('<button type="button" data-plyr="rewind">', '<svg><use xlink:href="' + n + '-rewind" /></svg>', '<span class="plyr__sr-only">' + b.i18n.rewind + "</span>", "</button>"), r(b.controls, "play") && e.push('<button type="button" data-plyr="play">', '<svg><use xlink:href="' + n + '-play" /></svg>', '<span class="plyr__sr-only">' + b.i18n.play + "</span>", "</button>", '<button type="button" data-plyr="pause">', '<svg><use xlink:href="' + n + '-pause" /></svg>', '<span class="plyr__sr-only">' + b.i18n.pause + "</span>", "</button>"), r(b.controls, "fast-forward") && e.push('<button type="button" data-plyr="fast-forward">', '<svg><use xlink:href="' + n + '-fast-forward" /></svg>', '<span class="plyr__sr-only">' + b.i18n.forward + "</span>", "</button>"), r(b.controls, "current-time") && e.push('<span class="plyr__time">', '<span class="plyr__sr-only">' + b.i18n.currentTime + "</span>", '<span class="plyr__time--current">00:00</span>', "</span>"), r(b.controls, "progress") ? (e.push('<span class="plyr__progress">', '<label for="seek{id}" class="plyr__sr-only">Seek</label>', '<input id="seek{id}" class="plyr__progress--seek" type="range" min="0" max="100" step="0.1" value="0" data-plyr="seek">', '<progress class="plyr__progress--played" max="100" value="0" role="presentation"></progress>', '<progress class="plyr__progress--buffer" max="100" value="0">', "<span>0</span>% " + b.i18n.buffered, "</progress>"), b.tooltips.seek && (b.showThumbnails ? e.push('<div class="plyr__tooltip plyr__tooltip--container">', '<img class="plyr__tooltip--thumbnail" />', '<div class="plyr__tooltip--time">00:00</div>', "</div>") : e.push('<span class="plyr__tooltip plyr__tooltip--container plyr__tooltip--time">00:00</span>')), e.push("</span>")) : e.push('<span class="plyr__progress"></span>'), r(b.controls, "duration") && e.push('<span class="plyr__time">', '<span class="plyr__sr-only">' + b.i18n.duration + "</span>", '<span class="plyr__time--duration">00:00</span>', "</span>"), r(b.controls, "mute") && e.push('<button type="button" data-plyr="mute">', '<svg class="icon--muted"><use xlink:href="' + n + '-muted" /></svg>', '<svg><use xlink:href="' + n + '-volume" /></svg>', '<span class="plyr__sr-only">' + b.i18n.toggleMute + "</span>", "</button>"), r(b.controls, "volume") && e.push('<span class="plyr__volume">', '<label for="volume-{id}" class="plyr__sr-only">' + b.i18n.volume + "</label>", '<input id="volume-{id}" class="plyr__volume--input" type="range" min="' + b.volumeMin + '" max="' + b.volumeMax + '" value="' + b.volume + '" data-plyr="volume">', '<progress class="plyr__volume--display" max="' + b.volumeMax + '" value="' + b.volumeMin + '" role="presentation"></progress>', "</span>"), r(b.controls, "captions") && e.push('<button type="button" data-plyr="captions">', '<svg class="icon--captions-on"><use xlink:href="' + n + '-captions-on" /></svg>', '<svg><use xlink:href="' + n + '-captions-off" /></svg>', '<span class="plyr__sr-only">' + b.i18n.toggleCaptions + "</span>", "</button>"), r(b.controls, "settings") && e.push('<div class="plyr__menu" data-plyr="settings">', '<button type="button" id="plyr-settings-toggle-{id}" aria-haspopup="true" aria-controls="plyr-settings-{id}" aria-expanded="false">', '<svg><use xlink:href="' + n + '-settings" /></svg>', '<span class="plyr__sr-only">' + b.i18n.settings + "</span>", "</button>", '<div class="plyr__menu__container" id="plyr-settings-{id}" aria-hidden="true" aria-labelled-by="plyr-settings-toggle-{id}" role="tablist" tabindex="-1">', "<div>", '<div class="plyr__menu__primary" id="plyr-settings-{id}-primary" aria-hidden="false" aria-labelled-by="plyr-settings-toggle-{id}" role="tabpanel" tabindex="-1">', "<ul>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-audio-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-audio" aria-expanded="false">', b.i18n.audio + ' <span class="plyr__menu__btn__value">' + b.i18n.none + "</span>", "</button>", "</li>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-captions-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-captions" aria-expanded="false">', b.i18n.captions + ' <span class="plyr__menu__btn__value">' + b.i18n.none + "</span>", "</button>", "</li>", '<li role="tab" id="plyr-settings-{id}-captionStyle-tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-captionStyle-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.captionStyle, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-captions" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captions-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-captions">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-primary" aria-expanded="false">', b.i18n.captions, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-audio" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-audio-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-audio">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-primary" aria-expanded="false">', b.i18n.audio, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-captionStyle" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-captionStyle">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-primary" aria-expanded="false">', b.i18n.captionStyle, "</button>", "</li>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-font-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-font" aria-expanded="false">', b.i18n.font + ' <span class="plyr__menu__btn__value">' + St.captions.font + "</span>", "</button>", "</li>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-fontColor-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-fontColor" aria-expanded="false">', b.i18n.fontColor + ' <span class="plyr__menu__btn__value">' + St.captions.fontColor + "</span>", "</button>", "</li>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-fontSize-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-fontSize" aria-expanded="false">', b.i18n.fontSize + ' <span class="plyr__menu__btn__value">' + St.captions.fontSize + "</span>", "</button>", "</li>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-fontOpacity-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-fontOpacity" aria-expanded="false">', b.i18n.fontOpacity + ' <span class="plyr__menu__btn__value">' + St.captions.fontOpacity + "</span>", "</button>", "</li>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-fontStyle-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-fontStyle" aria-expanded="false">', b.i18n.fontStyle + ' <span class="plyr__menu__btn__value">' + St.captions.fontStyle + "</span>", "</button>", "</li>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-backgroundColor-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-backgroundColor" aria-expanded="false">', b.i18n.backgroundColor + ' <span class="plyr__menu__btn__value">' + St.captions.backgroundColor + "</span>", "</button>", "</li>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-backgroundOpacity-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-backgroundOpacity" aria-expanded="false">', b.i18n.backgroundOpacity + ' <span class="plyr__menu__btn__value">' + St.captions.backgroundOpacity + "</span>", "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-font" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-font">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.font, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-fontColor" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-fontColor">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.fontColor, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-fontSize" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-fontSize">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.fontSize, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-fontOpacity" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-fontOpacity">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.fontOpacity, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-fontStyle" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-fontStyle">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.fontStyle, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-backgroundColor" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-backgroundColor">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.backgroundColor, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-backgroundOpacity" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-backgroundOpacity">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.backgroundOpacity, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-windowColor" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-windowColor">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.windowColor, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-windowOpacity" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-windowOpacity">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.windowOpacity, "</button>", "</li>", "</ul>", "</div>", "</div>", "</div>", "</div>"), r(b.controls, "pip") && P.pip && e.push('<button type="button" data-plyr="pip">', '<svg><use xlink:href="' + n + '-pip" /></svg>', '<span class="plyr__sr-only">PIP</span>', "</button>"), r(b.controls, "airplay") && P.airplay && e.push('<button type="button" data-plyr="airplay">', '<svg><use xlink:href="' + n + '-airplay" /></svg>', '<span class="plyr__sr-only">AirPlay</span>', "</button>"), !r(b.controls, "fullscreen") || St.browser.isIos || St.browser.isOldSafari || e.push('<button type="button" data-plyr="fullscreen">', '<svg class="icon--exit-fullscreen"><use xlink:href="' + n + '-exit-fullscreen" /></svg>', '<svg><use xlink:href="' + n + '-enter-fullscreen" /></svg>', '<span class="plyr__sr-only">' + b.i18n.toggleFullscreen + "</span>", "</button>"), e.push("</div>"), e.join("") 305 } 306 307 function ne() { 308 if (St.supported.full && ("audio" !== St.type || b.fullscreen.allowAudio) && b.fullscreen.enabled) { 309 var e = P.fullscreen; 310 e || b.fullscreen.fallback && !fe() ? (Ct((e ? "Native" : "Fallback") + " fullscreen enabled"), p(St.container, b.classes.fullscreen.enabled, !0)) : Ct("Fullscreen not supported and fallback disabled"), St.buttons && St.buttons.fullscreen && _(St.buttons.fullscreen, !1), be() 311 } 312 } 313 314 function ae(e) { 315 var t = { 316 en: b.i18n.english, 317 de: b.i18n.german, 318 es: b.i18n.spanish, 319 fr: b.i18n.french, 320 it: b.i18n.italian, 321 dut: b.i18n.dutch, 322 pl: b.i18n.polish, 323 pt: b.i18n.portuguese, 324 ru: b.i18n.russian, 325 vi: b.i18n.vietnamese, 326 da: b.i18n.danish, 327 zh: b.i18n.chinese, 328 sv: b.i18n.swedish, 329 th: b.i18n.thai 330 }; 331 if (e.label) return e.label; 332 if (e.language) { 333 var n = e.language.toLowerCase(); 334 return t.hasOwnProperty(n) ? t[n] : e.language 335 } 336 return e.id 337 } 338 339 function ie() { 340 "video" === St.type && J() 341 } 342 343 function re() { 344 return !(!St.storage || !St.storage.captions) && (St.captions.fontIndex = St.storage.captions.fontIndex, St.captions.fontColorIndex = St.storage.captions.fontColorIndex, St.captions.fontSizeIndex = St.storage.captions.fontSizeIndex, St.captions.fontOpacityIndex = St.storage.captions.fontOpacityIndex, St.captions.fontStyleIndex = St.storage.captions.fontStyleIndex, St.captions.backgroundColorIndex = St.storage.captions.backgroundColorIndex, St.captions.backgroundOpacityIndex = St.storage.captions.backgroundOpacityIndex, !0) 345 } 346 347 function se() { 348 St.storage && St.storage.captions && St.storage.captions.selectedIndex && St.storage.captions.selectedIndex > 0 && St.storage.captions.selectedIndex < St.media.textTracks.length && ("subtitles" === St.media.textTracks[St.storage.captions.selectedIndex].kind || "captions" === St.media.textTracks[St.storage.captions.selectedIndex].kind) && (St.captionsEnabled = !0, Ke(St.storage.captions.selectedIndex)) 349 } 350 351 function oe() { 352 we({ 353 captions: { 354 selectedIndex: b.captions.selectedIndex, 355 fontIndex: St.captions.fontIndex, 356 fontColorIndex: St.captions.fontColorIndex, 357 fo
357ntSizeIndex: St.captions.fontSizeIndex, 358 fontOpacityIndex: St.captions.fontOpacityIndex, 359 fontStyleIndex: St.captions.fontStyleIndex, 360 backgroundColorIndex: St.captions.backgroundColorIndex, 361 backgroundOpacityIndex: St.captions.backgroundOpacityIndex 362 } 363 }) 364 } 365 366 function le() { 367 if ("video" === St.type) { 368 var e = TextTrack.prototype.addCue; 369 St.media.textTracks.addEventListener("addtrack", function (t) { 370 var n = t.track, a = "subtitles" === n.kind || "captions" === n.kind; 371 a && (K(), se()), n.addCue = function (t) { 372 if (a && n.cues && n.cues.length > 0 && t.startTime.toFixed(3) === n.cues[n.cues.length - 1].startTime.toFixed(3) && t.startTime + .1 < t.endTime && (t.startTime += .1), a && $() && ce(t), St.browser.isIE || St.browser.isEdge) if (n.cues && n.cues.length > 0) { 373 for (var i = [], r = 0; r < n.cues.length; r++) t.startTime < n.cues[r].startTime && i.push(n.cues[r]); 374 for (var r = 0; r < i.length; r++) n.removeCue(i[r]); 375 e.apply(this, arguments); 376 for (var r = 0; r < i.length; r++) e.apply(this, [i[r]]) 377 } else e.apply(this, arguments); else e.apply(this, arguments) 378 }, a && $() && St.adaptivePlayer && "NativePlayer" === St.adaptivePlayer.className && n.addEventListener("cuechange", ue) 379 }), St.media.textTracks.addEventListener("change", function () { 380 for (var e = 0; e < St.media.textTracks.length; e++) { 381 var t = St.media.textTracks[e]; 382 if (("subtitles" === t.kind || "captions" === t.kind) && "showing" === t.mode) return void X(t.label) 383 } 384 }) 385 } 386 } 387 388 function ue() { 389 if ($()) { 390 var e = this; 391 if (e.cues && e.cues.length > 0) for (var t = D(), n = 0; n < e.cues.length; n++) { 392 var a = e.cues[n]; 393 pe(a, t) 394 } 395 } 396 } 397 398 function de() { 399 if ($() && !(b.captions.selectedIndex < 0 || b.captions.selectedIndex >= St.media.textTracks.length)) { 400 var e = St.media.textTracks[b.captions.selectedIndex], t = D(); 401 if (e.activeCues && e.activeCues.length > 0) for (var n = 0; n < e.activeCues.length; n++) { 402 var a = e.activeCues[n]; 403 e.addCue(a) 404 } 405 if (e.cues && e.cues.length > 0) for (var n = 0; n < e.cues.length; n++) { 406 var a = e.cues[n]; 407 pe(a, t) 408 } 409 } 410 } 411 412 function ce(e) { 413 if ($()) { 414 pe(e, D()) 415 } 416 } 417 418 function pe(e, t) { 419 e.originalText ? e.text = "<c." + t + ">" + e.originalText + "</c>" : (e.originalText = e.text, e.text = "<c." + t + ">" + e.text + "</c>") 420 } 421 422 function ye(e) { 423 return St.container.querySelectorAll(e) 424 } 425 426 function me(e) { 427 return ye(e)[0] 428 } 429 430 function fe() { 431 try { 432 return e.self !== e.top 433 } catch (e) { 434 return !0 435 } 436 } 437 438 function be() { 439 function e(e) { 440 9 === e.which && St.isFullscreen && (e.target !== a || e.shiftKey ? e.target === n && e.shiftKey && (e.preventDefault(), a.focus()) : (e.preventDefault(), n.focus())) 441 } 442 443 var t = ye("input:not([disabled]), button:not([disabled])"), n = t[0], a = t[t.length - 1]; 444 g(St.container, "keydown", e) 445 } 446 447 function ge(e, t) { 448 if (F.string(t)) c(e, St.media, {src: t}); else if (t.constructor === Array) for (var n = t.length - 1; n >= 0; n--) c(e, St.media, t[n]) 449 } 450 451 function ve() { 452 if (b.loadSprite) { 453 var e = N(); 454 e.absolute ? (Ct("AJAX loading absolute SVG sprite" + (St.browser.isIE ? " (due to IE)" : "")), w(e.url, "sprite-plyr")) : Ct("Sprite will be used as external resource directly") 455 } 456 var n = b.html; 457 Ct("Injecting custom controls"), n || (n = te()), n = s(n, "{seektime}", b.seekTime), n = s(n, "{speed}", b.currentSpeed.toFixed(1).toString().replace(".0", "") + "×"), n = s(n, "{lang}", "English"), St.id = Math.floor(1e4 * Math.random()), n = s(n, "{id}", St.id); 458 var a; 459 if (F.string(b.selectors.controls.container) && (a = t.querySelector(b.selectors.controls.container)), F.htmlElement(a) || (a = St.container), a.insertAdjacentHTML("beforeend", n), b.tooltips.controls) for (var i = ye([b.selectors.controls.wrapper, " ", b.selectors.labels, " .", b.classes.hidden].join("")), r = i.length - 1; r >= 0; r--) { 460 var o = i[r]; 461 p(o, b.classes.hidden, !1), p(o, b.classes.tooltip, !0) 462 } 463 } 464 465 function he() {
466 try { 467 return St.controls = me(b.selectors.controls.wrapper), St.buttons = { 468 seek: me(b.selectors.buttons.seek), 469 play: ye(b.selectors.buttons.play), 470 pause: me(b.selectors.buttons.pause), 471 restart: me(b.selectors.buttons.restart), 472 rewind: me(b.selectors.buttons.rewind), 473 forward: me(b.selectors.buttons.forward), 474 fullscreen: me(b.selectors.buttons.fullscreen), 475 settings: me(b.selectors.buttons.settings), 476 pip: me(b.selectors.buttons.pip) 477 }, St.buttons.mute = me(b.selectors.buttons.mute), St.buttons.captions = me(b.selectors.buttons.captions), St.progress = {container: me(b.selectors.progress.container)}, St.progress.buffer = function () { 478 var e = me(b.selectors.progress.buffer); 479 return {bar: e, text: F.htmlElement(e) && e.getElementsByTagName("span")[0]} 480 }(), St.progress.played = me(b.selectors.progress.played), St.progress.seek = { 481 container: me(b.selectors.progress.seek.container), 482 tooltip: me(b.selectors.progress.seek.tooltip), 483 thumbnail: me(b.selectors.progress.seek.thumbnail) 484 }, St.volume = { 485 input: me(b.selectors.volume.input), 486 display: me(b.selectors.volume.display) 487 }, St.duration = me(b.selectors.duration), St.currentTime = me(b.selectors.currentTime), St.seekTime = ye(b.selectors.seekTime), St.adDuration = me(b.selectors.adDuration), St.settings = function () { 488 var e = me("#plyr-settings-" + St.id + "-captionStyle-tab"), 489 t = me("#plyr-settings-" + St.id + "-captions-toggle"), n = me("#plyr-settings-" + St.id + "-audio-toggle"), 490 a = me("#plyr-settings-" + St.id + "-font-toggle"), i = me("#plyr-settings-" + St.id + "-fontColor-toggle"), 491 r = me("#plyr-settings-" + St.id + "-fontSize-toggle"), 492 s = me("#plyr-settings-" + St.id + "-fontOpacity-toggle"), 493 o = me("#plyr-settings-" + St.id + "-fontStyle-toggle"), 494 l = me("#plyr-settings-" + St.id + "-backgroundColor-toggle"), 495 u = me("#plyr-settings-" + St.id + "-backgroundOpacity-toggle"), 496 d = me("#plyr-settings-" + St.id + "-windowColor-toggle"), 497 c = me("#plyr-settings-" + St.id + "-windowOpacity-toggle"); 498 return { 499 captionTab: F.htmlElement(e) && e, 500 caption: F.htmlElement(t) && t.getElementsByTagName("span")[0], 501 audio: F.htmlElement(n) && n.getElementsByTagName("span")[0], 502 font: F.htmlElement(a) && a.getElementsByTagName("span")[0], 503 fontColor: F.htmlElement(i) && i.getElementsByTagName("span")[0], 504 fontSize: F.htmlElement(r) && r.getElementsByTagName("span")[0], 505 fontOpacity: F.htmlElement(s) && s.getElementsByTagName("span")[0], 506 fontStyle: F.htmlElement(o) && o.getElementsByTagName("span")[0], 507 backgroundColor: F.htmlElement(l) && l.getElementsByTagName("span")[0], 508 backgroundOpacity: F.htmlElement(u) && u.getElementsByTagName("span")[0], 509 windowColor: F.htmlElement(d) && d.getElementsByTagName("span")[0], 510 windowOpacity: F.htmlElement(c) && c.getElementsByTagName("span")[0] 511 } 512 }(), !0 513 } catch (e) { 514 return Et("It looks like there is a problem with your controls HTML", e), ke(!0), !1 515 } 516 } 517 518 function _e() { 519 p(St.container, b.selectors.container.replace(".", ""), St.supported.full) 520 } 521 522 function ke(e) { 523 e && r(b.types.html5, St.type) ? St.media.setAttribute("controls", "") : St.media.removeAttribute("controls") 524 } 525 526 function xe(e) { 527 var t = b.i18n.play; 528 if (F.string(b.title) && b.title.length && (t += ", " + b.title, St.container.setAttribute("aria-label", b.title)), St.supported.full && St.buttons.play) for (var n = St.buttons.play.length - 1; n >= 0; n--) St.buttons.play[n].setAttribute("aria-label", t); 529 F.htmlElement(e) && e.setAttribute("title", b.i18n.frameTitle.replace("{title}", b.title)) 530 } 531 532 function Se() { 533 var t = null; 534 St.storage = {}, P.storage && b.storage.enabled && (e.localStorage.removeItem("plyr-volume"), (t = e.localStorage.getItem(b.storage.key)) && (/^\d+(\.\d+)?$/.test(t) ? we({volume: parseFloat(t)}) : St.storage = x(St.storage, JSON.parse(t)))) 535 } 536 537 function we(t) { 538 x(St.storage, t), P.storage && b.storage.enabled && e.localStorage.setItem(b.storage.key, JSON.stringify(St.storage)) 539 } 540 541 function Te() { 542 if (!St.media) return void Et("No media element found!"); 543 if (St.supported.full && (p(St.container, b.classes.type.replace("{0}", St.type), !0), r(b.types.embed, St.type) && p(St.container, b.classes.type.replace("{0}", "video"), !0), p(St.container, b.classes.pip.enabled, P.pip), p(St.container, b.classes.stopped, b.autoplay), p(St.container, b.classes.isIos, St.browser.isIos), p(St.container, b.classes.isTouch, St.browser.isTouch), "video" === St.type)) { 544 var e = t.createElement("div"); 545 e.setAttribute("class", b.classes.videoWrapper), o(St.media, e), St.videoContainer = e 546 } 547 r(b.types.embed, St.type) && Ce() 548 } 549 550 function Ce() { 551 for (var n = t.createElement("div"), a = St.embedId, r = St.type + "-" + Math.floor(1e4 * Math.random()), s = ye('[id^="' + St.type + '-"]'), o = s.length - 1; o >= 0; o--) l(s[o]); 552 if (p(St.media, b.classes.videoWrapper, !0), p(St.media, b.classes.embedWrapper, !0), "youtube" === St.type) St.media.appendChild(n), n.setAttribute("id", r), F.object(e.YT) ? Ie(a, n) : (i(b.urls.youtube.api), e.onYouTubeReadyCallbacks = e.onYouTubeReadyCallbacks || [], e.onYouTubeReadyCallbacks.push(function () { 553 Ie(a, n) 554 }), e.onYouTubeIframeAPIReady = function () { 555 e.onYouTubeReadyCallbacks.forEach(function (e) { 556 e() 557 }) 558 }); else if ("vimeo" === St.type) if (St.supported.full ? St.media.appendChild(n) : n = St.media, n.setAttribute("id", r), F.object(e.Vimeo)) Ae(a, n); else { 559 i(b.urls.vimeo.api); 560 var u = e.setInterval(function () { 561 F.object(e.Vimeo) && (e.clearInterval(u), Ae(a, n)) 562 }, 50) 563 } else if ("soundcloud" === St.type) { 564 var c = t.createElement("iframe"); 565 c.loaded = !1, g(c, "load", function () { 566 c.loaded = !0 567 }), d(c, { 568 src: "https://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/" + a, 569 id: r 570 }), n.appendChild(c), St.media.appendChild(n), e.SC || i(b.urls.soundcloud.api); 571 var y = e.setInterval(function () { 572 e.SC && c.loaded && (e.clearInterval(y), Oe.call(c)) 573 }, 50) 574 } 575 } 576 577 function Ee() { 578 St.supported.full && (_t(), kt()), xe(me("iframe")) 579 } 580 581 function Ie(t, n) { 582 St.embed = new e.YT.Player(n.id, { 583 videoId: t, 584 playerVars: { 585 autoplay: b.autoplay ? 1 : 0,
586 controls: St.supported.full ? 0 : 1, 587 rel: 0, 588 showinfo: 0, 589 iv_load_policy: 3, 590 cc_load_policy: b.captions.defaultActive ? 1 : 0, 591 cc_lang_pref: "en", 592 wmode: "transparent", 593 modestbranding: 1, 594 disablekb: 1, 595 origin: "*", 596 }, 597 events: { 598 onError: function (e) { 599 S(St.container, "error", !0, {code: e.data, embed: e.target}) 600 }, onReady: function (t) { 601 var n = t.target; 602 St.media.play = function () { 603 n.playVideo(), St.media.paused = !1 604 }, St.media.pause = function () { 605 n.pauseVideo(), St.media.paused = !0 606 }, St.media.stop = function () { 607 n.stopVideo(), St.media.paused = !0 608 }, St.media.duration = n.getDuration(), St.media.paused = !0, St.media.currentTime = 0, St.media.muted = n.isMuted(), b.title = n.getVideoData().title, St.supported.full && St.media.querySelector("iframe").setAttribute("tabindex", "-1"), Ee(), S(St.media, "timeupdate"), S(St.media, "durationchange"), e.clearInterval(wt.buffering), wt.buffering = e.setInterval(function () { 609 St.media.buffered = n.getVideoLoadedFraction(), (null === St.media.lastBuffered || St.media.lastBuffered < St.media.buffered) && S(St.media, "progress"), St.media.lastBuffered = St.media.buffered, 1 === St.media.buffered && (e.clearInterval(wt.buffering), S(St.media, "canplaythrough")) 610 }, 200) 611 }, onStateChange: function (t) { 612 var n = t.target; 613 switch (e.clearInterval(wt.playing), t.data) { 614 case 0: 615 St.media.paused = !0, S(St.media, "ended"); 616 break; 617 case 1: 618 St.media.paused = !1, St.media.seeking = !1, S(St.media, "play"), S(St.media, "playing"), wt.playing = e.setInterval(function () { 619 St.media.currentTime = n.getCurrentTime(), S(St.media, "timeupdate") 620 }, 100), St.media.duration !== n.getDuration() && (St.media.duration = n.getDuration(), S(St.media, "durationchange")); 621 break; 622 case 2: 623 St.media.paused = !0, S(St.media, "pause") 624 } 625 S(St.container, "statechange", !1, {code: t.data}) 626 } 627 } 628 }) 629 } 630 631 function Ae(t, n) { 632 St.embed = new e.Vimeo.Player(n, { 633 id: parseInt(t), 634 loop: b.loop, 635 autoplay: b.autoplay, 636 byline: !1, 637 portrait: !1, 638 title: !1 639 }), St.media.play = function () { 640 St.embed.play(), St.media.paused = !1 641 }, St.media.pause = function () { 642 St.embed.pause(), St.media.paused = !0 643 }, St.media.stop = function () { 644 St.embed.stop(), St.media.paused = !0 645 }, St.media.paused = !0, St.media.currentTime = 0, Ee(), St.embed.getCurrentTime().then(function (e) { 646 St.media.currentTime = e, S(St.media, "timeupdate") 647 }), St.embed.getDuration().then(function (e) { 648 St.media.duration = e, S(St.media, "durationchange") 649 }), St.embed.on("loaded", function () { 650 F.htmlElement(St.embed.element) && St.supported.full && St.embed.element.setAttribute("tabindex", "-1") 651 }), St.embed.on("play", function () { 652 St.media.paused = !1, S(St.media, "play"), S(St.media, "playing") 653 }), St.embed.on("pause", function () { 654 St.media.paused = !0, S(St.media, "pause") 655 }), St.embed.on("timeupdate", function (e) { 656 St.media.seeking = !1, St.media.currentTime = e.seconds, S(St.media, "timeupdate") 657 }), St.embed.on("progress", function (e) { 658 St.media.buffered = e.percent, S(St.media, "progress"), 1 === parseInt(e.percent) && S(St.media, "canplaythrough") 659 }), St.embed.on("ended", function () { 660 St.media.paused = !0, S(St.media, "ended") 661 }) 662 } 663 664 function Oe() { 665 St.embed = e.SC.Widget(this), St.embed.bind(e.SC.Widget.Events.READY, function () { 666 St.media.play = function () { 667 St.embed.play(), St.media.paused = !1 668 }, St.media.pause = function () { 669 St.embed.pause(), St.media.paused = !0 670 }, St.media.stop = function () { 671 St.embed.seekTo(0), St.embed.pause(), St.media.paused = !0 672 }, St.media.paused = !0, St.media.currentTime = 0, St.embed.getDuration(function (e) { 673 St.media.duration = e / 1e3, Ee() 674 }), St.embed.getPosition(function (e) { 675 St.media.currentTime = e, S(St.media, "timeupdate") 676 }), St.embed.bind(e.SC.Widget.Events.PLAY, function () { 677 St.media.paused = !1, S(St.media, "play"), S(St.media, "playing") 678 }), St.embed.bind(e.SC.Widget.Events.PAUSE, function () { 679 St.media.paused = !0, S(St.media, "pause") 680 }), St.embed.bind(e.SC.Widget.Events.PLAY_PROGRESS, function (e) { 681 St.media.seeking = !1, St.media.currentTime = e.currentPosition / 1e3, S(St.media, "timeupdate") 682 }), St.embed.bind(e.SC.Widget.Events.LOAD_PROGRESS, function (e) { 683 St.media.buffered = e.loadProgress, S(St.media, "progress"), 1 === parseInt(e.loadProgress) && S(St.media, "canplaythrough") 684 }), St.embed.bind(e.SC.Widget.Events.FINISH, function () { 685 St.media.paused = !0, S(St.media, "ended") 686 }) 687 }) 688 } 689 690 function Fe() { 691 "play" in St.media && St.media.play() 692 } 693 694 function Pe() { 695 "LIVE" === St.adaptivePlayer.playlistType || "pause" in St.media && St.media.pause() 696 } 697 698 function Ne(e) { 699 return F.boolean(e) || (e = St.media.paused), e && St.media.ended ? (Le(), Fe()
699) : e ? Fe() : Pe(), e 700 } 701 702 function Me(e) { 703 F.number(e) || (e = b.seekTime), Le(St.media.currentTime - e) 704 } 705 706 function De(e) { 707 F.number(e) || (e = b.seekTime), Le(St.media.currentTime + e) 708 } 709 710 function Be(e) { 711 if (!F.array(b.speeds)) return void Et("Invalid speeds format"); 712 if (!F.number(e)) { 713 var t = b.speeds.indexOf(b.currentSpeed); 714 if (-1 !== t) { 715 var n = t + 1; 716 n >= b.speeds.length && (n = 0), e = b.speeds[n] 717 } else e = b.defaultSpeed 718 } 719 b.currentSpeed = e, St.media.playbackRate = e, we({speed: e}) 720 } 721 722 function Le(e) { 723 if (St.adaptivePlayer && St.adaptivePlayer.canSeek()) { 724 var t = 0, n = St.media.paused, a = ze(); 725 F.number(e) ? t = e : F.event(e) && r(["input", "change"], e.type) && (t = e.target.value / e.target.max * a), t < 0 ? t = 0 : t > a && (t = a), nt(t); 726 try { 727 St.media.currentTime = t.toFixed(4) 728 } catch (e) { 729 } 730 if (r(b.types.embed, St.type)) { 731 switch (St.type) { 732 case"youtube": 733 St.embed.seekTo(t); 734 break; 735 case"vimeo": 736 St.embed.setCurrentTime(t.toFixed(0)); 737 break; 738 case"soundcloud": 739 St.embed.seekTo(1e3 * t) 740 } 741 n && Pe(), S(St.media, "timeupdate"), St.media.seeking = !0, S(St.media, "seeking") 742 } 743 Ct("Seeking to " + St.media.currentTime + " seconds") 744 } 745 } 746 747 function ze() { 748 var e = b.duration; 749 e !== Number.POSITIVE_INFINITY && e !== Number.NEGATIVE_INFINITY && (e = parseInt(e)); 750 var t = 0; 751 return null === St.media.duration || isNaN(St.media.duration) || (t = St.media.duration), isNaN(e) ? t : e 752 } 753 754 function Ve() { 755 p(St.container, b.classes.playing, !St.media.paused || St.media.seeking), p(St.container, b.classes.stopped, St.media.paused && !St.media.seeking), lt(St.media.paused), ot() 756 } 757 758 function je() { 759 A = {x: e.pageXOffset || 0, y: e.pageYOffset || 0} 760 } 761 762 function qe() { 763 e.scrollTo(A.x, A.y) 764 } 765 766 function Re(e) { 767 var n = P.fullscreen; 768 if (n) { 769 if (!e || e.type !== I.eventType) return I.isFullScreen(St.container) ? I.cancelFullScreen() : (je(), I.requestFullScreen(St.container)), void (St.isFullscreen = I.isFullScreen(St.container)); 770 St.isFullscreen = I.isFullScreen(St.container) 771 } else St.isFullscreen = !St.isFullscreen, t.body.style.overflow = St.isFullscreen ? "hidden" : ""; 772 p(St.container, b.classes.fullscreen.active, St.isFullscreen), be(St.isFullscreen), St.buttons && St.buttons.fullscreen && _(St.buttons.fullscreen, St.isFullscreen), S(St.container, St.isFullscreen ? "enterfullscreen" : "exitfullscreen", !0), !St.isFullscreen && n && qe() 773 } 774 775 function We(e) { 776 if (F.boolean(e) || (e = !St.media.muted), _(St.buttons.mute, e), St.media.muted = e, 0 === St.media.volume && Ye(b.volume), r(b.types.embed, St.type)) { 777 switch (St.type) { 778 case"youtube": 779 St.embed[St.media.muted ? "mute" : "unMute"](); 780 break; 781 case"vimeo": 782 case"soundcloud": 783 St.embed.setVolume(St.media.muted ? 0 : parseFloat(b.volume / b.volumeMax)) 784 } 785 S(St.media, "volumechange") 786 } 787 } 788 789 function Ye(e) { 790 var t = b.volumeMax, n = b.volumeMin; 791 if (F.undefined(e) && (e = St.storage.volume), (null === e || isNaN(e)) && (e = b.volume), e > t && (e = t), e < n && (e = n), St.media.volume = parseFloat(e / t), St.volume.display && (St.volume.display.value = e), r(b.types.embed, St.type)) { 792 switch (St.type) { 793 case"youtube": 794 St.embed.setVolume(100 * St.media.volume); 795 break; 796 case"vimeo": 797 case"soundcloud": 798 St.embed.setVolume(St.media.volume) 799 } 800 S(St.media, "volumechange") 801 } 802 0 === e ? St.media.muted = !0 : St.media.muted && e > 0 && We() 803 } 804 805 function He(e) { 806 var t = St.media.muted ? 0 : St.media.volume * b.volumeMax; 807 F.number(e) || (e = b.volumeStep), Ye(t + e) 808 } 809 810 function Ue(e) { 811 var t = St.media.muted ? 0 : St.media.volume * b.volumeMax; 812 F.number(e) || (e = b.volumeStep), Ye(t - e) 813 } 814 815 function Ge() { 816 var e = St.media.muted ? 0 : St.media.volume * b.volumeMax; 817 St.supported.full && (St.volume.input && (St.volume.input.value = e), St.volume.display && (St.volume.display.value = e)), we({volume: e}), p(St.container, b.classes.muted, 0 === e), St.supported.full && St.buttons.mute && _(St.buttons.mute, 0 === e) 818 } 819 820 function Xe(e) { 821 St.supported.full && St.buttons.captions && (F.boolean(e) || (e = -1 === St.container.className.indexOf(b.classes.captions.active)), St.captionsEnabled = e, _(St.buttons.captions, St.captionsEnabled), p(St.container, b.classes.captions.active, St.captionsEnabled), S(St.container, St.captionsEnabled ? "captionsenabled" : "captionsdisabled", !0), we({captionsEnabled: St.captionsEnabled})) 822 } 823 824 function Ke(e) { 825 b.captions.selectedIndex = e; 826 for (var t = St.media.textTracks, n = b.i18n.none, a = 0; a < t.length; a++) "subtitles" !== t[a].kind && "captions" !== t[a].kind || (a == e ? (t[a].mode = "showing", n = t[a].label) : t[a].mode = "disabled"); 827 (St.browser.isIE || St.browser.isEdge) && St.adaptivePlayer.onTextTrackChanged({ 828 currentTarget: t, 829 target: t, 830 type: "change" 831 }), X(n) 832 } 833 834 function Je(e) { 835 var t = "waiting" === e.type; 836 clearTimeout(wt.loading), wt.loading = setTimeout(function () { 837 p(St.container, b.classes.loading, t), lt(t), ot() 838 }, t ? 250 : 0) 839 } 840 841 function $e(e) { 842 if (St.supported.full) { 843 var t = St.progress.played, n = 0, a = ze(); 844 if (e) switch (e.type) { 845 case"timeupdate": 846 case"seeking": 847 if (St.controls.pressed) return; 848 n = k(St.media.currentTime, a), "timeupdate" === e.type && St.buttons.seek && (St.buttons.seek.value = n); 849 break; 850 case"playing": 851 case"progress": 852 t = St.progress.buffer, n = function () { 853 var e = St.media.buffered; 854 if (e && e.length) { 855 for (var t = St.media.currentTime, n = e.end(0), i = 0; i < e.length; i++) { 856 var r = e.start(i), s = e.end(i); 857 if (t >
857= r && t <= s) for (n = s, i++; i < e.length; i++) { 858 var o = s; 859 r = e.start(i), s = e.end(i), r - o <= .5 && (n = s) 860 } 861 } 862 return k(n, a) 863 } 864 return F.number(e) ? 100 * e : 0 865 }() 866 } 867 Qe(t, n) 868 } 869 } 870 871 function Qe(e, t) { 872 if (St.supported.full) { 873 if (F.undefined(t) && (t = 0), F.undefined(e)) { 874 if (!St.progress || !St.progress.buffer) return; 875 e = St.progress.buffer 876 } 877 F.htmlElement(e) ? e.value = t : e && (e.bar && (e.bar.value = t), e.text && (e.text.innerHTML = t)) 878 } 879 } 880 881 function Ze(e, t) { 882 if (t) { 883 isNaN(e) && (e = 0), St.secs = parseInt(e % 60), St.mins = parseInt(e / 60 % 60), St.hours = parseInt(e / 60 / 60 % 60); 884 var n = parseInt(ze() / 60 / 60 % 60) > 0; 885 St.secs = ("0" + St.secs).slice(-2), St.mins = ("0" + St.mins).slice(-2), t.innerHTML = (n ? St.hours + ":" : "") + St.mins + ":" + St.secs 886 } 887 } 888 889 function et() { 890 if (St.supported.full) { 891 var e = ze() || 0; 892 !St.duration && b.displayDuration && St.media.paused && Ze(e, St.currentTime), St.duration && Ze(e, St.duration), at() 893 } 894 } 895 896 function tt(e) { 897 Ze(St.media.currentTime, St.currentTime), St.inAd && gt(), e && "timeupdate" === e.type && St.media.seeking || $e(e) 898 } 899 900 function nt(e) { 901 F.number(e) || (e = 0); 902 var t = ze(), n = k(e, t); 903 St.progress && St.progress.played && (St.progress.played.value = n), St.buttons && St.buttons.seek && (St.buttons.seek.value = n) 904 } 905 906 function at(e) { 907 var t = Date.now(), n = ze(); 908 if (b.tooltips.seek && St.progress.container && 0 !== n) { 909 var a = (St.progress.container.getBoundingClientRect(), 0), i = b.classes.tooltip + "--visible"; 910 if (!St.adaptivePlayer || !St.adaptivePlayer.canSeek()) return void p(St.progress.seek.container, i, !1); 911 if (e) a = e.offsetX / e.target.clientWidth * 100; else { 912 if (!y(St.progress.seek.container, i)) return; 913 a = St.progress.seek.container.style.left.replace("%", "") 914 } 915 a < 0 ? a = 0 : a > 100 && (a = 100); 916 var s = parseInt(n / 100 * a); 917 St.time !== s && ((!St.lastUpdatedThumbnail || t - St.lastUpdatedThumbnail > 250) && (St.lastUpdatedThumbnail = t, b.showThumbnails && S(St.media, "thumbnail", !0, { 918 time: s, 919 img: St.progress.seek.thumbnail 920 })), Ze(s, St.progress.seek.tooltip)), St.time = s, r(b.controls, "progress") && (St.progress.seek.container.style.left = a + "%"), e && r(["mouseenter", "mouseleave"], e.type) && p(St.progress.seek.container, i, "mouseenter" === e.type) 921 } 922 } 923 924 function it(e) { 925 F.undefined(e) && (e = St.storage.speed || b.defaultSpeed), Be(e) 926 } 927 928 function rt(e) { 929 if (e.isAd && e.adData && e.adData.click && e.adData.click.length > 0 && e.adData.click[0]) { 930 var n = St.adDuration.parentElement, a = t.createElement("span"); 931 a.setAttribute("class", "plyr__time--ad-duration"), a.innerText = " - ", n.appendChild(a); 932 var i = t.createElement("a"); 933 i.setAttribute("class", "plyr__time--ad-duration"), i.setAttribute("target", "_blank"), i.setAttribute("href", e.adData.click[0]), i.text = b.i18n.adClick, n.appendChild(i) 934 } 935 } 936 937 function st(e) { 938 if (e.isAd && e.adData && e.adData.click && e.adData.click.length > 0 && e.adData.click[0]) { 939 var t = St.adDuration.parentElement; 940 "a" === t.lastChild.tagName.toLowerCase() && (t.removeChild(t.lastChild), t.removeChild(t.lastChild)) 941 } 942 } 943 944 function ot() { 945 if (F.boolean(St.inAd) || (St.inAd = !1), p(St.container, b.classes.hideAdOverlay, !St.inAd), St.adaptivePlayer) { 946 var e = St.adaptivePlayer.canSeek(); 947 p(St.buttons.seek, b.classes.hideSeekButton, !e) 948 } 949 } 950 951 function lt(t) { 952 if (b.hideControls && "audio" !== St.type) { 953 var n = 0, a = !1, i = t, s = y(St.container, b.classes.loading); 954 if (F.boolean(t) || (t && t.type ? (a = "enterfullscreen" === t.type, i = r(["mousemove", "touchstart", "mouseenter", "focu
954s"], t.type), r(["mousemove", "touchmove"], t.type) && (n = 2e3), "focus" === t.type && (n = 3e3)) : i = y(St.container, b.classes.hideControls)), e.clearTimeout(wt.hover), i || St.media.paused || s) { 955 if (p(St.container, b.classes.hideControls, !1), St.media.paused || s) return; 956 St.browser.isTouch && (n = 3e3) 957 } 958 i && St.media.paused || (wt.hover = e.setTimeout(function () { 959 (!St.controls.pressed && !St.controls.hover || a) && p(St.container, b.classes.hideControls, !0) 960 }, n)) 961 } 962 } 963 964 function ut(e) { 965 if (!F.undefined(e)) return void dt(e); 966 var t; 967 switch (St.type) { 968 case"youtube": 969 t = St.embed.getVideoUrl(); 970 break; 971 case"vimeo": 972 St.embed.getVideoUrl.then(function (e) { 973 t = e 974 }); 975 break; 976 case"soundcloud": 977 St.embed.getCurrentSound(function (e) { 978 t = e.permalink_url 979 }); 980 break; 981 default: 982 t = St.media.currentSrc 983 } 984 return t || "" 985 } 986 987 function dt(e) { 988 function n() { 989 if (St.embed = null, l(St.media), "video" === St.type && St.videoContainer && l(St.videoContainer), St.container && St.container.removeAttribute("class"), "type" in e && (St.type = e.type, "video" === St.type)) { 990 var n = e.sources[0]; 991 "type" in n && r(b.types.embed, n.type) && (St.type = n.type) 992 } 993 switch (St.supported = T(St.type), St.type) { 994 case"video": 995 St.media = t.createElement("video"); 996 break; 997 case"audio": 998 St.media = t.createElement("audio"); 999 break; 1000 case"youtube": 1001 case"vimeo": 1002 case"soundcloud": 1003 St.media = t.createElement("div"), St.embedId = e.sources[0].src 1004 } 1005 u(St.container, St.media), F.boolean(e.autoplay) && (b.autoplay = e.autoplay), r(b.types.html5, St.type) && (b.crossorigin && St.media.setAttribute("crossorigin", ""), b.autoplay && St.media.setAttribute("autoplay", ""), "poster" in e && St.media.setAttribute("poster", e.poster), b.loop && St.media.setAttribute("loop", "")), p(St.container, b.classes.fullscreen.active, St.isFullscreen), p(St.container, b.classes.captions.active, St.captionsEnabled), _e(), r(b.types.html5, St.type) && ge("source", e.sources), Te(), r(b.types.html5, St.type) && ("tracks" in e && ge("track", e.tracks), St.media.load()), (r(b.types.html5, St.type) || r(b.types.embed, St.type) && !St.supported.full) && (_t(), kt()), b.title = e.title, xe() 1006 } 1007 1008 if (!(F.object(e) && "sources" in e && e.sources.length)) return void Et("Invalid source format"); 1009 p(St.container, b.classes.ready, !1), Pe(), nt(), Qe(), ft(), ht(n, !1) 1010 } 1011 1012 function ct(e) { 1013 "video" === St.type && St.media.setAttribute("poster", e) 1014 } 1015 1016 function pt() { 1017 function n() { 1018 var e = Ne(), t = St.buttons[e ? "play" : "pause"], n = St.buttons[e ? "pause" : "play"]; 1019 if (n = n && n.length > 1 ? n[n.length - 1] : n[0]) { 1020 var a = y(t, b.classes.tabFocus); 1021 setTimeout(function () { 1022 n.focus(), a && (p(t, b.classes.tabFocus, !1), p(n, b.classes.tabFocus, !0)) 1023 }, 100) 1024 } 1025 } 1026 1027 function a() { 1028 var e = t.activeElement; 1029 return e = e && e !== t.body ? t.querySelector(":focus") : null 1030 } 1031 1032 function i(e) { 1033 return e.keyCode ? e.keyCode : e.which 1034 } 1035 1036 function s(e) { 1037 for (var t in St.buttons) { 1038 var n = St.buttons[t]; 1039 if (F.nodeList(n)) for (var a = 0; a < n.length; a++) p(n[a], b.classes.tabFocus, n[a] === e); else p(n, b.classes.tabFocus, n === e) 1040 } 1041 } 1042 1043 function o(e) { 1044 var t = i(e), n = "keydown" === e.type, a = n && t === d; 1045 if (F.number(t)) if (n) { 1046 var s = [48, 49, 50, 51, 52, 53, 54, 56, 57, 32, 75, 38, 40, 77, 39, 37, 70, 67]; 1047 switch (r(s, t) && (e.preventDefault(), e.stopPropagation()), t) { 1048 case 48: 1049 case 49: 1050 case 50: 1051 case 51: 1052 case 52: 1053 case 53: 1054 case 54: 1055 case 55: 1056 case 56: 1057 case 57: 1058 a || function () { 1059 var e = St.media.duration; 1060 F.number(e) && Le(e / 10 * (t - 48)) 1061 }(); 1062 break; 1063 case 32: 1064 case 75: 1065 a || Ne(); 1066 break; 1067 case 38: 1068 He(); 1069 break; 1070 case 40: 1071 Ue(); 1072 break; 1073 case 77: 1074 a || We(); 1075 break; 1076 case 39: 1077 De(); 1078 break; 1079 case 37: 1080 Me(); 1081 break; 1082 case 70: 1083 Re(); 1084 break; 1085 case 67: 1086 a || Xe() 1087 } 1088 !P.fullscreen && St.isFullscreen && 27 === t && Re(), d = t 1089 } else d = null 1090 } 1091 1092 var u = St.browser.isIE ? "change" : "input"; 1093 if (b.keyboardShorcuts.focused) { 1094 var d = null; 1095 b.keyboardShorcuts.global && g(e, "keydown keyup", function (e) { 1096 var t = i(e), n = a(), s = [48, 49, 50, 51, 52, 53, 54, 56, 57, 75, 77, 70, 67]; 1097 1 !== E().length || !r(s, t) || F.htmlElement(n) && m(n, b.selectors.editable) || o(e) 1098 }), g(St.container, "keydown keyup", o) 1099 } 1100 g(e, "keyup", function (e) { 1101 var t = i(e), n = a(); 1102 9 === t && s(n) 1103 }), g(t.body, "click", function () { 1104 p(me("." + b.classes.tabFocus), b.classes.tabFocus, !1) 1105 }); 1106 for (var c in St.buttons) { 1107 var v = St.buttons[c]; 1108 g(v, "blur", function () { 1109 p(v, "tab-focus", !1) 1110 }) 1111 } 1112 f(St.buttons.play, "click", b.listeners.play, n), f(St.buttons.pause, "click", b.listeners.pause, n), f(St.buttons.restart, "click", b.listeners.restart, Le), f(St.buttons.rewind, "click", b.listeners.rewind, Me), f(St.buttons.forward, "click", b.listeners.forward, De), f(St.buttons.speed, "click", b.listeners.speed, Be), f(St.buttons.seek, u, b.listeners.seek, Le), f(St.volume.input, u, b.listeners.volume, function () { 1113 Ye(St.volume.input.value) 1114 }), f(St.buttons.mute, "click", b.listeners.mute, We), f(St.buttons.fullscreen, "click", b.listeners.fullscreen, Re), P.fullscreen && g(t, I.eventType, Re), g(St.buttons.captions, "click", Xe), g(St.buttons.settings, "click", function (n) { 1115 var a, i, r = this, s = n.target; 1116 if (s.tagName && "use" === s.tagName.toLowerCase() && (s = s.parentNode), s.tagName && "svg" === s.tagName.toLowerCase() && (s = s.parentNode), s.constructor && "SVGElementInstance" === s.constructor.name && (s = me("#plyr-settings-toggle-" + St.id)), s.getAttribute && (a = t.getElementById(s.getAttribute("aria-controls")), i = "false" === s.getAttribute("aria-expanded"), F.htmlElement(a))) { 1117 var o, u, d, c = "tabpanel" === a.getAttribute("role"); 1118 if (c) { 1119 var p = r.querySelector('[role="tabpanel"][aria-hidden="false"]'); 1120 d = p.parentNode, [].forEach.call(r.querySelectorAll('[aria-controls="' + p.getAttribute("id") + '"]'), function (e) { 1121 e.setAttribute("aria-expanded", !1) 1122 }), d.style.width = p.scrollWidth + "px", d.style.height = p.scrollHeight + "px", p.setAttribute("aria-hidden", !0), p.setAttribute("tabindex", -1); 1123 var y = a.cloneNode(!0); 1124 y.style.position = "absolute", y.style.opacity = 0, y.setAttribute("aria-hidden", !1), d.appendChild(y), o = y.scrollWidth, u = y.scrollHeight, l(y) 1125 } 1126 a.setAttribute("aria-hidden", !i), s.setAttribute("aria-expanded", i), a.setAttribute("tabindex", 0), c && (d.style.width = o + "px", d.style.height = u + "px", e.setTimeout(function () { 1127 d.style.width = "", d.style.height = "" 1128 }, 300)) 1129 } 1130 }), g(St.buttons.pip, "click", function () { 1131 St.media.webkitSetPresentationMode("picture-in-picture" === St.media.webkitPresentationMode ? "inline" : "picture-in-picture") 1132 }), g(St.progress.container, "mouseenter mouseleave mousemove mouseup", at), b.hideControls && (g(St.container, "mouseenter mouseleave mousemove touchstart touchend touchcancel touchmove enterfullscreen", lt), g(St.controls, "mouseenter mouseleave", function (e) { 1133 St.controls.hover = "mouseenter" === e.type 1134 }), g(St.controls, "mousedown mouseup touchstart touchend touchcancel", function (e) { 1135 St.controls.pressed = r(["mousedown", "touchstart"], e.type) 1136 }), g(St.controls, "focus blur", lt, !0)), g(St.volume.input, "wheel", function (e) { 1137 e.preventDefault(); 1138 var t = e.webkitDirectionInvertedFromDevice, n = b.volumeStep / 5; 1139 (e.deltaY < 0 || e.deltaX > 0) && (t ? Ue(n) : He(n)), (e.deltaY > 0 || e.deltaX < 0) && (t ? He(n) : Ue(n)) 1140 }) 1141 } 1142 1143 function yt() { 1144 if (g(St.media, "timeupdate seeking", tt), g(St.media, "durationchange loadedmetadata", et), g(St.media, "ended", function () { 1145 "video" === St.type && b.showPosterOnEnd && (Le(), St.media.load()) 1146 }), g(St.media, "progress playing", $e), g(St.media, "volumechange", Ge), g(St.media, "play pause ended", Ve), g(St.media, "waiting canplay seeked", Je), b.clickToPlay && "audio" !== St.type) { 1147 var e = me("." + b.classes.videoWrapper); 1148 if (!e) return; 1149 e.style.cursor = "pointer", g(e, "click", mt) 1150 } 1151 b.disableContextMenu && g(St.media, "contextmenu", function (e) { 1152 e.preventDefault() 1153 }), g(St.media, b.events.concat(["keyup", "keydown"]).join(" "), function (e) { 1154 S(St.container, e.type, !0) 1155 }) 1156 } 1157 1158 function mt() { 1159 b.hideControls && St.browser.isTouch && !St.media.paused || (St.media.paused && !St.media.ended ? Fe() : St.media.ended ? (Le(), Fe()
1159) : Pe()) 1160 } 1161 1162 function ft() { 1163 if (r(b.types.html5, St.type)) { 1164 for (var e = St.media.querySelectorAll("source"), t = 0; t < e.length; t++) l(e[t]); 1165 St.media.setAttribute("src", "https://cdn.selz.com/plyr/blank.mp4"), St.media.load(), Ct("Cancelled network requests") 1166 } 1167 } 1168 1169 function bt(e) { 1170 (isNaN(e) || e < 0) && (e = 0); 1171 var t = e % 60 | 0, n = e / 60 % 60 | 0, a = e / 60 / 60 % 60 | 0, i = a < 10 ? "0" + a : "" + a, 1172 r = n < 10 ? "0" + n : "" + n, s = t < 10 ? "0" + t : "" + t; 1173 return a > 0 ? i + ":" + r + ":" + s : r + ":" + s 1174 } 1175 1176 function gt() { 1177 var e = St.media.currentTime, t = e - St.adBreak.startTime; 1178 t < 0 && (t = 0); 1179 var n = St.adBreak.duration - t; 1180 n < 0 && (n = 0), St.adDuration.innerHTML = bt(n) 1181 } 1182 1183 function vt(e) { 1184 e.setBrowser(St.browser.isSafari, St.browser.isIE, St.browser.isChrome, St.browser.isFirefox), St.adaptivePlayer = e; 1185 var n = !1; 1186 e.on(AdaptivePlayer.Event.Ready, function () { 1187 if (!n) { 1188 n = !0; 1189 var t = e.duration; 1190 "LIVE" === e.playlistType && (t = 1 / 0), b.duration = t, Z(), ie() 1191 } 1192 }), e.on(AdaptivePlayer.Event.AudioTrackAdded, function () { 1193 ie() 1194 }), b.showThumbnails && g(St.container, "thumbnail", function (t) { 1195 var n = t.detail.img, a = t.detail.time; 1196 if (n && St.adaptivePlayer.supportsThumbnails) { 1197 var i = e.getThumbnail(a, "small"); 1198 i && (n.src = i.url, n.width = i.width, n.height = i.height) 1199 } 1200 }), b.showAdBreakMarkers && e.on(AdaptivePlayer.Event.LoadedAdBreaks, function (n) { 1201 if (r(b.controls, "progress")) { 1202 for (var a = t.createDocumentFragment(), i = n.adBreaks, s = 0; s < i.length; s++) { 1203 var o = i[s], l = t.createElement("div"), u = o.startTime / e.duration * 100, 1204 d = o.duration / e.duration * 100; 1205 l.setAttribute("style", "left: " + u + "%; width: " + d + "%; background-color: #FFFFFF; top:8px;height:4px;position:absolute;border-radius:4px"), a.appendChild(l) 1206 } 1207 var c = me(b.selectors.progress.container); 1208 c && c.appendChild(a) 1209 } 1210 }), b.disableSeekDuringAdBreak && (e.on(AdaptivePlayer.Event.AdBreakEntered, function (e) { 1211 St.inAd = !0, St.adBreak = e.adBreak, ot(), gt() 1212 }), e.on(AdaptivePlayer.Event.AdBreakExited, function (e) { 1213 St.inAd = !1, St.adBreak = null, ot() 1214 }), e.on(AdaptivePlayer.Event.AssetEntered, function (e) { 1215 var t = e.asset; 1216 t && t.isAd && rt(t) 1217 }), e.on(AdaptivePlayer.Event.AssetExited, function (e) { 1218 var t = e.asset; 1219 t && t.isAd && st(t) 1220 })), e.on(AdaptivePlayer.Event.AudioTrackSwitched, function (t) { 1221 var n = e.audioTrack; 1222 n && U(n.label) 1223 }) 1224 } 1225 1226 function ht(t, n) { 1227 function a() { 1228 F.boolean(n) || (n = !0), F.function(t) && t.call(Tt), n && (St.init = !1, St.container.parentNode.replaceChild(Tt, St.container), S(Tt, "destroyed", !0)) 1229 } 1230 1231 if (!St.init) return null; 1232 switch (St.type) { 1233 case"youtube": 1234 e.clearInterval(wt.buffering), e.clearInterval(wt.playing), St.embed.destroy(), a(); 1235 break; 1236 case"vimeo": 1237 St.embed.unload().then(a), e.setTimeout(a, 200); 1238 break; 1239 case"video": 1240 case"audio": 1241 ke(!0), a() 1242 } 1243 } 1244 1245 function _t() { 1246 if (!St.supported.full) return Et("Basic support only", St.type), l(me(b.selectors.controls.wrapper)), l(me(b.selectors.buttons.play)), void ke(!0); 1247 var e = !ye(b.selectors.controls.wrapper).length; 1248 e && ve(), he() && (e && pt(), yt(), ke(), ne(), le(), Ye(), Ge(), it(), tt(), Ve()) 1249 } 1250 1251 function kt() { 1252 e.setTimeout(function () { 1253 S(St.media, "ready") 1254 }, 0), p(St.media, O.classes.setup, !0), p(St.container, b.classes.ready, !0), St.media.plyr = xt, b.autoplay && Fe() 1255 } 1256 1257 var xt, St = this, wt = {}; 1258 St.media = n; 1259 var Tt = n.cloneNode(!0), Ct = function () { 1260 C("log", arguments) 1261 }, Et = function () { 1262 C("warn", arguments) 1263 }; 1264 return Ct("Config", b), xt = { 1265 getOriginal: function () { 1266 return Tt 1267 }, 1268 getContainer: function () { 1269 return St.container 1270 }, 1271 getEmbed: function () { 1272 return St.embed 1273 }, 1274 getMedia: function () { 1275 return St.media 1276 }, 1277 getType: function () { 1278 return St.type 1279 }, 1280 getDuration: ze, 1281 getCurrentTime: function () { 1282 return St.media.currentTime 1283 }, 1284 getVolume: function () { 1285 return St.media.volume 1286 }, 1287 isMuted: function () { 1288 return St.media.muted 1289 }, 1290 isReady: function () { 1291 return y(St.container, b.classes.ready) 1292 }, 1293 isLoading: function () { 1294 return y(St.container, b.classes.loading) 1295 }, 1296 isPaused: function () { 1297 return St.media.paused 1298 }, 1299 on: function (e, t) { 1300 return g(St.container, e, t), this 1301 }, 1302 play: Fe, 1303 pause: Pe, 1304 stop: function () { 1305 Pe(), Le() 1306 }, 1307 restart: Le, 1308 rewind: Me, 1309 forward: De, 1310 seek: Le, 1311 source: ut, 1312 poster: ct, 1313 setVolume: Ye, 1314 setSpeed: it, 1315 togglePlay: Ne, 1316 toggleMute: We, 1317 toggleCaptions: Xe, 1318 toggleFullscreen: Re, 1319 toggleControls: lt, 1320 setCaptionIndex: Ke, 1321 isFullscreen: function () { 1322 return St.isFullscreen || !1 1323 }, 1324 support: function (e) { 1325 return P.mime(St, e) 1326 }, 1327 destroy: ht, 1328 setAdaptivePlayer: vt 1329 }, function () { 1330 if (St.init) return null; 1331 if (St.browser = a(), St.browser.isTouch && (b.showThumbnails = !1), F.htmlElement(St.media)) { 1332 Se(); 1333 var e = n.tagName.toLowerCase(); 1334 "div" === e ? (St.type = n.getAttribute("data-type"), St.embedId = n.getAttribute("data-video-id"), n.removeAttribute("data-type"), n.removeAttribute("data-video-id")) : (St.type = e, b.crossorigin = null !== n.getAttribute("crossorigin"), b.autoplay = b.autoplay || null !== n.getAttribute("autoplay"), b.loop = b.loop || null !== n.getAttribute("loop")), St.supported = T(St.type), St.supported.basic && (St.container = o(n, t.createElement("div")), St.container.setAttribute("tabindex", 0), _e(), Ct(St.browser.name + " " + St.browser.version), Te(), ee(), (r(b.types.html5, St.type) || r(b.types.embed, St.type) && !St.supported.full) && (_t(), kt(), xe()), St.init = !0) 1335 } 1336 }(), St.init ? xt : null 1337 } 1338 1339 function w(e, n) { 1340 var a = new XMLHttpRequest; 1341 if (!F.string(n) || !F.htmlElement(t.querySelector("#" + n))) { 1342 var i = t.createElement("div"); 1343 i.setAttribute("hidden", ""), F.string(n) && i.setAttribute("id", n), t.body.insertBefore(i, t.body.childNodes[0]), "withCredentials" in a && (a.open("GET", e, !0), a.onload = function () { 1344 i.innerHTML = a.responseText 1345 }, a.send()) 1346 } 1347 } 1348 1349 function T(e) { 1350 var n, i, r = a(), s = r.isIE && r.version <= 9, o = r.isIos, l = r.isSafari && r.version < 10, 1351 u = /iPhone|iPod/i.test(navigator.userAgent), d = !!t.createElement("audio").canPlayType, 1352 c = !!t.createElement("video").canPlayType; 1353 switch (e) { 1354 case"video": 1355 n = c, i = n && !s && !u && !l; 1356 break; 1357 case"audio": 1358 n = d, i = n && !s; 1359 break; 1360 case"vimeo": 1361 case"youtube": 1362 case"soundcloud": 1363 n = !0, i = !s && !o && !l; 1364 break; 1365 default: 1366 n = d && c, i = n && !s 1367 } 1368 return {basic: n, full: i} 1369 } 1370 1371 function C(e, n) { 1372 function a(e, t) { 1373 y(t, O.classes.hook) || i.push({target: e, media: t}) 1374 } 1375 1376 var i = [], r = [], s = [O.selectors.html5, O.selectors.embed].join(","); 1377 if (F.string(e) ? e = t.querySelectorAll(e) : F.htmlElement(e) ? e = [e] : F.nodeList(e) || F.array(e) || F.string(e) || (F.undefined(n) && F.object(e) && (n = e), e = t.querySelectorAll(s)), F.nodeList(e) && (e = Array.prototype.slice.call(e)), !T().basic || !e.length) return !1; 1378 for (var o = 0; o < e.length; o++) { 1379 var l = e[o], u = l.querySelectorAll(s); 1380 if (u.length) for (var d = 0; d < u.length; d++) a(l, u[d]); else m(l, s) && a(l, l) 1381 }
1382 return i.forEach(function (e) { 1383 var t = e.target, a = e.media; 1384 var i = {}; 1385 try { 1386 i = JSON.parse(t.getAttribute("data-plyr")) 1387 } catch (e) { 1388 } 1389 var s = x({}, O, n, i); 1390 if (!s.enabled) return null; 1391 var o = new S(a, s); 1392 if (F.object(o)) { 1393 if (s.debug) { 1394 var l = s.events.concat(["setup", "statechange", "enterfullscreen", "exitfullscreen", "captionsenabled", "captionsdisabled"]), 1395 u = l.indexOf("timeupdate"); 1396 u > -1 && l.splice(u, 1), g(o.getContainer(), l.join(" "), function (e) { 1397 console.log([s.logPrefix, "event:", e.type].join(" "), e.detail.plyr) 1398 }) 1399 } 1400 h(o.getContainer(), "setup", !0, {plyr: o}), r.push(o) 1401 } 1402 }), r 1403 } 1404 1405 function E(e) { 1406 if (F.string(e) ? e = t.querySelector(e) : F.undefined(e) && (e = t.body), F.htmlElement(e)) { 1407 var n = e.querySelectorAll("." + O.classes.setup), a = []; 1408 return Array.prototype.slice.call(n).forEach(function (e) { 1409 F.object(e.plyr) && a.push(e.plyr) 1410 }), a 1411 } 1412 return [] 1413 } 1414 1415 var I, A = {x: 0, y: 0}, O = { 1416 enabled: !0, 1417 debug: !1, 1418 autoplay: !1, 1419 loop: !1, 1420 seekTime: 10, 1421 volume: 10, 1422 volumeMin: 0, 1423 volumeMax: 10, 1424 volumeStep: 1, 1425 defaultSpeed: 1, 1426 currentSpeed: 1, 1427 speeds: [.5, 1, 1.5, 2], 1428 duration: null, 1429 displayDuration: !0, 1430 loadSprite: !0, 1431 iconPrefix: "plyr", 1432 iconUrl: n().src.substring(0, n().src.lastIndexOf("/") + 1) + "plyr.svg", 1433 clickToPlay: !0, 1434 hideControls: !0, 1435 showPosterOnEnd: !1, 1436 showThumbnails: !1, 1437 disableContextMenu: !0, 1438 showAdBreakMarkers: !0, 1439 disableSeekDuringAdBreak: !0, 1440 keyboardShorcuts: {focused: !0, global: !1}, 1441 tooltips: {controls: !0, seek: !0}, 1442 selectors: { 1443 html5: "video, audio", 1444 embed: "[data-type]", 1445 editable: "input, textarea, select, [contenteditable]", 1446 container: ".plyr", 1447 controls: {container: null, wrapper: ".plyr__controls"}, 1448 labels: "[data-plyr]", 1449 buttons: { 1450 seek: '[data-plyr="seek"]', 1451 play: '[data-plyr="play"]', 1452 pause: '[data-plyr="pause"]', 1453 restart: '[data-plyr="restart"]', 1454 rewind: '[data-plyr="rewind"]', 1455 forward: '[data-plyr="fast-forward"]', 1456 mute: '[data-plyr="mute"]', 1457 captions: '[data-plyr="captions"]', 1458 fullscreen: '[data-plyr="fullscreen"]', 1459 settings: '[data-plyr="settings"]', 1460 pip: '[data-plyr="pip"]', 1461 airplay: '[data-plyr="airplay"]' 1462 }, 1463 volume: {input: '[data-plyr="volume"]', display: ".plyr__volume--display"}, 1464 progress: { 1465 container: ".plyr__progress", 1466 buffer: ".plyr__progress--buffer", 1467 played: ".plyr__progress--played", 1468 seek: { 1469 container: ".plyr__tooltip--container", 1470 tooltip: ".plyr__tooltip--time", 1471 thumbnail: ".plyr__tooltip--thumbnail" 1472 } 1473 }, 1474 captions: ".plyr__captions", 1475 currentTime: ".plyr__time--current", 1476 duration: ".plyr__time--duration", 1477 adDuration: ".plyr__time--ad-duration", 1478 settings: { 1479 captions: '[data-plyr="settings-captions"]', 1480 audio: '[data-plyr="settings-audio"]', 1481 font: '[data-plyr="settings-font"]', 1482 fontColor: '[data-plyr="settings-fontColor"]', 1483 fontSize: '[data-plyr="settings-fontSize"]', 1484 fontOpacity: '[data-plyr="settings-fontOpacity"]', 1485 fontStyle: '[data-plyr="settings-fontStyle"]', 1486 backgroundColor: '[data-plyr="settings-backgroundColor"]', 1487 backgroundOpacity: '[data-plyr="settings-backgroundOpacity"]', 1488 windowColor: '[data-plyr="settings-windowColor"]', 1489 windowOpacity: '[data-plyr="settings-windowOpacity"]' 1490 } 1491 }, 1492 classes: { 1493 setup: "plyr--setup", 1494 ready: "plyr--ready", 1495 videoWrapper: "plyr__video-wrapper", 1496 embedWrapper: "plyr__video-embed", 1497 type: "plyr--{0}", 1498 stopped: "plyr--stopped", 1499 playing: "plyr--playing", 1500 muted: "plyr--muted", 1501 loading: "plyr--loading", 1502 hover: "plyr--hover", 1503 tooltip: "plyr__tooltip", 1504 hidden: "plyr__sr-only",
1505 hideControls: "plyr--hide-controls", 1506 hideAdOverlay: "plyr--hide-ad-overlay", 1507 hideSeekButton: "plyr--hide-seek-button", 1508 hideProgress: "plyr__progress--hidden", 1509 isIos: "plyr--is-ios", 1510 isTouch: "plyr--is-touch", 1511 captions: {enabled: "plyr--captions-enabled", active: "plyr--captions-active"}, 1512 fullscreen: {enabled: "plyr--fullscreen-enabled", active: "plyr--fullscreen-active"}, 1513 pip: {enabled: "plyr--pip-enabled", active: "plyr--pip-active"}, 1514 tabFocus: "tab-focus" 1515 }, 1516 captions: {defaultActive: !0, selectedIndex: -1}, 1517 fullscreen: {enabled: !0, fallback: !0, allowAudio: !1}, 1518 storage: {enabled: !0, key: "plyr"}, 1519 controls: ["play-large", "play", "progress", "current-time", "duration", "mute", "volume", "settings", "pip", "fullscreen"], 1520 i18n: { 1521 restart: "Restart", 1522 rewind: "Rewind {seektime} secs", 1523 play: "Play", 1524 pause: "Pause", 1525 forward: "Forward {seektime} secs", 1526 played: "played", 1527 buffered: "buffered", 1528 currentTime: "Current time", 1529 duration: "Duration", 1530 volume: "Volume", 1531 toggleMute: "Toggle Mute", 1532 toggleCaptions: "Toggle Captions", 1533 toggleFullscreen: "Toggle Fullscreen", 1534 frameTitle: "Player for {title}", 1535 captions: "Captions", 1536 settings: "Settings", 1537 speed: "Speed", 1538 quality: "Quality", 1539 adDuration: "Ad Duration", 1540 adClick: "More Info", 1541 audio: "Audio", 1542 captionStyle: "Caption Style", 1543 font: "Font", 1544 fontSize: "Font Size", 1545 fontStyle: "Font Style", 1546 fontColor: "Font Color", 1547 fontOpacity: "Font Opacity", 1548 backgroundColor: "Background Color", 1549 backgroundOpacity: "Background Opacity", 1550 windowColor: "Window Color", 1551 windowOpacity: "Window Opacity", 1552 monoSerif: "Mono serif", 1553 proportionalSerif: "Proportional serif", 1554 monoSansSerif: "Mono sans serif", 1555 proportionalSansSerif: "Proportional sans serif", 1556 casual: "Casual", 1557 cursive: "Cursive", 1558 smallCaps: "Small caps", 1559 white: "White", 1560 black: "Black", 1561 red: "Red", 1562 green: "Green", 1563 blue: "Blue", 1564 yellow: "Yellow", 1565 magenta: "Magenta", 1566 cyan: "Cyan", 1567 opaque: "Opaque", 1568 translucent: "Translucent", 1569 semitransparent: "Semitransparent", 1570 transparent: "Transparent", 1571 none: "None", 1572 raised: "Raised", 1573 depressed: "Depressed", 1574 uniform: "Uniform", 1575 dropShadow: "Drop Shadow", 1576 english: "English", 1577 german: "German", 1578 spanish: "Spanish", 1579 french: "French", 1580 italian: "Italian", 1581 dutch: "Dutch", 1582 polish: "Polish", 1583 portuguese: "Portuguese", 1584 russian: "Russian", 1585 vietnamese: "Vietnamese", 1586 danish: "Danish", 1587 chinese: "Chinese", 1588 swedish: "Swedish", 1589 thai: "Thai" 1590 }, 1591 types: {embed: ["youtube", "vimeo", "soundcloud"], html5: ["video", "audio"]}, 1592 urls: { 1593 vimeo: {api: "https://player.vimeo.com/api/player.js"}, 1594 youtube: {api: "https://www.youtube.com/iframe_api"}, 1595 soundcloud: {api: "https://w.soundcloud.com/player/api.js"} 1596 }, 1597 listeners: { 1598 seek: null, 1599 play: null, 1600 pause: null, 1601 restart: null, 1602 rewind: null, 1603 forward: null, 1604 mute: null, 1605 volume: null, 1606 captions: null, 1607 fullscreen: null, 1608 speed: null 1609 }, 1610 events: ["ready", "ended", "progress", "stalled", "playing", "waiting", "canplay", "canplaythrough", "loadstart", "loadeddata", "loadedmetadata", "timeupdate", "volumechange", "play", "pause", "error", "seeking", "emptied"], 1611 logPrefix: "[Plyr]" 1612 }, F = { 1613 object: function (e) { 1614 return null !== e && "object" == typeof e && e.constructor === Object 1615 }, array: function (e) { 1616 return null !== e && "object" == typeof e && e.constructor === Array 1617 }, number: function (e) { 1618 return null !== e && ("number" == typeof e && !isNaN(e - 0) || "object" == typeof e && e.constructor === Number) 1619 }, string: function (e) { 1620 return null !== e && ("string" == typeof e || "object" == typeof e && e.constructor === String) 1621 }, boolean: function (e) { 1622 return null !== e && "boolean" == typeof e 1623 }, nodeList: function (e) { 1624 return null !== e && e instanceof NodeList 1625 }, htmlElement: function (e) { 1626 return null !== e && e instanceof HTMLElement 1627 }, function: function (e) { 1628 return null !== e && "function" == typeof e 1629 }, event: function (e) { 1630 return null !== e && "object" == typeof e && (e.constructor === Event || e.constructor === CustomEvent) 1631 }, undefined: function (e) { 1632 return null !== e && void 0 === e 1633 }, empty: function (e) { 1634 return null === e || this.undefined(e) || (this.string(e) || this.array(e) || this.nodeList(e)) && 0 === e.length || this.object(e) && 0 === Object.keys(e).length 1635 } 1636 }; 1637 !function () { 1638 var e = function () { 1639 var e = !1; 1640 return F.function(t.cancelFullScreen) ? e = "" : ["webkit", "o", "moz", "ms", "khtml"].some(function (n) { 1641 return F.function(t[n + "CancelFullScreen"]) ? (e = n, !0) : F.function(t.msExitFullscreen) && t.msFullscreenEnabled ? (e = "ms", !0) : void 0 1642 }), e 1643 }(); 1644 I = { 1645 eventType: "ms" === e ? "MSFullscreenChange" : e + "fullscreenchange", isFullScreen: function (n) { 1646 if (!P.fullscreen) return !1; 1647 switch (F.undefined(n) && (n = t.body), e) { 1648 case"": 1649 return t.fullscreenElement === n; 1650 case"moz": 1651 return t.mozFullScreenElement === n; 1652 default: 1653 return t[e + "FullscreenElement"] === n 1654 } 1655 }, requestFullScreen: function (n) { 1656 return !!P.fullscreen && (F.htmlElement(n) || (n = t.body), "" === e ? n.requestFullScreen() : n[e + ("ms" === e ? "RequestFullscreen" : "RequestFullScreen")]()) 1657 }, cancelFullScreen: function () { 1658 return !!P.fullscreen && ("" === e ? t.cancelFullScreen() : t[e + ("ms" === e ? "ExitFullscreen" : "CancelFullScreen")]()) 1659 }, element: function () { 1660 return P.fullscreen ? "" === e ? t.fullscreenElement : t[e + "FullscreenElement"] : null 1661 } 1662 } 1663 }(); 1664 var P = { 1665 fullscreen: !1 !== I.prefix, storage: function () { 1666 if (!("localStorage" in e)) return !1;
1667 try { 1668 e.localStorage.setItem("___test", "OK"); 1669 var t = e.localStorage.getItem("___test"); 1670 return e.localStorage.removeItem("___test"), "OK" === t 1671 } catch (e) { 1672 return !1 1673 } 1674 }(), pip: function () { 1675 return F.function(t.createElement("video").webkitSetPresentationMode) 1676 }(), airplay: function () { 1677 return F.function(e.WebKitPlaybackTargetAvailabilityEvent) 1678 }(), mime: function (e, t) { 1679 var n = e.media; 1680 try { 1681 if (!F.function(n.canPlayType)) return !1; 1682 if ("video" === e.type) switch (t) { 1683 case"video/webm": 1684 return n.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/no/, ""); 1685 case"video/mp4": 1686 return n.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/, ""); 1687 case"video/ogg": 1688 return n.canPlayType('video/ogg; codecs="theora"').replace(/no/, "") 1689 } else if ("audio" === e.type) switch (t) { 1690 case"audio/mpeg": 1691 return n.canPlayType("audio/mpeg;").replace(/no/, ""); 1692 case"audio/ogg": 1693 return n.canPlayType('audio/ogg; codecs="vorbis"').replace(/no/, ""); 1694 case"audio/wav": 1695 return n.canPlayType('audio/wav; codecs="1"').replace(/no/, "") 1696 } 1697 } catch (e) { 1698 return !1 1699 } 1700 return !1 1701 } 1702 }; 1703 return {setup: C, supported: T, loadSprite: w, get: E} 1704}), function () { 1705 function e(e, t) { 1706 t = t || {bubbles: !1, cancelable: !1, detail: void 0}; 1707 var n = document.createEvent("CustomEvent"); 1708 return n.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), n 1709 } 1710 1711 "function" != typeof window.CustomEvent && (e.prototype = window.Event.prototype, window.CustomEvent = e) 1712}();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.