From eadd36a699b1ff07de9dd946a6dd76b4e3bbe21b Mon Sep 17 00:00:00 2001 From: Jocs Date: Sat, 29 Apr 2023 05:06:30 -0300 Subject: [PATCH] fix: update keys, player and performance improvement - removed box-shadow to low performance in tizen - changed native tizen player to hls, to fix problems in some devices - added remote control support --- .gitignore | 4 +- Crunchyroll.wgt | Bin 1134927 -> 1231644 bytes README.md | 13 +- css/app.css | 10 + index.html | 2 + js/keys.js | 1 + package.json | 15 +- server/css/exit.css | 3 +- server/css/home.css | 60 +++--- server/css/keyboard.css | 2 +- server/css/login.css | 6 +- server/css/menu.css | 8 +- server/css/search.css | 12 +- server/css/video.css | 8 +- server/js/core/hls.min.js | 2 + server/js/core/player.js | 292 +++++++++++++++++++++++++----- server/js/main.js | 3 +- server/js/screen/home.episodes.js | 8 +- server/js/screen/home.js | 14 +- server/js/screen/menu.js | 6 +- server/js/screen/video.js | 45 +++-- 21 files changed, 384 insertions(+), 130 deletions(-) create mode 100644 server/js/core/hls.min.js diff --git a/.gitignore b/.gitignore index d68fee5..ff15d32 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .project .settings/ -dist \ No newline at end of file +dist +.sign +.package \ No newline at end of file diff --git a/Crunchyroll.wgt b/Crunchyroll.wgt index 21ea69ad6183a88ff4f8c8178e121d80a23971b5..aec9f1a235cffb987acf74570d67b0ed0ece0f34 100644 GIT binary patch delta 144991 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ǔRcVHlNjl)buz%0jaj*Cy)2iUIi6Ki}_4h7o0~( zwtu&@v%)R*)VS2Ei6Wd?BjJo5NHryBj4MfOI+BRg7A$=e@O;VIqidOW_6I5*3#UOo z;VovQV69U=`Qx|_DfEoo%;{Lv-sVdE0iBfkxRJ37A#eKQ4RVBeb%}5QREhYn*o4*w z>v2^TDpshyC^Pvh(qOEZLMFDGOGVl#%YR9s!y1GeBbbDeUCA1_Uk*Bf?i)HzeKXIq zl`2KJK@91QmxoFdK3=L_ONNUB(uh%?Qpsv=Z?BG0&4I!+u)5xO9<7A)0HLx+ZdUcZ z^;)u+u7q1>`dZI~dMxe$*U-FoFpbl;d=*N^STQyWmA^=6q$<3G(EKS$7Z~x%=6_o5 z?!HZq&?6RF70PL(Qib1=vaGbEWr&35?hcDxBGZJ?$yt7i&|(t$6amq_)Y=3R9|f=y zhq&}rzq=0_`%VT%QLGr6T+?CeX=$FJ*P>D$l-6%h-C`8aSEDNP)geITB^G;_OSbb= zcSvTFO)HO=b;66BUJuZ!JzPcijeoj7qhwo`f@xl576)VkP^jT0Ei17jG#PADZ6bAS z-)h-vOa9IvB`^pjMWdw!)Nw10}i4{263 ze#!n2&rPlKTOE&do<=!YmdJ>tXoWFplK}^XBcqVJ2q2I|#ium;D8a2|ED_26$R>{s z-BjS4s0_J$$Z zgrowyFm*u+7a)>-A+~rH{5|r*5K%4mkWpqiJjat)2@fTorq zQ{jFQUoC#ez-X_+?BmGcI2mOnne-p`M%UR|5#(SY?MD~X9B(cz#edf{Ia|$UQJ$M~ zrAWn|RX#7&c9?Vv8=3vk8omj?V68`adH#fG-XTpV?M4u6dtD>M>aSW13O#ic zdt@M#2yCtbl|ojlvVUBDK0klU*JRd&mZ@Zx6w%>UWpU)v^f#p~I8BameUygk&$Us5 zP9OjH<{g^N+`Hnb4$-__UCGK$Syon3+P}2AmEZ>V*H>0ULknK+$hF7Lv-h=vV!1dA zL5T$lQuiYHXHq@c9}g#f zp=?vuMEqo{l7D|H@oTE~H_||-F@|E*O!@|(4H-pPgJ$8;AceOa8+L5o36#Fxh{_hS zNTE?<9$P`{b=deg@oc;p`K8B@BSb7NFYM<2qq-b9dVNr30$r0-g3-uy6PR9AP(D%0 zr%d6%h?Q&v>ffb+Jy}Y0m|(>h-IY8t@MMlaCJ32RWq$-3fRZEJ!e16f^;{|IIjRzl zOkm|M;Z#&H6H8K1jf`TB|55aCMNCP{%Sb}>p2AGHyDMPezt+>0bDZGq5P3kBOWWij zL)Q6XLD)|@VxN%qvkl>?Yk&9bjp@cq<)26FR1nj5De^Q;Z)94@-@)m=jYD2ZyNZ03?10iWv`cKDi zQS_n>e9|t$D-gWUQZoLqDk8Sv#N|L%wwv9Y6n`Xd1BaE>3UXRzre@;k5TmwPuMMuk>M?|Fh5DJuYuo5C=IE*tEQ`deBEH3 zRIM~OOetahL~j{l*f89L(nM;#UpNv-)r(K5gPl`2O+L$!*?jRJejsX=N0X*C8n3nJ zae{k8qfSYioIBH4c@eU?Ej&_DFzg7xd4EC*so4x@a>eQ`k}B)ukg}k4X^8^IcXxF} z`R*=0#9!YSI5}0@fekO36*%d>A=*tRo)r%f1_LB!yz?>Az-~Qv3pn z5i1qUQa-?IbP9k6T|5B9QRKu`j)ca!>BdR-as|zUWVNT4s#df1oeqh1WPd{|9aHTH zl!0VR8wVu#YJCT&uv;7JygB3R`hH?g3glbKSW*|YU!1+^4t9IJe)oy&hO^^WZ(p8v zfmf|0bWcuSpVXwDzf*nHj^`1bI3atQs%$AzJ1FY$z-+j;L%M zX&KZBUud`B?v8E3%d}`URir=lvbv=eZdzJx-iUEe!uE@ny=B89iwcYxG+UsAO1dx~ z@q9@X+W;k=Ty;Tmtri1%sD0E4B>S7OeoJ4Qd6%e8x=*Ab%yES<{9UD^YnOWv*&# zlW-YN1)@fjm0#jzlTJYS#C$+~%6UBd=%@wW7m&h1Oe_>XOeA(2n7(rQNw{2coI~{q z^JQriHv7ntS=dqMI}8@m7*I4V+cgX*56o85*X!*BMrrNq#-=RIntgAsI|)u zrDKBD&usM!0F7l(t?bcAcV<@xeJ^x%zRGy2)!LvdFxjJWwL-gEx$S^33U&3U`$Ad0 zwdO%B>woZQPR58iRbySL_*agnz~9a2a~!jiPblO@ZyLv+tDNgcHr{@OhwOETi`Eeu z#ge06ZD5Z&RE+UJhK&m74qcp%L$Hhf5RUQn7 z*@SM|7RbD`+A17K}7AE=i z>N9c%a`8dWevW3VLZ9KuTRO#~Uhl1K*K&H5aSgxa3ygsHEpJd6-~8HII7kbsCnMcw znblpf)wPM+YvJ0QrGCiD{h9wy`1tlk3HR2k|r+?iqAB2)@!>@!93 zGjmY*EYm*HMTxj{qOrURjHf6zMH<`(S;w5gugxc4RB9eMZoxff(%l9?Jt&l0;g3!3 zpJUwD;gOp}=W;vYGQLWp`Pnii)B)H~bPYafdTITh zn0koS6Y3GsCm!Kg(v{aKDZNqQeUnAEak|PSBoB}p>b6#zv?c9z-=Qk$Y>$b z^3h4*izhdB^l6hXAJ6}Dm6J{$>VMN(ktUwvGjXZ&RfL~BIni;cNF4{&lek1C#4kl1 z6flEiA=s~L)x%;dD~&oIz)|(Kx2sP7l{jRCksIb@vlm{gkZSmqYO3qN#eM(?SL@~y z&d}CnNCGeJX8z-TwA(3ti}&sXJ2kndJ4;_}5r`w65xeN{(t^>uLu~tbT`&8%3u8E?!BC;u%AbUskfsgkd`f|NA5PC zQW?FkNq8NNNOOPk<4Ie@wS4F8^Yq8ZA7j1dy+7@lu{`OQg@AEynootpS!GA?h^u<67#ewMW zi`{|PABz6qKn$LUz2Q{1@KyXdxKIkt-2rPj2YdT`n*aTYvV=IfJ^QB@lK+@~4r*W0 zb=aK4R`RN+3gGr*{x1EL2WF0(A-81R%8*emKbqYB()cJY&hfBiGnCLu>zmJ0t6J|} zTO-NJ@QDK=b^jJepMTifx!j&1nojkAu^AF$gIo<`J#Z#(_$W3Q8|3q>D%t=7guO1L zF^cSB4G$A92pw)`t6=;+{&!QS5X^&d~4isIsO8eEI$;(8ifk|cW*%pgsCfuEbHIESAv zQ*jy$_MSYNL9Rdg`v=3_Uhm-1^*F|tPoae2-6?(+xF}BO?^6P-)ljA!P{Lp+a!P;? z%I`dVbpFTw-hbZilSg0vz%p)30heNl)v^m%$plltLZ;{f=9C~VC*Ean^T+H0|2zNV zW;&gUt3Lv~yP8h@(PeNI^ywI~hUPibk;b-Z3iJHj>dEpa{SFALi=aXT%JX!Ez65n7p(f+ZT345WrsU$Pyi{(3D_kltVR5P4z|R0D z-xVwsn%oRQup;b%@GzOA!2%JdBlt7&V4aEZZ%GjJCU8BwzyKmR6_zv=eEK`3=`*`n z(tO#5nSVc}`NJs(GT{L3aZxO%V);jKc@aKN?t1j9KT3}FLDs`!hGbC6Z+`oip_8%d zY2d+cH<|vi#2WT|YA2gKt;o133|3vlEZN=8C-}+;^TR$jNBf5Sa0sHwVKAI5N4FQc zF4I4*FPy4O|G2rZYcl=g%Y~|m{1pDd8qhM3W`Anu>Cb6iyvgQKcJ?W}sSP$w?e_Nf z1_!Sh#o(1>O}@DYg`>az+)H2{kwIcuLH~rMMEe;u>ayy&^jM;!EB1 z0~+Pf?bGrUI}1*6ioJv%m}2kX2d3CD`~Wrnc+c|AeDNXph_63`A9(!*{J`s<;0Inm zp?|sm!c2W22k*;iCyI|2Z@IMkt{z8+D(9H{XCA!uPA;M;E+@L`^ryH}@bv($ujKXa z6bltR1 zFQxWN%hCW&K(W6|D}IUg;uyi9Fr*a5%M`br0GNc}Ts0Ht?jPq?Q*p^c!pd5)aO<}C z++OjV*?oIaecNvQxoW(8e^Guvt-f#f!@24Q`F>h{e_4Isbjf>|LNHI_KR)<)4ON1> z{EvTUd^f9}wB4QIAF?slHt&@0j!5JiRPFg<15B>5+3L zOf0j$yA1Qa&bpPaUy>*IeY*$OhD=3scN0D|RtLW_8FHOPX({rZLuF=HZ< zx>+06&00ly-z2lhYyZnx3uuw5cH0+(F%Y~jyigQ=(SS1*OkxjW3 zb7WzMq7ED;aV)K`gZddU=17E1(*RAGNPD60xH zw_%;+0=>pmrlkx#0s~VX!wn;&#)Ao@Q!ONekd@Mvsjl=Ef@+d6X>oMZ(Iakg1VX*=E*dH=gMAyoBjUrg< zyvhtZVmA)9p>m&A#rtyE`6Yf=<*k_bu)iWxS)!yue;2g z-Z;aJVUeo6+gA$aH(7&Tr`@)iBlR~K=@Ws~ZC?-^5}B{WzH`0y@BZEv zzrb^qL_w(A;%7#@Kcj#5f0H*@@ZaH@kj&fScf3UV+P3&l>kBVlzc_#Y_WZ0Z{>w_` zkf7qJMpJtE+0PZFLg8_%hTnrsWr? zB8V0BF8Z$(w2W2>1-Mgtrv3twV6;BC0O1p;-EAI4A9dhxN@4s;-4-0t%lI>{DY`YE zLi%j(oZ$(bR}+8vCM|Kcv3({Ipv`SxeTJ!hT4p@+snuat755f-$iJZ1T;_*a$GyDMVKc)6s-?Yl<18y z2m0Mbw;K$c=H$Sohr6ccBi3Gy*iLKqv{v{4Rmm-@F_3?hCdrt5n#@)Fa(U}oQq~5B zFVvItrZ!@{J6y^oT8n^g^4OBNENUT7iOFQdAi?oVa++77Bgo+{gDe)l-lfo*R8txI zb%#djRF|678D5KKOIAg@u&aQOAu8i(4K^&9T3}=(ps73BQts|)EwzdT@lHR#)ycgwjD5OhA!F?M-X_0l_|fddts`*Cw1^SUK146 z{kTAH_f63}c^5L5au1Te`eV7?G_jTU^zk!Jvs`}NCU~lM!NzgSxb6*|(euw9Oi|Hg*1DnIV9zvOT6RO@gkC zq&j~O9*l+;YR5w~%phyCE|XVTLql#|%!Y;;Tf)0>xR?#3)&_JnaAt%f}-682$eoFV~FPE!Et6;$9wVJ9YTLm>;V48&*?JqZN0SD zrV?7R&rz^ycRYl;nS_>jFbY9J5G^Wt#G!wWoz?L7%r~2l^qwaSc+cSRYd~+R4`ZUI zAAh|$hdRM_HH$EYp|puYf5k}Im}(l`NsZ3s?rwD`r}o|5@`yvZNMO0}Xf^i2!{y!G z0&V6NXiioJTD{WK7M7<&ht87|uFG?y?{fl~asO5A*)~;rm_B%o-N9Em_U0mTXw}@%j#6 z(XNJNRGKlDk1S#TZX$I~#<@{JyZ3+Pj1*H%u7N-Yb`IQ^0=KZBrlvvN)RnY#LpQ?K z?)D;1&Kg8;OB3~8WqF=v7#8yb6s0s;$adB|zBfqI`+2IOGDvR;N0&&E2#7YbTl@(- zDkGPzHCU{=)9A&FKi%<|U!AmDHzOT)dWS+-%lM~2W^|xbg=F3O6y~jYmZE?CYzxR8 z0hOem5^UN|Te@e&_sakpI(>#ZFy#*y@4R2oAUwB5P@$4CcukEy)sXCrJ++Ex+|Vf# z5B+C<%z%-P?JW)1bV&a>^9jrA-r5UUOz=AMM_yZEUbbTe2Bu?!OB@)x-|PAnKj;Q> zwWHUehPk$9PSWce^zx;6ChLECECgB8EoKDG-R~LIl;#GhVu|$IUq^@8!e?D?^2!TJiGhC`i*Z>u>~~U1 zzY1d+(j=(y05NCzbetpk&u*lM348zW-h-HS3NdgL2}0dM-0W&7VHu1}kjFJYeYKGOSBVP^6cPm1({Mr=@D>ajnPSq3-_fTefv?IRJ4cF2NDT8BMWy}{^ zy5xUZ0(c@9d2_mZ)Z2gFCSN4jZ15+(b-@!ujbXz_abzcO6J-SL1WedYl78}hOA%!4 zd$lK!iA0M~hdWrLK22^!J&79wh;M*Ce0F;B?(c8U%YeCztQM)r;gLGIksxeqU)1%o zhIQWD196$!$x2{2dyS~cSi+gaX#HBSA6qU8*=M6q-x_wM%-NMP zcUQ{vu9V%kD^-6pHtLjmk7_ zEAu0LC@^VL!`q{Ff!k4Ad0Hu^&!e%vz&IBQgUz^6`jdZb^g4W9IlMDaYRb#fpTyOi z)7FucW=HT&K6#UQ$C={`j{zOq9&1dZxsSE;+m2ihs|%gBw`zn))KPJyu0@1#MN8W; z`W5pgo>bcB3l-6g1CZ)Sq`5p#fjYwqAP;QWVQAV`4a=%l6b1Vvg7z`K<7HFIsotx*yHBo#42iF$ZMN6{pf0u5B~ldGd{ zUn)n%JXl_=rehat(VB=9Z^_yVr6Oa_^aOuyXES~_oAE4Fy2wq_mA;y{E_#r<;%#iH z57cP4`ZLpcWbdk?1vP+fz(nNMqUSJ{g_l{oqnbk%)#qHQoaaUWwwA|_8T!Ia(njdq ztqi^HYoYAK2z?;uzdfjRh|M=fJ#}OWpxF+6TozSsOx_`L<3M*WOvjT|L%#=@@q-yG1 zB)-+h;Xgf_55o*^;g;9TSmQG1q&Rfx+S~_YLpi=sxP9rbNxCAbn>*R}c zTDSX2zVM=_sO#1xg*1=h|0s4v-(ATEuf_kdMTpC9hTLL_2sLqxj-h+KT{{7BD!iu) zbO+P;&>C^X0)*CE=$2*ZM=_6T##2UHN|8ENH5to`ly|#n5Nm^Z3eB8s&?kROd+$Z? zW8@(O4shr4Go8MFclT4|t;(sylxo}Y(2WF^3rl1m9PP+kSQ8ysdDh)yx7SRapv0NA z$x;@h8yJvGQp)j<1(X7lrHa)#k-8g7oi2z4XA}b!ta?n5Z2tbv{-U`qN&SRdb2~jD;;1Q$bE~%;G9AERG@Q7?NNVabP-P-4V1QCZeM@?a-8y z|2u-a0QWqBMV*tyu*6^|Mo<+xsyRO3ma&bSqE@z(hys05_&7-r+lFV|SaA}XSH~lJ z&(22NKgz3lLXL^aC^~=CuWfI$3XmT$Ts%+=Y(%D)$8zFfuB{+IRM4f2ZzpG_FSnH? z(<30m*rTI-?T^&5;*L|2E!o945PUkqYFIv@q(ps@%c}u)y9Be!NnRsQ9kd43VtYzW zx2*t|G9HmU{gQCrH;lPRqy7pydlX|5j#|X|2x~drbXs%#_U(V^Yuad0VBV1jwWtF_ zN=_zzD4K2QGkqj3ybJ#n-XN7;>q94<+_aKdS4rw5_~V)|Mu@s@JVDhln!^R6IhXdX-=umi-KaJi#T|cnVvyhgvWo--IXKdQ6)*}=@xPRQe|jz z)Sf{%tutwemjx77s#Kiu39c4(MC#4DCy#@Hu=cKZRGk*&Q-)2hj~V``x15aY)JUD=8&+l|uGn&7XQ!I;w~+R98X+>sXhFCkIcXW@vEC)Z(Gvsu4} z?KDc#)zyE(g$kq+NKu5wIV}$Ze2;i*7Qp=jdkZ%ypFdD-qn)?sXTJcSlo&RpJYKryo9>Yw<8xV zDU7bI=bJE7h5og-IJO*ij zjoBPSw=!kiU`1l$;|0MCK@8w`4%2;Wi=&)NLS9xJ97Qz~wy7>EmYLf6;kzPt)R)FA zq^>X#`G$22G*`tD$ATPPdvP~E>h=$?E`Demy(&#SGWur4><^@c;+3MO$C{{O!}O?w!Lj*M zD_WX57b%##(dj#EI$G8wO<+aX*{o?$8=2a`gm?R}CvNoxo!=p-TWTv`sCuEm@`)5eEKLmhlI*D(0=0SJs-saL_v&0L+W@3#A2mT4 zdRB=RhoT~tzfL2a4{3iW8d4r!N3FNd&PNo9xdd^EAa;#%4~cYScmYI7x&G5!Q|Eu3 zTj#v!SY6}5~ml5Sy1h792xav;PQ z10em0;YMoKI(tn!GX+Xq$FP~k^{{`S{|VcLsMBK-`f)VrkMQCsn!v*Ap_YpJYBuvx z#qp;n<;jUv%e4+FFSn7pE!;w6_2NzYZZ4`s&fc}5UD5n1B7|IJ8ISUJK zi5Oi=+IgV=V1)k*T@s+TL~#^#SCigo<&W|U%TbP7J4fr`q?@T(tHAXdxe(q;y_sY| zW|9SoB?AK6Kuq`@F)KGh3b?$rAUncXLabvlA8=D0E`$7H-T{&vQ)Ld*26Itehf9A8 zOP^e_80ZXi4zp^Jr3tXY=P7^A-&2?l_e&X$Z0|~pb@P=V&~2$cEW=3iAv3B>Xg;O^ z5Rb4MHOvO0Cb`9=#1!pO>I05Y@0c9Idf!TYweMXhdauN6-lo2z-e&nkxd(qRV1|Q$9p^x2 zV44%SMB2KVn+%^BvleZTazdJRE}Z{JK$LZhJp_hDeF{DIAa>1kWH!~ zLe_pOznM3408-5w*Sds?q=t|%Z~%_?1c7E*eVN;H$rc*(TB**G=72$6+9Vq!ww}Vd zshgh5U@Jn@&I&C17cYOMb-sitw}SPX`d>dGAWNt`y%)6~tT9}$tD_;#q2m|2;|Dmx zQW-^-4Iav5k{*rPNr)$`-6M^efk(CkjIXjM6I8OQoTfWy^nI~V^dZHu{1gHQo@OWW z^`zzl9q18nIqgb&L~F)Cem~mk@Xga1?lz~%dV?KDwX`V6dAJ}mCJrvuqY>W4@N~f zMeWfN?;hPsq7G2P!yeYCgKiCJ5iZTybY`@ex^qapk2;mSX2wv@P=q^J)>y7QG@!Wl zB!YFkc+$RJEsK8`niq#j(H^m*Bn`h|O+v!qcinDTyHl@X$ovtH{3HuDC>x?t-Mb3u zy6i%it?Nl)rd-bL#0~z(A_8`}9D~&{`JCXHq3v^8TQFni)IA}voUHy3vCikum{)FZ zJ0ZQdIHWhlm8PRIc~0$;`>Jo2H0!M~>aBOlGJyzrc1_ z#>W^(#5aGU1ISj+`8OTy|8)Fz95(QZwynAsqtaF#8}3l0k7)paEz9rjzOM1aa3|!X z6N)Arq4z*)AsY@DhPg(Ts$+=iVR9bo>B~)+1;0h!Tqw`3 z%3_MOg(|EUGJuNps-dQ{d#px;ck&3 zLoz(WxFv*=BaO6d1XYDLRDZtSnc0?0KV_`8MT5$TS6$4sYI5{JTpT(znPAU4#rq=( z+h(;5nnqUi7}PfUJR>(g();u5^ne*5?Y2L%>hyayuJx)mCmDPwaGcDao0G$`Sx4za zwM2h7e#?xp2cLS1?4eG9q~TFeD@QwfV`&Rpr<+*OM~CONUT_dS=}UZ zi9QOikwfY&5S|AA{0%GFHpi20J~i6{DU^S?t7+y$^Eypkp_sRlV@M&_eYrPbwnww# z^fsQ^*6bcep3W+G5PGUqdT_1#%}%el&J(Bhj)W>jF6is+?*TMYy`zgJ77$hBuhS~# z02{K`42=y%P#&3a#TaJdAo5HVwIB&ha=H}hi1$kqp4}7GVf9=` zhr0PFvidK(Djkh^Mke^Z2cdFl=#HWZx}&cSdn%bci-%<%t5k z&2mmdNfydAlYxaUC7{7pxs1aPOWG}$d=`v{2z_~&69a4X292-^VG0+jLMrW+h@n*8mrc3E{&WrG0)=50+=zfC`zPnu8jO?RRF^~s!D&X@#x<2 zl7->*{jBVtssVB2NlA%WH8PLItI}5KtAVmCb)S>SnxwpeBGa^S(PcaFoVXQO1$3ln zN<&`yGF&d{gdVQ7Mx~(X*fy|1G`^|9o4wbXbAyYt#Qm&ykxo^wOHb*V)?Vj{YUmGE zLw|slqB!tF`v)8bRYN&P$Mt_ed24H{_$_O+xn^`y*Zlzo+p=Kd1wd6%OSAQc4-or35J|zdr*yl>MG&K$WWI!0mZNFYt46K-h_HEupjlMX(mg zNQ6K|F1`ZM8MS$f7U-MMfKAVEr)!bhSzMhtXBi`dqbnp)QVXNTiKKtZ4ppdA)GT-} zGv7o<{RdQ<%$`lpZv{9ZVV0o8pv?wQdSKkHbd}A37oE~WzA!GSNh;h#9USrNN@HVc>0D1u%E zjs#>N5MMq-8D_~tbYXwZM;B8e?G`Z{E%x@m+!MR*J%zfZoy`gO@IIdJR#Ra)Tt_cZ zsiO2$GZKkPkoh0NJVJaXlcErtELgTM*D0IAHPCEq0?m*C!QBdTC${0fjUBn$(2vmJ z<(}*{bfk(eKra`NrOG&|1{T&DLM|)5TE)c|&)45Di4}TK?KXeAld2wDiFQK5r+khtRwM)tRshStPBUl5R^jNEk~OM+X%_e@SVWKzy0%a1VHJ)Ox>+8E zT9Z#12kBwNC^?gQRP0s3AtXUdc$4x)>UIU2;pRwUpGZ`N!0BRzb?(%7Ql zw>{g1Mh*r0Z*t8M{r9y$P7ar2qk&M9 z4aPK)jEZzgwdNQGTY$&o)x;}xT&Lsq$4a(f2da({6gz*AB2B$VNwDP2HZQ0&3>uQ~ zrTFh?IoBsP_2HO!cow~s#`Fq_P=dsdODkbgUKus(XCdV{E7wAYp*M?T6mkr6zWG16 zQ>$fyfG!BvtDmg(l0KtOI*zJ#%oX3rvTqn7%R{};r;+3~$w{>4X~Y_ve077-Ra;y} z*NVG9n52JxO+=c~k-2WMCiQCe*KR3P1Cohhm$Z7OLPr`qszhFDd#w@~NCNc#d)Cy4 zX!109+Iv*se)1^lc-aImGFrB{Upz)Q7ht1l&jB&eFfT>yun2>_JtPMg(R6!zFa)~e z4Tk&M1xHjfj78+W)t5OYPexBorp(FY?NX-QsegZX*ze!rHHPWhz4HcxAwAlgVwk@@ z^MTkc1xh$HQ4?gvP3|PtM-cKwZMw|2WXsjbjx@z}0ifd`Gx_4fAafrlLDVs-#=rz{ zxVxj`65punbe+Q3HbZ5fVI~`B`Jzm%8s%>e_ZKALZG06LX@;RPvg0c>k}T4f>8B_= zfdPMpsR2T(SOgbO_oH2La4_ig#QqR2hX?p)*oXVw0bC9+aWLrZ^+X@D_A#;F?+x|@ z=6tfd*PD)$px^Pl{?oxWY+)EY4+dqQH`96G?f0zY0iEP~^P`1vvDe&g;PqA3!^45d z?*jeNUH+($Q7W#b$#-j(!ulOaYwcqYtXqG~MWOgETGVkM4!q#=w9ecYk1yjax=cSm zj&}<9fVcD~^P^yY0wi)zu=uJ2;fBGyyX%kO(ZG2$phy0QjJ(-s^Ya_v=EDS-uNb7L zN#iSZ#h`f$eJVDey1p5PJHy`2;Az{J*5ox$_kd&}uHp7JwSnq8^6;>$@q2A#05E^| z_BNiI=XZCHZ{yo=Igd?`$ZyhfpA5;%jp5e#0%P$839L!F!tokz&tatc0>ks-J=`81 zK9RRM=GDvau4#-DWk678moWKn-6KE$O@p zwiP)eRD)qA2sK+y=+SCDF8(rgKu>?m|FMh_OOsGdyjHAc-kOaJX<5@62(`ekA|r&# zAj@9yXhNoM;ECN@e8alMr`SUJ5d0Fjvek0LtF!ObVj>;bTrVa06*?5dPHuPXDqylK zG^a;)4PZagge;FOlai+cpdQ1=g?XID6?1#wrQ=TW2w${Go~ZYua!K@|A<=(d9n#z- z^rQGl=>WejBJ{N8bD>cth|QCC@p`@1Zc3J3(aJ;TqxL6&h^{(IF*m+vFeN&Ru43^0 z@qFS{0N)nfmG7hO+>0(!{kj5P9T+TRBJ;J{W#$BA zW^5wk)gZf=3A-rWlfEp`s#w*x~Wnxb*bGx7rTr% z1i_KxsHzj!hQCQa!1i`);;Y1^cr&rd5t)ZD=^hZaqgjI2)7AzPE@wBj)ze&5R2N9q zfXF0>ght7aLl6Sm%<*#yDFX&d8Bmq{xilti?J%6RZDoK<`7$FxBz1pk1y^+dP5Tg4 zPo4~qV?U5*b#(9W({B z#pSZL#Fxe^D9^_`ashw&#^M)h_AeQ5b8+zaKORTd`PD`D@$|*B-N(S)#hXIMZj2pS z7%20e?JwXc)r`dABsVDLYV~r3lx3Vm6({Ik?OKgmi#0w&?px z+ha8dpUXwr_m%2LHv*rcc!m%4frM^1J|*2=->>Op%dyGe&#Hejl@|)*A?3=Nor!J* zdK1NS*ol@#Wx?aE&<{Rc~DuY_cWy}J3D=vc>mT?6?ri@#- z<1#`l<5GmycdvxxLxS5i_Cs(AY!`G76vq@w*#TCpJskMf zT9coFRz~9u5sji9DqMvojAi?a5{Qr^^RwVcsk-xurH zOez(A#hOZ4X(~m!s@2{q_eWFwSUbc}xm%(#g|a}btxm!v;dD}Dcap2dit992rE;4M z!PRGI5ov!0*Jb!|a;rx$$#FBJNsj7gU{y}TGPV`JR*#YeUET)H3;!T}3IpW_iu(5+ zP~4t^M~GO(KW_g=4^4m1s1}OIti-C*hvn*Lo%$#6H(*X`bB@hlk2k)%@hLR#9gbw5 zG!%Tfk1`is4uGp)%F7`tjRps6Wg^h$#>@BNTSI^48(|V)7qXsWGx16xb=;(%yn)yq z_>UHyxsXcjI6n(7BMk6{@;S2lULMG2ua5ui{n_zzRCu4C{&f0Is35g(agzW}S}G{7 zBWdZFgCu?lwdJpYz;PWH6rbu-7E(NmA|+EuCl^N3VRWMwPNLR_^mE(SU9!?W!Y#zV z|G$3@zEauevqc09=ls_!1|b2+>MFtotA&F^+*ln<*7bQM=~=WaLXi6CtX?}?r6|5E zHLkl;5r@|S(VLl^mDEE42{+YJhS&jtrI$+fC)G66W|_0+PBjBn*Ukmge>iwLe7gT+ z@N|#ZZKoxZrbCxeDWm<(ad;T)^m={r3~Yb;fN$ZrQ7?_N(n%4W1EKj(GRp1f^LSvC zkeHpY$oSGaBnsCQAw=2yWPim03tHH{dOO^3uyXwB?aR~pgO%oUia9&!h*=z5><+~K zP(0lSigW;^2-viz12Gs3#b9q=3=R%}Ui8H79?*@0p&0h}#c+se0{%hipp* zw&8rTPH5}M4z)H(1;#+No`>g4N|S$>za?ZYSf(oFomBO)?#R(Gl|JvYUWq2Z(R^tw z>c#Y4EoqH*^&M+hon@CAjaI6ZSWZo}LaVo4Tbj?C*o9rdbFQPK-R)fz669SU?h?8i zz};}WzlY+cyd7-sV$Y%qKLgR9ozD7u{JRT3DmJu!qrcrpj0!p}!()t9Y_I8v30C7Ywj$G7jU%uDC&j<--12|Cd~S*P&l(j? zQm~~+2)2p`x3K*9HjI}TQr>xl`ad^sTr^~*&la^`v^fjwyS1O}ZBjJhcKkcOS}(O> z6_mW@R)N%?rV?F5zAGuzhbFL9oOnZdm_d+h)hGi=+M)tlp(+8bUP&QexWqD1n7q_v z`~=E;zs1ofV4YMjp{swWz?$q1JY_BJcFMt{q^@JTL4rGZ{xQD!F)s3&XkdkDQ6UZ< z)qJBVdZNbb|r|7IcH^BLS)C>IsC`$5Y4J#ze-)1qa!)I&MRW ztdt7p^*vy?cW?-rRBw@gg??yhFdsS;P$qo;r zJE@i6Ui2b=l&OjJ^53hmr%^^KK;|wEtKS=UIt89AAa&JE+#d9YPlgA(`@;k1WfL0l z0plx*ilecb96Wz@xsq%fiPyiL{!|UFDOZTsci+)3ed{~eRi%O~I;65XHP^jcfWX)7 ztFJVEL>6Jb(%&v7P#5UH{;1o3Py;3oF=v8$!_5O&vf>118-Ha5m+n&vewPZFdHk=y zH{{m~`Z}bJRbA+#Unt8t{XGqqn2eu4m33EjCPse_^Ca{)q`x`-< zW-^$S2fgioorO@*{zzqGm^w-vP$GztZt^ZA_sYpbO5QIg?_n}Xz`MIn@;)YmcwEZ; zgpw=YKEUMNN==?(@{T@~2pq#zWt=y}mQ$s;GFMo$y3c~%Ob<%;n}19e%Cvl3_!|zpjO@;00kv<`?Q z{w982ex}A<-EMj{P-o#(%8t?Lq?>S^tni|jkHZdj8TlcIry~}>YZwgol2ble|Dwko14j>h!AM zC8a_6*_PBup-U+eH|y0lpRv&bLC#|1B8fd;n{ZjwCm(Nl*^v(Z=o=3uAV1PWX$xoy z_MawE!vo;8P%%juJKNiP`ntT_Zk^=@BOX3v$;mC|T^#fe4#e?8cABzjV3QdWR`QHb zFCtg-lzV|=Y;0bY;L!0nL_E4DB=25?({b1d;1yJS-`$~z_yN_Wp--sqTj)-> zy&ZPm#YfucCPryeGJ7bY7dtaxtBR=3973{$mc=NWss)6UE$!0qX2K61U*8Ohw(=S@ z9=fN+MKS%e&ZXv<(Jp^DlBKQJJ4;Pud#x#_cr_48 zyQzC}OpfC_H&Jf9Yz29am(n;2xSRH;`>Do^&t)@ARA7p2MIe7hIw>L77fgyZ?vb-4 z__k@8>4UV|Ps_5GuvFCO*(4SiX*He;4Bak!L7?>|rdnx4Ol`Nv+!%{3 zEn~42(~@_#gGGO72l2<=%WeSw-uZt6`g<5z2QOG3103Phxy0%!f$pVHm-hM1OW$xy z$FO;S4Bm}D9=;rZR3x8vf#~9+M3(-5_}2TwZAih>KJfxKgGhYz#V5Hf6Oi=qfO3#~ z+wiDQ44d~U_}JO&VES;1LC8PCp5Y_ikCRoz_E(r?IF^4(oEK7svlx9q=Poif`4oF| zUxmb=^V8$sPTroL0du<&A)>#)RAa*upzC@3j|h>_1-?9I-j2?|t%LYag6aWzb})N~ zs@47E+e(eu2?QK9w>6!J@7>;0_-%9HJu3WD2WHc!X$J<% zS;xUMoJZ~(UrKM#ia7~hP|h0m3?)Qw5u6|yrBfP@h)=Nag*U@wvH+(CM1g{taEA`^ zI3p>%OGtwC%P$eR3NAHR!1dkT4UkZqxkKLW?W=!t$-;%mynXDnWw?=5@)6_fwBEjW z*7~8{x$d-o*l8i0Fom2YY@n3cKwP1%|J&}ogLe@ah~S*U<+25zzd_imB1ecWNg-j; zc0qvfE2I**Ge=|hWW-9x{?q=5)92A;xLOvY>)-`r`nQhRwf^|1$1DDQ75k{&Ifi=a zsyu(r@f;5Xxs+|D2D0`oWPt<9eVzYOmYmh~igW_L>Tl8KzEWTGDNo#+tx13-u z^cE9b3BAPxw=|{R2H!!wOIVB2=Jy@ZVub3EQuJG2ylpm;R-A@I!pF_~408oRG;zG} zfpKJ1vypAJT-v@jdFkKpmG5rrYq7D-3WtA0vlSCt6jn+{{nQ^7meq9mYxN<|95Z#e zbsZG6VKpK6>sAOdMwHwI#&=NH%OFwL68RMv1|X2R@5|GAd#eHA9t3g}d}5cg8=3oD zr0OFnY!qMRPLVx)r$8{!2kaCX1*~%F!RwffW1to(kz|xX$tMj#I9gCf3*MFsxK)2- ztAv2~#WkwkTZm(|3~yQ=qT*8&8Gtjyg*9cRH@gml1oB_G@@gu58L<(#IhWB$n-K&0DdS!p(#;vTU z=aMQdO#_aG3hoEz-x(4r_wdW}$AhgPSZ!|)`R57$JjEZZ3m)yD?q=;AXnt#5`6G6v zor6&N+;cQ}CxbH8liJP4cMnJj&}R!hQD}kho2xFe>%dss}0J2RzeOt!bpv<~l^)1^b>#0;fk5UGfiIOlovVRe7i3EGOCg{86T4nR33>X(&6G2w%7 zxyrf|o$T$XWjdfS27^H|N7z2dXVr@MIC}B6v)1N+vYR0ED3BVKPR^JOi<4+3CO& zUs_euMdnM}3`U$@9R)oV6pBT<$o5rPc0&w0LfrRaJx+PB<`zi*%!KweLt6l%{bA=%QOG)v5 zd_ZpMi=UyjrJ>?VJ+tbhPERcO@ZbI%b_ge@=rNZD3$sw>!K%9)yQNc3dm1i%G55%PBLU6$5R)97jrV`V3^pdpHiivl(pH@QJf4@O zb3&(J&=yZi3BR|z1^Gr5sff?07sX?@pAqnOfQNkDhR1E;3{!-+K z(WO)eTq$+H46%q6@GLH-8Ze7gfmN832c<5jKy0v6`U(FU^Wxk&bXIM@D01mTHXUgp zORIg(&)R>=KCp}iG)~OCg>pK#YsGk6iyN|~iy8Sb>jd64gKS{E6LDiS*w-3KqqwuFtM*K6Ho3XBtNSEaxxJdhu8o}KaW9V4K=Pdxn^Yq z@FoGIQW;M+?C5DPl1@ibUZ^=;)OI*ly4vHqO)P(vR^#-PhFZ2V_3-dWVE{Y2l*!8n zBX*WndL}WeYpW0StE)Yl2pC_skFk-DPvOg<<8Oq!}%1)k0{l1m`MO;QFVO<-Z(n5dIVeNdE zF@S%{kUwjfR8eOaLHPEpI^A)V{O*wWrKl712UZ@pCjK}&49CjCOSV;=Frama6x0Si z5&=qyFJCT*6#Yt`D@`deS8&P#|m9;)(>8Bh6%{2BDBCR;5&!`%6>$I-| z2DN`pOc6hy{&phU$tFfr5m;j|h4#!0+BFksIMt5EiJ8-%Vn-4Y1W+l%X)A_htB`+a z#iV_6A|ew#L|{QB5%!;=u%r-O#tH|g#GY7hbP!}vTQV(~&49r5PU-XH$#4h$g5Tdu?-{B$1svR$a576q5E?}Y2=^gq6Tnts}9y&Xl4Ig=fy*)_6mD?fo8ce}V zxPCh@jdc#FOh-L~VS0>C)!VB{()Geh3H@PB5qp&)_De-Pv5GjrBK)JhVYCO0kW-2d zY%`oWo|kk(|1o04ciITcyDUPjGX?5RkPH|eqeYQ8F|a8tFxV|alqM2|E8%}3Mm7}H zc`9*0pi2*fh0~|9ql1N3NX*OgL(ViYgPC|~SjO4m<#?tP6ITI^^=#^w7~=&E^5O_s zhebEI8k=KT8>|l|(iPMJMb-6O$_2SE@=kEIHj&r8tQ*9gU0<-QGnbzHxFdz+?4PZj zh~9c#ofsd`!ja(-KZ=O1wO@bJ+Oqa*tyQuZlQGjrn^Obkg^hiHlaP_XFJeUdp^xD? zK#`*^h_2!9I&ydL!e1Ax0nv410!QytST%aP(vL09Dp*KBkzbE+np~wo7 zx8vlJEsG=ijq*9|ZkO;L{x0UrjCMOS%jCFS#ie~S-G{+*@#o6qF$T>k!pe_3NtT+R#rH72=so&Qzt3N3EPB_;hJ|e`8kpFhpS^td{`~K#=wg3kAYh?b;S#SU!@Ie5sw2of z_6dC%OW7T$^eL*T?`a`bF>Y`zrFhTS;Gtc+8556 zUnpffKf5nuf2z!(D^w9Dg&N2n$g?t-fSrei>OeewDu$S0+0+c`uK-6txWDHxY>2Ls zepc&Y2g!xV#Zr)e?^dz%?8WQnr7TEkL@5b~4u%9;bNUANe=TDu4mh^rA!JAWN!IO; zC}327oB&6hAV++GAWP;|3|OhY8tNE5c)&RhyWO!Lb%OXJoZ14XiK*x~<qyVWBS7IRVE&+8W3pme`0%qW-v(0$L{9%B~#D<8-9V-O(eaiSk5_Txkx!0LIr z&&yHvMjSqWr2FDfcAXblxXqC^;qc{1;$t+%!Q8M;(5Rk@xpX?cshG=}zEizJebd-4 zsyR?*O*zK5h^sd#m0MlWxS2}ArpN#uBEpuAO&Z<%{w=@%TmAb~RbVhm>Vl?jft<1r zJ?dHH3_J`-tv+k0)})sTh$MJv8$8~$Ijvenky z%vLo&dB}4RNP6G(pRA(#H*KPuFi7ZwfvW@<=&HM?H1Uy&E7T%Yhhx|=?#6tWj|aJl z9V0P+Cg)=q+3+eC;YHRNPSMycLe)E7Dbk>`Y4| z$`iN_O)o}hxM%ldLV9#e#ii-kUa{sDW++d8QD3FdRK;Z!swGO}W@$+2=#15(vF|&@ z-_#a=Q!PHP6rVfA=Ry9!;#JIWyB|^Ttl8j0;EdqU5dZ8=dA1LRcXqF7x)f^icwskd zs*`gdm%zJ5(!O#9SJJR@flb!dlxU_lcT)_Eex=%d@i0N8`M;%2bCzOd->wA7N}Tb3 z$)G}9`mEDJ2AzaExE&B5FC{K1^wD)s3^5xELdfzD@##KYZlpEv2E6zLMT64xM?FDJ z`%$B^#~8s-C~`*!guQFuO#Sj&LQ%i+u>}$6g(lDoyLT31PLJpM@!WnqpUMpq)fRP7 z^2+jl=`heuaMbu$cWobn^f z$fkkP!;9ZB6C)RW7sGDoXPMoXnU*%~Qn6!Y{~B)OX7_tqaKSpD>3>5b6g_YKDu}MDM%pX^2 z`2S7Mn=Z@3pBSjD(Vq67OBQ6L$Y~p`CVwP#quvQf@J@1 zo#%U<7x?!@=LLc*i6OmlNs4+=80%xT(uDg)m-pMi^xt z!@i{vP6Vsm?^1_gi^pwRu4(+KH*ahA&JWF%Z+yD>?N=DB%qTBYg7=IOv*J5*#ct?AGu zQ_cAsT(#63)P*vTbqEpfCoJZ1aIn9^$KGWrLMsJ-+yCyny=`oCl1HNtd6L1H+Q&29 z&6)1z%6 zjH{JHbOGo?vcckFU3Y6Q}Dfq@vz}uI2DCQDAV68snnX^JpA@<%!WMkU^wdjYO-PfjS+< zVwwSrN)_9C31aR}u42W-ytlSnV!B(@ghFbPbYYW3sowPtbK+6BtpX;wUq{chkYos; zot~2KYMyx)wQMeA+4O#cAX>Od*$jHwq-`DP=I+GmL|fk*(ob0J~); z)Q<{M+&S`}ftYQDQBtH9h1#F#80YFozROf^MT}$fhqf^_ddsL4YtRPmhZo!11192| zdp|k24!t)zS4w_JaO3aX)W4-S>6mz0*C5q@SSNO_Dd_z|gcxhXih<%&<9w2eTL#B! zMTN*^FxKt{s@Dki&@M4WxHf6vlCaEiy{%Rm78#2Bw*r3955%yYgvmpAcg>9NqB+D&(cm;V@dca^uH&Yg_JAGC2v>;^Fy%4?@}2E} zBIXS#1F$_1_9dRQZo}>E+}F9M6;c!HT<(PC;V~Y1d4&aHx^nmL*9x4+$cM*iWL}T%5UPQHi0b~XEpxlmFbemdVM!gqH+8-W2XCqB$mXI7 zq@}N{SOC2xWeN2?<7E^=E^rV)kn7?tf2GEUMv@O^-*Ohv*JPxk&2>cjIH0?`;wfva zn|dQUQ_;ru{4U7<#`E4~dF2Q5xQr;P;j2|$%P!3ZGe;Tm2t;HpN5r8ka8c`j5$nUi zBS=U@DLBNW4GpV!nj;O7+Xj&e7WikThu*MIhSjwXLq#OVLxrG9=13_p)$iJ3%worw zRfiz9hJa!GrCn4&_Dka^4g&3g3 zv@m^JWZed;bEwqbuLJ;B5IdmOD{U&FkVaz@C#aL$%wP@6kPKHdZMdp3fr`F})$nB9 z6NhF9lhKs>3c{$k^ltFx$iB27Y@Y3Hk)kk!U1}J{Pm3L%I$Q(hG|H2IzJXPF2gD;s z_G$6Vpd=72_j;!X)845}dO8bdm#0^~GfMD*hUv%79gt^mMu|RjZe*Q1fJZ=@Ki%2y zo>DJhu`LKNXMqc_08VP@3qpqm#huid%sw6PDZX*P@NSYS#-2wLN0hUIWt38-Ygc8%a2zkCVlTiCwv!t0;x85El$Dl zYx-{08#=_~ty|51`d*XRe2bWo#(j8h?yr&ZB+1dhz6{=kA3EPX{nUBUEAzXrFRRAN zH~xA^Mv>As_&o;b;o~ngn1{0go;^A}egDdh^H>H{(XIPN0z91}jVPP)qg^oYr7WS)`w{J@vSeWJ#t&YSK~>r%Ia2d~J3Y5Qpxxl7X0G>Z^QE7g z8RBovmwpF&_#KGocaw;If%*FVD)?vkiy)$Z0OkAz{`-&cpOR4ia_}F$zepDNpW#0* z|8fxTE}K#=)9{F@{?Rp6WX>BxMz{hC1IAZ&ro`;Q+VgDSk7q0kvE3QX={X-N(6ZtEirIGXIRvI!Qi%*L44jnjkM zR1Sl{1;ne5wl(Kimas8ROIW0%Qn?O$)AC?{RKmYjE$2+hF78I zV5zaRT!urwjtdO$up0;`<<3}4edWru?Bf|)VlvV8rl($o*ksuFdOZn$Sgp1u{hRKj z=2RGlQD@TZKA1GxiP@=gTQVxvKB^lSU5us~D`~jX0nM5KSxQ;sxaclXio)lfcV7m7 z$_8@#tO(dL()H$@i4TW#?HGk>zJ@=C@RKu^*%up3BR0d}Rs+9TUVw$0UU#*hS0o#k z($Z#>>6V5$s?#kl!|2_XN_MB_H zGz#v*sTSI!XHzY-D_ddRWsrv;G3#XeIU#YwGACveT^HVBXYL>TJ^t%zrA~oBKaqmr zU9j-+j^}$%mk5qthwdyXE1va$QayvzwFR%9A8@^)NeIs-Gg$5RqlyCH!9(DGMfljn zRw#RODw&zW5Md#Kao>;|7r>WASCJ>W=hK%=~3}GKUq%c``18Ga$O7aNavR zP|f;)UaW3^^<22S#D1b!kyEn%kAy4zgMvhbJ9B- zgZ~}2AMYBT*)6lz$(I;wT_P5LhLG)xmPrb&Yuw(94M)C^Hm_aj&apg`^YAFV)fh zZUXJjD}-~ej=)iU1cbT2`FnA{F*gWM8+xA(UiCi7>H45I)FTY#_!549NGf^un9yM2 zC7?>kRvg;+%(a`y{igM3)~G(7=O>UvGY86MFYg@X1PG$wLG zzvVxyDk&2Gi1`_yE=^E>U8>^#$u?fXGjH@WFAv`IUdpll5gvVc75otX$T)vL!4H9C zCWObg{_ygpxlfuj=l!(v7PcB+;lt$`)VXH;{3)FK@HsyPTi!bax)e+Tx_?W`*6XUW z_3r;=W$Rs|vc+T}l&yE5Y@zqhQng;IYIUZf_09*K)um|pYd-&f1E{Jb9Q+#oU}X+= z!e4`-C0HV2aPTWS6M#5=BC+=8aA+XF{LEAQTR6NNYV%6Z#RA@Til@J+8Kw^W4qKbk zHrynsya&;uDys}(Tj-fWLXXwB_s=5G;^y%0Kco!wyO3#KYnkR3Dbf5>%QC-6N#>t6 z@`{#Y_6#{@ALW>TpVt=7xx+iZ7yLup8VB=5dFK{dWE@6KWQoFblgL8Z4z+Ptm4$@O z6vUdp$KO58l&tV9Gt7I-P_D?LUv!gQIU-L}zk`^q$u1Af(-aOzAxc6|vF4DjHtS7y zmj1I5x+(tvLp2aDYpyl;)rxWW7$62cqFQ;Mpd@t*%>MR&U_6|;?kW+tdL8`MjF7^0UqI3@!?(VzW+-v{YSHX^JR_bVGoC#M zD0dEj(h(9I7d`n?gYK-plnrmZH@TcPA?7K1UC8QoPFM^DG@GxX|tGYm8^TY-8kdJ7{BUfBVXJE7Cj*@_|tj!2_6& z4u3Gel>QW>HepR_!@SzwU0$D0*BSyb}f|5Ag>!pO^ukW~RUr`)}vk!1v+BZ~> z=PxifNFDwgyzR1GV5c^J#b@{m+UH}*New8(7s2!Ie5~P;&10uQ0F5Li@G(R0is$iF z>jO&iBK+%wU{9aG2Z0Wm_S;dr+rDjsdU%N4J3K7m%9GZ0_67YI^3|;@a?j;gGR$T217+Db-u`wW` z1LWGtt$+wBHOs*i>#k^9HtB>$)U7#x+F_X;8ov;afLFYnzNQf$8QDRUt57&P-^sQ5lP5@I#D5;^-(z z6r`<4HjlAT3B^L$pDc>;_U^nTuC98!A=W8o8W`zdC{3!Mq;8EWF&_*{GYr3f$_NbE z3l)X|8{^ofN^KqRig4`f`aH6(s*5+1-eEN(>j`?GXu$_YvYT0k^#p)Nwb`c z97VC56GHWEGy|e2l1U1OfBSCdI>Fj$FkC8b0jt@=Dy1lS81}fAJ%u-Q_Jgd$U3uXP z$v%4q(zBwj)e2FBNir{9<1ED941+YJzO-7+4m1SmOlpGhnu$lnm#l(0Jmu<4%Q)bUQKg?}R$P{+;h8Rq(AC-)Ec z*WN6+4N@TYp?&~5KGR3r+tl-+lEZFyQd>xz8PQehHfzN)wazQls!?9{Fh5R|FVIqs zLA*i{RN)tfJ{W->2t4k88f$?lGDXrw>}#0o8IT>(;!@TdS?-EzO2H_k8}|H_7}aT? z`Av7qY6HSJ*RCkL)QjyAMXORH&$mbYebAVV=%_Kg$|kK~qB@!{Q~WTtKqzY{8X~q} zAAMDNlgryHtPDG()Ue^xGd_jZxnN1=I-r90{RFh{XXCCq^BT#2jLv~9BFfez?0YqI z?KzC~LXLHjjJ{xBK&R>59V}#D?&Kg}gvX_~xV*dadra6D+uIkw3C3}bCN~Vqns-9; zj4PkR&@ej~ia5@U6jm&3yXPy@%3S_PR;zUFjWFh60eaEx&P>y|L8RSfa1ky#^WIi< z!MJ&0UEGY-t&-D!Ig87&KqI&rmXku*HLPbM74)bw<2}_XvDQt3E@rC0LO5gmw4Ru| z*iUxC{Am%~(D@+I?udj!x7pVHw1Ti1Bpq%Eg?etF@}v;X?9_Q=k_2gFr_S@~p6EjA zb7x*4u+3V_yvV`=_XPRD9J6w&62e7SS?{Eunyc)NfR$%|^A>Cctzw!jXQS42+?wQZ zgav%dX_U798RwZ4i|YEHCxp*IxV1GFQtCPVX5sWSY`1$D6o1+g!Ozgvxj1HDv@a@y z3xn`T8-f?w{=1Mi;R|U9zFGbaY?r`^X|M}kT-}gY{if;GhRs6ZTx4ZY<+ugkvbV)VB zOpiL>)8R^SH8-Ro1#{ zcc(fAVXj^P;&dWZwc!ISEx-S=K1o%_xKPkd3G1h)5# zARLA|?P`PqnwbCyGT4&UqjRbk6rfxc4Trd4&_?r~s-}T##p0GYyoE!9A-;l5V-g2* zkZlc1$^s6x83iPunG_CD-$Jk0DV~xcU}xdXY?G>1A33XYQMnKeTcGSQ7&pU0RIGk~ zp#4upM}lZ{tFO%Ca+-}u0*o;&)hn=W5*CKv-foNPLdY49#GTcIzGF!&9+&mH*-Z+x zF?+u6D7I{@rkmZ*@%1Y_nTa;w)koM<;Yo&rmVhE3Y-ZAsc8Yn zYiTg6-O%G``kUP%8#TYBIMsm1NQkX#IS6VofM7yPA@~Pu zn|`mh7_M1wJdy6xcvL{|uCco8DBuEoC;aW7%@`qA?s5gdRB&a;&o#xjRJUBU+MUlZ zr9}}<;(u}7J`OVYEQ1TwYu5 zgD2|W{|cEc5m1Afma^GRKASi2SyfJ5EKpf7-N|I5uwhA%>Y<3ZvI-5{Af|aL4KBF+ zntv?9`!UB zPM7J;Ti`U^95{w0V^rta^0}F7zscnxDJr)q3Uh8DeUF}h??1@9Xv7?wFE8wuN3j0jY`uIS}2;;2aqj zl;i`1`BI!iFg$CCIaa6yL*p1DwL*=xn5@muR0DMn4fbrA(D>xaP`d;^N7tiDze{sa zN^?j`Js_pQNU?{s58GdtlEo>AUDA~stVFU9k=rCTUsZcJbtUMFb;;_Ts4V$QqD;^S z8JVGBd;2B1EUtKeoLEyuuJbhx>AWc9iMyax*@tU3x3$k`oTQ_c7<3HLUa(wg_%uLb z6IQ92%`%o2%OE&l`b{vvbW?A+y}hK+U^HXEcA%VNa*bl2ridReAtkoAXXXPV`M}6{ zV8jpjrj|b9zcfFlfb8^DZJAA?>)PlN2!pFtEO3OBBGbr!y2W)x!`R=-HR|*0+%rgl z{PbL<=pS}mkb|DTt_>nA*K2Jf`%9u9Y2(^xV|gMhn1~1FIKCE-kmU3qiE~AMV;GO2 zmEIp;WvjW?CF9Ly?WM8%eR<_oiSsS#YQ@1f|Cuy+t@$ZSGOyU4qzrHMxF%59wk$)e zx6Zq7uUQR$?18g7SJwI!H+Ctn_a>=zByH+L1Y}CF6kBy^N#H1G$a1^76L7!w|J~Nq znqcUaI#Mz(%gU+wO=ueyACv+8q6KzqUq2erqX~+OTwYLK(FV}OM_>78;&~TvO7Oi4 zOpi>85*_8O`LZa{z#pj+jBVejPLl$ciGUkmk<(d!nD_He+%-U$KY=`p1#o6pee(dm z#5xWy&7&Z@>RNX%SmgkX!F&b*!^I&590S7-j2PE~dD&hV?(En%>Q~bzB;8Rwi_6&P zZfun2&ZJ0YJrkIxsMT<9Ev9-%z7Wj8(z6~~*T|&_$~QIT?|%A3_kH?AaXMQBkZceP zz2qH#CNR|)EY(=Jypj&7TBp>mMvl*f3bR>v`2sv2qoKC9g-IyyCjvBU-|uROPw@%B z@eTStznfoYv!b6$%<)Zk;pPhxg7tNh(p(61NKX{NWAz!P$0}RP-w$eWDo@~VU2=(? z*GAbTUBD^wd+9+$MVqinQ<%U%@T~me!rfJWp6|zWS7C!<&-(ja*_rO1{RXrj+1yuX zeA1;ZUcvRV&6i|Xx`wMlzY8n3fY4E`XGN*9ICNh{#rG+36J-vXXSeaG_-^PB-YS4l z5$PcqiQ@44UF9tsr%X~)$)%{&D_2Y3a2Hymxf2B-dGGi4-V3{b zoVxpO54an--qs$aU@gOaQM^pR8t?4;z2(8Ew*=anT`ui{V9To>HOm!obh|TA7L+2b zf^j&Nv&661gBHisqMR&fY4d#H4NX%fE{c!C136=6srcv3_o2btDs;c$PM9_G-tRWw zi)bNyw-8ghNbxgD^BlT{dI&>3q@f;v+Cx2rp%!lvqiw!wrr^=GDoZg-YlbIj%;N&k zI*+9C+%SIFlY5mX?a8aL0jUi(vViEybR6_7wWbgivsoRGnFIFI_(X=R0RP#dP^ff! zdn=<)TCEaLMZ;beCP#KNA7ZHReaN*=h4Oq{JCSG?hHQ!r`~K#mi!4 z*}PX?;JK(!&ln5SH_?Q3Ycv`uTCoX`Zi~m5Y8&D+1AOZMwieX0P;837pdMX>+1mSx zsY~M6D65mqueR~(nskj)Kca0{s4M&@A!^H>21PHT_x+Bq~IF=r*fRCS7u0NO84dGmIhPWYrY*QNK8EzMq zZ6A3JX4^gHQ(z&in?9dR?Bd28VSprZK}<$fhsO{oIZlJTQU}1+Ax(N0?CCll zygK{!!^Pk@pz)#$?Dfi}^QC4*sQ1Jwz~Hq%XZcN>pJtPG@O73=P?v!vDx75)$hqzv zUzS&4yw>&YQ5HV-OK4$#-79f1(JE0}XInho4)nw*7M#+&_QWO}?GEQ+Q*9$Dx4Z1d z`H%DW?{+C<%8R5)qo+Mk!shYM1V%Bc*tdXbN#hn9*si^TBVfcax@Mr0^g0pWsyElR zvc0vt=KHiw&ghWw7}3JwZ3OHA>vy0 zfFD&1lsJdHz}CLM%OO9u`O^DlSE{xNnH{ZVal>EuSLSf*Uhgnvweb5}baQ)+y(C?< z{&D*OeMsh8!^-Qd%Uh$_jio)v>{^@A@GWVjSKrY0#3hggg_{xm3)$>8hSL;#S{quy zYG(g^2baFv9$o5x^pd1A3|_<-E#VwZ!++);jKJ5VxGi+F!%onmWU-V$Wq_ z=YW3fhY_(fofVscrC3HWcracG!;Zc?OFz$xN!4biIEZoI zMP(1L`>i)_jP~%8t))?L(RGx``<~ z^LrMQeE4;~_^w-|yA|s5j3gvKKsX@hO$L-N-t|}4O;1!_RF8AU3q~S(;$wD=uD!t9 zgVqAnM6FhTMzCWjZGG~ZCn@biR8BESxkgdEC)rMzA?!#P&A})$7|3Zh)0g>svy2jT zTR+Fw;)Mv-X586%LV5A+C!M_W1U|_{`rb6O`Z%I4QJCh(vr}&x&`$=~$kN>@NV-1# z8+_%by6S%J111y|!#r7(@O*bfu?O7YCy9csF}i$ze-CH6OD|{HHP$OakwQq-U%8C@ zJR2=%arjl7?ux&LXM!imL*xSw=$8+7qxmQ-^JU!g+8x*evhxyiY&^fy_B}lB_u5y2 zSGTb{&wh(;BmO>MpRlROp%TVMHpt=7&HTn8TKYjI?_=CBlleH3HzT;l&q~3s^w&KD znb;bCGI7+KY!bALHzE{Hmhzf+%b{$mE@ebir`>ANc#RQ*A)3R9E*{QcMAHn0uI=}1 z_JzB(2=97AjiEp&rrn^1pf!$Wvun&?Dl@nR8+=mbKh+)d{lyQ1v)T@N^6p}A_U`EP z)8Lm^gAW%c@821FC5z<3+s3bMiyai@R~Qd}OUMR^vn!-OOLFWE17-}}F{VA{0W
D`GW{KR)ow!l)H?Eh+Y7H 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≦e-JF2*gfBN)g z`~2eQ<>_GO3{5#`kB32QUr`;LO*hEslSIUDm9+fmv6L!Umb9Aa1pYAZH*q*}i!yB| zb;VF2Z!+Um4YpwmVm8-MRzYI@r{-G7jcPCn!^=vhf@oJ5ya`VOwdQwUsaD=-be!Zd z$utGpC5I6i!j)4US>h{IcN%yfe@NELVM#%xAJ0x%a{A%)ymcJoy3X%fx;>&#SwI~* zm}L+W%u9-CxPvkm%d4VcUS(zJCLrkzafDRx3&x-up|w2;#L#q8Absw=(Rtz9BpNrW z7a4-V#^N&81gh#Z`sw>0J{dKjmTX|pmHpk9HEp8Y?4<`pzW>w zo(2HHrCORx6_?!tnn64kwrR!cr>|QOKlaw@-3uE{x?w#kvqv9=`?%q*?$%{n8o=5? z8x3Ue=hY8KFyR-2vy=0SlUL_(=IGS^|&oxOiG zI6tpH&sl8QFfNKsa2&=2818a+If?%T*mw}Y#=Te-e~kVdO+1DGe_fA1f&%Twzlj8E zcp49&!N&q*xIrS^NDd;NqmJwFy($j&=OHQlEAv$zltWeD${v+O^)1OM{G^jA?t?BV zmP5R;XNESau)e%9fmSK(%7 zw~GTl#FRV`^6@uEe=V&!E=M%h(eTv0s2}0&;jHULB0Qv9U>pbnN2eU89Qh5EU(FCg z3UjK(IW^^z#oUwk<1vEa;K;%&`3MI=R8veq1Z#3WT4QUEqcmyjWP~jVLbqCNMVIN7 z_@itKBGODG+U%Iu9Qm0r%n}c`XLMW=RH4y4_kzMQHp;1dc(O$+h ztp{P@m!SS7V}-In>AiHFhV-CN2qWrT2s7I0tk?d7D)@rxa)#kmULF)El&&8Z58QJ` zjPlxP4jcWmf<$Y}wdd6=NffIHlr@YU$oj%eYMgOrFUru!w+#V!4f|zdNgcsf%tv~2 zkvk&6X#BpJf8UurD8IAoHL=&tO)&wgmb6Y#;a})ey2AG2$CA~CfP!JXxp=f0^KOKy zI|Pi%c&oYqwlYPIF=Id!?J=Ne{Rt};M7mX6oSdmVN5U42r0>oaFizkOO+!?4onIT| z+Lmt#1!gXo1+(rNpJqQHk)lfAAN*xok?1Ot5gm3|6QsL9*WbTD@LYFRLa*rjJU9Og1J&s+R>bE2}X` ztWdK$e|x3*l~gQ38{Z)({XHgr9T?whEP1O?_MXbDWFw`dZf#IRgC)&RJYqAY#N==L zdYT0Kv@gV#2c;ZY-lb}~Bxgx-=-n{CTa>tA$pthOf=E*&GhrU%u)+H3#UREfY?${F*D)C5QRt9h|KK!yX7=aU7JljX`3<_d3QPX4+$KL8s0B80CA3HKLQx;!_>4PVPu7 ze*o3uec$D-+US!1R^f+Y;oIMewVaF4Lb*%AO>}T5m+rF!Tz8sp9ltBn_+9Zx1KK=5 z%faB4pxA*oRZzWvon-{-wS>QjbTi!qouhzp@WYpfn=x^wQVOIR8Ga`<2V`V&*~Rv}q1fp0V7Rl-GcG++y@}lL;H~Hi#a>_pI`a7h6|_l%n5M#%Cq4xqOYkTY z$7K@a&_^d`*}ojTMPRltCd|{)*~<}RFDY6RN_qtr2U{Tg6Jt$w~|j=By9Pwchf3g)9LKl++8VH)nH zYxe!X*$00hE?GH)HiRYk|Cqz#-1GP1TsU{yJYi+}T$KN3(Zf!~H?Sd92XP*PJ}okgX{#_d+DTwzG6dOsJiRNR{e6 z&8@P$Rb}+wE9karOBkCpf4D^@T&w}FE#4h8@*cAU~L#{%`B1W7JI)26J%PD*Nd1wL(Y@VsucLozi!nx@pRHJ3;P*{W@@vx{LNv)I2cIJ7IYJ7=0k%@6%e85#B}VdF^@Is>G` zFwr0(Xe1LVjdi1F)|Ea|gkSA-qEfi+Tnw8^C>=vO$vaOR=@=MgiUFn^XPu0mIKxMq zB4S{ZBhOHz9WmC*f2E>l_oZkge$&&|QcnJ*A=VFyu?8MbA=WA!+PA`=&FJSpl0LHh zc?xHGAVC5&@HlRuie!lLdq`2O=su)|LS-u<6>WD$tlf71t^gxe};G z=4SQK4wh@n5#Uk)M6r&lY0%~Wa%wK$rUaSJW&9X{fA5}yWE$tXGw&kgL$f=*hn6Ve z$6=$U;@VFU?oTYhkP`)H(fVa5(CF|6xmK+^zTzz$mRHwtL>*g~o?l5vsW66(StV7& zXj4(#s{ORAYkduzpps8&ck!E(W~>JO?7W#?llb&tQM*BkL)cJP_RV=ka6>bFJ;6r8 zjiaEZe+HmHV7z4a286-w?e;JtUyN~bwc5h`wCi|=A$MF(7#dKu-(%WhPMb;_+nypB z8ey1_KpZDXpf2>8GMUs5d3qgKEtH#TAxDcvoHmEViC136SV~xyM#e2ASMgcqyWl=? zLO7(bBnL@=SYxn=^YRD-`CPi5deQDO<)BJge}uW-6nFaNEJLTM6HgDtun&1QPl`%{ zIt&9^G?MVEXto;%p!3__CjaXiPRf{*>Uol`t&{7XN&nnCF9}Mjc^#V{(4?-4@e8a` zN9zJ+C4;mol~^mb3&V={u6iW1%9nUjRE2Rp7INw(x4x4tVh$|Wq4ux3t&b^(+KgJU zfAlH}S0e4_)3_y^oGtZi8^k!NVqg(!7Az=UW+^m5La`TtvGpk|Im{>KJC4%Ppka7S zvM8@MHHfW=j)pF|(rO5XOw^=4OT&L+(&AAXKJzZ8(bes6*Z2C}|Fe7ff9(cW9l!G| zxY@8y_58{3o@!|Rr|kMS;C3JLnQ>ALf8{^0OV$FPDNloWb~>|O#%N`3AU|DkA9=li*<*i*9$ zdRXu^q+Ne72N*rQj&Xc7%L>ca`{1D(;*$gc?r4?@bA3~@DF4-46$89^#`Rk2Q9-#P zA8t`jXTlf1%Q&Qds<3#AW4w z+*$Vyvf>Y?ZnCqsl4D3_b!Td;LT0s7>|Dc0w<3b#8~a|NeM$#y{3m$XA3#2T+|T|9 zkNG#18-F+nSw+epKttyJn~CU~lP@1ZMmkyZemc_kK7^2J{JF;NEZIW}Bo$!{^@dYn zdob_!tMb`brFz-QSVafhf50{Gaa6Jn_Ppl_5U}m-t(ZZELBWJ`qEHSx2J&#Q1qrq5gY=2l_bG_JK`yofHISX^)W;zO-<*{p0@p%`RJ-rhb-t*T#^tO}ELmi7`y zkb)^iHOQBkA<^_8iz$tw&!$I7aB4RSV^|XtgbWT^_;_}@JEYJ{f8NgF*pr5SLv^4h zFp#hIN+qni#3_GmjJ`A4p<1t32D2N3EHzR?`XWaO8Vxr|eREUl8_Ac0=-sACAq&4Q z2~2($k-y3C=APklsp_%Ti>lve#s6bv8xsA{U4Vk0@rJg)u5)LS;_sEq8!2kzv-c9! z#;5P4tB2?`PBKAde?*aE9^Ym+200?rxH zu9VC<(q+`TzH3D&_U4H8mX~*}omO#^ELv!FPL~Vi3vlbHRc+R(bAKCS+@#4Wb$9Ks z*qgEj>{}weiI-zT0VBN@dz&Nj^RG}+;*$_=s*e^LHQ*hi`{M-|m7<4`lgQbBaPOy>AXT`|1mis1=5uOd+rU=~J3rGQ{b7X;dW zfCcho=5;U%f4$VW6>XVhRrWZmz(Ke|?BU>zNuai4wmyoa1nAaqvvf1_b81U*}73b4SJo<9%st0?1~ zo&dI%BIafAW9<3H(uMc@c_3HHrw@Y6*C`KXzMf_<_2mi#*QnesFkvw%cyjxYV&k~R zB%0QYe*(bHy}SuxaR*U<>vYV|I|$vpn<)G>fE%NM0$tP~)g=k-9}}|2PsS-cATjcj z>c|~Z2qDSHLi*G%Ep(z7u7w+5WFM&Pg=P5XlR+OITFf^P8)XuVVUr>v6-%62mCL9m>2v0>CNS%J|e=3}fX4O(kO)*4u`K9t|yOd3N{uL)4 zztSFW>fMl&;6x%}&<(2YMCJkb0(caDSiJ$32TO$g*%zq+|DrJ(GA{6a3zzipfJ&xo zK#;;#tzM;9pbPsoroU`swXS)h%&Z{#&yIZ_#$L?|cN ze{R_;6Cgp$=;l^LQXw1@UEuxlKI{z^9KcF^V;hX^mia8+0UD|~e@-dO zhesq@<;(CEj)KJSd|b2K#l*VLI<34Stq>~K6-Zo8ixieVL*8YQ7YupyD=ZDjlkcw7 zJE0-A7arAkk19f9ibjR8mz<^N=nxB6f4&Nc6GNH4&7|5QpO=FM1@>g@k;#-rl;LJ( zq_?@2>20QbuuB~@B6;*0uozKBLRj6n?^GX{6p`BneddXM0YXlO9HtrIFD9F^3YK$x zwN_0|;P!yEOSm<4=@Z^MZRsQqf8k&0JN`H6{KhIEEyY8u;(g* zpb4Q4a&@#o7%s=oM#f{O`zV$7(H)(>_-T=w=F$UoJ*Yx`O7kSnJZCe`{nEE%K^Xy+ zyyswqmUBfiMRlyo#uE}hgLl9we{?SM?55$e=X?Hf$XD)2-}f$;P+nI28$6HMLPkKh zg%%3vAi+DPWtj6L4AI@6%DX>8+mj+pM`=AzT#(euhQ-si^D`7LJq^$95(EYtgxx6=ml-`ht414shb|l%;W}nuiY8e+qSMJ)*Ay zIyv|Y9Tbps4@6Xc&JfF&Qi91?1!Imz9K7m>0OWC;x(a5Q(CTS7uPcb0YuATK<)3C7`QX;fRNW45u@wtJmsf3}r{sfL{P(UaKD z)bF(TM@iqNT!-|iM3j@)x==vOmC}srd(2wwR+9|A*GNMo@ccaU4VqWwgtn_9rKnu` zYBkx!n*b!V8Eh>T#+DmU^R%1nyM9jM!R(N2fY3@5?i*2-bP!gc#O^RMop|&{`ghQWMdjlcn_bhl5pNCdYem634%zzX}I&EHT1l`W}`%eIGqM zEaBnxo+@By9uLVBQdp;t$u~H0>z*~5)HC418cUmbYek``cZJi)D^p?%z0pF$vg|>b z)r(XJ8?jw;9gz>VUA;*Bq`KX3WE&fWx?)~+A#KYwf6yu^mOxrz$^^VxqH2I!Q~QuB zodoI|FnHg?!y4y%V*xU0i_OztxY9VGs;3%0?~0j|Ef{bg#cLCZu?_L&Bg%jqsi?SW zqiecgMP?$Nu_jVzc2a9B5FWa~u{N3118#wFh`uwWj+oHy!Pepa(dOyyhrJzPMAMvH zCz5gSeq9hQq2PjX4>trG=D0--oHsWsB1;(>uxk&>_k z?}L)^gTz4dD`Erbe=JPx-t6^`zhM+jT6XEgm0+^z>+CDs_p)%3#Rcw};|--(R)a!{ z+_a38)mp(6&9&O4`IASasrYkN3XVdBdQJAzf5Yj8WEo+p2n&kW$xs6CY`v#D^&Q4t zB9N5Sil2O7diI3z$fB<)XjS!FpbO@GNnq9R6&728i*R02Kb8r_SY#;1jAb=dWacht zZCR>ShrqX{lrPE9)y|WL(Yv}7ax$^DrV@1VkDboV?QK4kZLukDfB;1d78LR{RyVKi ze@9@WVoA!v>z)v7F*9!OWZQ|h8yi-dlOi#)C23QK#kK8kWTG^htf{jYl)T~m{R0Bh z|KmF%trJBBk$Fr@emyhKWb0B7$xB50jy!6M7a@tX*1*r}mS0xFZ$VH*jhAgvN4_#L zX97f03jfJaoSnHM$IY@N`x%COQ|!nRfB5Rg_<%^uPEslq$ru#~I->of7LXV+LTjZy zkp!H=>(qFi+OKCOMFg9EEuIr#uKdiOdc*7YGoUF7A;cKDg_P?I=E`-BaniT|XU@tD z?gD4!dc`@Pw+JY96npE={A-|4qd7;xRzbDf2UfPYfz3v%7uw?Q*xIUUC4Sz4)@0fbp8FK3cO%_HnQf2op5tTS(a$&(IOK`n46m(ezP)~T(8 zEbOTZPdnJ~BAddFi}=9h9JD|J@V4OjiS6Mhs7Kk0@cgfYAO<{72=`ecJ%iEE&TFkU z44#zrH!XUDCr8ak!?GwQz^~E>fAbJv11dA*yh_%E3P9Uf8NKI7_?wq<5SZ2n(!wk>*)5hm8ZR0biXz?sa^Aa0!~2c3U~TQC{}%qNulsK| z;LmIS?aN?o1D;+5YcKo$U~L^r2k;l(ZoG!S@VfsN{=)kWEPoxmebs*he?Q&?gV!7I z_bvQ=W(|I<2ZLAmcLV;e!{3*|+c)d*-hc+^o)PsLNPSB(T8Vvy)l5l&>@a~1D|1pFQJ1CXzwkww}B(XXJ~GKe_z92tPkz2 z!HhPby_eAL%YN`?Z2%3we}oaff{HKKf(_L4VNR zYiMr`pRqlBhW7d}o;SFP(9aue561Hb+k^JsV0$p0H@MGG{|&UahR@L68a~55W3@K{ z&g#wE06TdLlf@l-I|$yqeuY19w$S=pXl)JF9ARpJcc>CyYr%fkJ zx{zI@=tFk+H3fVKD7CzEDLPObUZfb>!#^oW>4lf`)^$YU38J-j({S+8{|f)YHg3V` z8NeK1C4zN-Z4f~JYXJ;vJ;1#V5bod{tih;)!N#Nind{>Me+C;^{}tAMgY|I}pz1nR zefj7gK~*?pFtb%YSKZ?HZzjaApF zDm48u4bL3lMamdxkgGgKTWsfII>X2DU4&0LnmIdn@pPJfg&#M-j{uuQ)hKR(1MF2= zuo;AN?jN?ffA`8rahRz~n-K&5dyy3}M;_}xs<<^~2&1c(d?)6&@554F?hTfs@d&Qa zK>D?+aR51TMwHe$hhGzja6fGcM%5hCzz9juD>DWbcks&7vA!SugI1?!kv=n(3e7B! zF+@r_v7C8l80BLMys1^10JD&cE3VA2DGd!=PNU-5e=gBIl@AXR2r9kBK-3TH&T?I3 z^aUJ%1PG%)@En^vMR8N2N0{sFvIr|?^J zhrq8of(L5dIbRf+tgNCL43mfhYe-ls%O>hfRi9~l8vIM8lsYpQ>lhB zmje-tpBjEXO5oOOO>=FQG{FzNo}0`>#Mmm|BJ>EM34D7bM_Yp@`vYb%7n~99kl-JG z$rz!sA^sZ3aarQEL$eq=|81HA4;`0J>{-#93Rc3jC3d{`7x2b;04pWDoS ze@0o=Q4_d~XDnEx%$-)mjts?Vc3tY`?0je^5&W7CV?eRG3SYz&FfdgS!Kk%TkFIH8 z450I%vSGjVU@#Itp?(;VOe3yGg>-@1a9QGE;GCs_2$iJ?g$5{CFlh|%Bj7+jx50r9 z35NO@v$@KMp-J(%i;?SU11;rwo8?88e>a?%tT1DJ;j&BdKm2~zAGyZn5KXr3I|uO< z1uw%0InZk7R^;R92=oQdp0SO>00n-(|C;KAie`(aS=O1NHO14K{F>6jA=}(AF@r6K z$}5!0vwT1BbUJzUZh%w({%da(z=45h+!`2qD&`h@v82(s!8TGuq#ad@50C?p#c3?DRS(zbCi1C}c~@B}Zq4Y+Hf6Vg7z~9S1CrqVRkl zf#EyK8iX^1hme76IgZAqL=Dw8&TQW8dw+A0Q?0erYzOU2jthHIg(i-~DK8=TG5Sq(Ts90HS@!;!C8_H;);(Jzzw6UhWV#Al z*08a24wJaUeq3~i<=NNzm4%CImZeZKoqoDKu2x1LnZsFmJ1bAd$UZN+%BZ*6O@Fp) zKoQo^7ug3~oyNON4s)>4Fho1bj5R?0N&?n%h%pT={b7mYF3oYHIFevcM!(jBY$2K& zF45h}B}xsOcc>`%?klvq+Qtnk9-nc6?p7{P+2G>)vmLMVQX1=bZerc1AcBS#DxbLX zaDQ7Hy1F2P`3OGgTl46PuUl@~wtp53G_87X``oyD)_g}*oH15AINID=(0aqo z1{<{D32p6RDWfQ3loUm z6^g#%B=NNoP_}sEawOz?T@r{7eI*3IX@|5P!iRwnDsLr5$~ikKyp)MI3vsr1~YL@}K$ptK}RR|bAL5~6gN%~v*(3o!p;wBo#Q zyg{&PWXZm@3oUhG|!7)Cphvy*>G+J{e>O z8|U>kX{z2hD{H|Fs+^ZAf4(5J(td5oBIZ)dBH8b&OJu(__kYZO^WU^|;>7+$0haT& zvuX}o+#t0tlntW^mgPK(&zOOzqe;ZpOSAHksHZ=~@bdOo@@B%NkTNY!m*GF@8s0zL z-a&Cc-njJe`RMSddw8JzLZGox^Pbe9MF>=$wtMDe1+>U993SrObw3?BO|z>4P752` z0LrzRo&iQ>g@3&%=HwS@QtH;GWU@ZUe3}HZxjkRj*Hn%+}Yy903DIr$I&Dto_{0P0(a5Fhm!>zd^myjKS-+7 zk*j#R^S9GRXf?N?M$9e-1HqEDuE^%$$IuD~z=a3(!tI^o1yh3>UCfmfmlRzH`2J3I z*@462)Q4La4zz8Z*tt)OIPT+5E?HK1xPNd=JD+YF`kjML>}{2h+c0#CLy)2C#~jI)<*d zqC8Kcs~A?D@KwWpGHbZF!<~bLvpvwWJ;>7Tq<>|`?F5+U>2Rx^Q*G+^5a9}s^5LZf zC}+-1Z)vS6%Rg)+vs;GUN_5BmQ;7-x$=3|~zAU(5$Z&PRMxGunLQ|)Q8cm%>7aexn zZ33Q}@Nqoe-`zew{G~x@cCV!@7~0jeIr$%JVK_j_MB19X4>w-vXD@Cre$rlkx#{~| zu79q1-NCD&^~rZy^PK}p^VqOHJjI|c)QP=zgvn~f>bBVHBn|ILM~vztQ-)%S1f_q! zb#*euj-g2mX^zP+h!|&87*ay{QR8c=VQAuwJV_{7Y!UF3TQeo1F@&3OGlxYXJL=8g zK+t<^YZfnftywUGIa)ART%5D*;$`C{)3{v9WnU*6%#h$LN?0>E5 zpDU9q^GjV*rkk2fDjc(s#t|*VP-9j_1!1XVjs-Amg*LP-R>C#Zz$M{e?e%heR$zuF z@pENx?)Nzq5B^ED`LHb;J#$v}Q}>KM=FiSiY}o0(M>7O`1p~t(3>)K0V-E~YwRJNg zS9gSDvwT09I7ozGCo~Fp`8aZ2j=?VYc2I$1Jo7wyR z$ljOCROewv)}R6ZA8`0j_&{VCzQedwNE&vL<`@Bi2;+}rNJ*P4Lof97McJXDa_niK zkkDziW36Z>%M*$+UfTe+hn1_`?#8B11No}C?pmLdbgsP-e?`*HwYQY?bbom{ejl!{ zp^h!wcnuq{w$AU@2gdt#dcXcsCI((2P2I23lSul3{hYddZ1JB4={x|}aeRyJ=abGj zySagrAVCTmB9Ovx6#y)^x0Fk1N#Y1K3psik4wmqx(>7Q9jgz+_^l^ZVYsd?JX?O13kq~HuN}wXTbtJP~bkWKo4|_zR=?Yf*lK9v#Vdqq&JjM>xXXK zU0?J3pXJUrqWA>%ML{EIt72Y-<)TH^KChDBQ zQNpfq8-{skwl_kUOn*mP=mr!V(Z5{snSOu6f6YAcYJpR|z^LAel*pKsoIuCi=3Iil z`i>-1&L6n zhZ{c_4Y)aQL>{!_C;H~7h<`0ogGJ1o?SL&h0sKaAHrLP#zWc@t@SNgr&yN^TBN*P> z5fU4Ce4|mk@&+9n#qYsjEr5SFHk!1wC%5r9iKcjFbJT2Zr)~mA=>;BMd5+N&3C4xq zAVJAUqa^4@c7G>iw29Ei=TIhbEzy0EK|SBq<&7z|KbM}IL*5jay|~L)cTN|x22eB0kg4y8?^22te)gZVmXq$G7?OXi#Z+b=G{`d>FLzN z>fXN3dvH+wymt}CkLvZW`nAAvP>UoFSP^!Oc%)zEu!4r`BJS&!^7OCj#yM6s8bs*8 zGY3&cRexSI=!4^QQYk5_)|w5ym(_0KdF-AcMKGsoicr+hB-dW=6nQsj!OV({U00@N z&B~lmWvRTTC84{H`TUyqzKDNc8Lr?z)bsn&Q+dV>w%=ZBYg{s5X2XOzbd->`79tI{ zHF>Y`Ott_;QPF9WAmX3Z$baN^c$r{w)g|f0ihrSdMPi|!PfuZWBw=F|iTJ5!4xsmG zj@R$hLA&lVM}%f_fJg*R9DY!=C1)C6VkvN7*QIl=4^^&wZ5@{S>2bssnYFZ;=Ml(a zUS#Bzz`TYL{G$zh)xa^kedHG=pYBh?`#6QxatxY>8m3`}KB6B0AUU0pSi~8cSE2u^ zKLM~Ehmn677XB4uhcEc@28pEG(1~Vc=70Eiq1^7%@MYiM3DvHj;Pak(mWg^8)|6vv z<~s=hN9x```cwbDIW_&Po{t{Kxl&T9q1J|PqgfFjraRw~a#0W0^&VgmmKJoN4%njR zC-vqL++jm5;#`A!DPp@JTw!1m5#x>Ii4?V-1AAY@GU8;^;U;>HH=IZ$ZEtIT{(lq% zidr;*@gJH1s*x5AfBap;FXL|u_x7?r_Dh1E@8}N`o@VKy9UVYc}zQB)U98DK> z_@&aJ3bSdJC^U!Y_K~6+0ZtuIgi5__CwIUzeG?nEiFrA`0BbbqWY8R3QdhuJFqY;7 z&B$h4Ch-Kf@JpC{#~h0^x;@SIpntSjG|ij(y58U^{f=JQ&3=A&w@(CmN}U795NVqy ztR#Q`lm)#Fzjtbz)8uL)nBLXr$5&lK0pBnJ<$ne+l=Ajj^N@~si>7hfxJ~7|K8kn- z{k|~=G5RCv;wSOZMO=P`adr9~6q&*|IO@~yT75a{C+)z_f7K4`eAf;X$$!5W9+H!1 zul@ywif7Ocb&0FzIDi2L>bxFxZMo5|~bn1vVi=R&S_ZrMli5&kW zz5t3GV~XN+0o6~l?Zf?3;5A%)FSrf3D1mv1kOlZxd*Ga=usD-=Y+H{CYJI5`^ta;- zn~3+azV)0VsjHF<%hf|o4Sz10B$ueiPsh6$jx$R!0wv~EsuU^Zs%9nr#<#nCjAe`o zwP5S7`u!i={zK`lyrLhmw*vp>-U^AHK2Ec!bWwrFzKR$Pfn?wA>Ob63;QlsQ@d9rI zfA7~Gy+HhRf9v6k(W;t2J~Eoi&(_Yp_b=a$V*2UlXY1$aU2(Q??tcYXHo!9Zf{Te^ z!x8*@L69SWM_`d<9BO7DU1n|PFz6QlsKpKdZLoe14-Vz{mFjZtg7Pv-kBu6$tmZ92 z9@-h%Uk4bOCYbjg8;4hoDq@O?tm~6%cUm8ZilU6lk#{mW`EX?=L9H#uiODIbva~{@ z$qSE3DfhmrshL;*(SIGm4*zMjhjE92auVhO+yHI$F2blk=(E`Z;G{81jB95G!07C^ z$@%@jUnjW1habGr|IkfK5tRWzOsVDX!#?n??=S|KrLEynSLVp19ob}KB0wCLaBslyN zJ4O66b^8GNj^p`%P8Dki-~K7>5&9m~M@1~Tqdg+2wiPQBBzW=(6wXlQM1Rt!bMXb&CE`B7D5VUbsDSVj zdAQ-z6u=Wp#5t8E7~&YmV)G;zaX|Ko)u3A<_n`#@`&5BFSF-4D#O+ET_UDvEVfJ7Z znOh%lWq8fqRSC|io9qjozE&nZj_$`$*jOfBM zsT6T&-6VuH@-$KX|NdY9^Z)*z|BpBNWq;=bFfr~~=eP2_2NcntR*hR6gF6xioO3@i z7t|>Lq$B7xMs^~WVD{6_=Jw99^QbSTrNK~+bNGx|hzl<+9jjYXTrOOTet!y+dZCHU zqfp|U-|`3io3CE^Nz}$%D^G@;f)8LYFNxj#d`0C9AUgv;jatkjUar3xP#!Pof;#l# zaDDxU_#YhA4`WVmmTtGJt{XRg|Ned7(;?HmM}6Z(QDu~Ac(S{mAMGrFWpOT6&g147r?}zUmg-*p_`HUQGX~H$e<;?z*&qo z=;axZ>v{ZTYfGew!Yh*-PVkSq#dNz!=fnk?$YHCZFyYQ zgm*)ssvhcQS7a02R5T@9p;2N04o{Bsv2h6bql>^$z_K&aExLI_J(+c-l&oyGG^|3V z;g5+6%lw0Dl&(bG8-EXX^@o)Az<8%4>P-End4mE5}Q&QNy^iQ33r2kvoPqCM`*_ zFWp=EH^GzX{H=SsyT5aCy19SU-QPS4@ut6}FxUe73|@H#+ke{9CN;HpxV5<#INs<= z5vH$z0-|^OM>{{Bp1?~y389jy$$GCn%HTow#7)Clt9{VL#D{r9`76J>fjJQyUcL3Z z&=2LF6meeOj?7xK3zmohWuz@i;J$;g1${P0yd&x09od<1*zG$PeI~4=ZTh~cEN;-* z%K!}p7&=Vx9)Bz0AYT6=_g(n)3Sc+!R@Ps|FMmiM-79Yu-suY-H=aLxBpEK!5x11@ z_*&eQ^iaUj|K znfTxb;0jSF4urhtUO(JC6c0DW!{tNiL8a>`yhlzokbgo0mh>r!pHD0*v#vg)K3Oxy z_)=JI+(474D%!kgxGMZJ=VlV2Bm(z|{B!L5ynZ2XoYvGfUqmJuxQ*P%yiAI4u<$}r z?`KdlqcE0m$6&W`!{AXT(7tXyK1y}pK-9Fr>{PnrV8;zkk#g$vKnZ)Y1n<*U6 ztGE=IV1J7bcc;-6T9vs@SvnLP%FJhI5JUHv9L##GbmeIE|TNA*1L z)w})Kv`hdyzy`yqNyfiZg+5RyR`SfGF&DbFTEJ^Aq+G(vC>Te53r8jP9v%|B1xw(m zkgozrrt2dALK4>MSFjF2A%ZXz;U(ZgAV^T+bAN|%tsMS^3=Lc&>g_bT%Vs3dVo{Zc z>5=)>MK-yE7iSmnCOubLtg~|jq#mYzbZ34orBNPUA>c;LU|^~P3fgasliG6>|4DY^ zyz;krW7v}tmHiaQ)$o2Y%lYkf(_1`J_|_1dOPi3J$QGzy)72mzW>%%^Fj<+2U~+l% z7=4Tm#iKhts}4|tGHPmC1`n@1pq`cN0ULdIcC#$UQG5 zJCwN-e+=b-K6{tsU)zY`q=_)P+{64PoVH8dZwVP?bKY*(z)xE$4J~^B?(Uy#4Sza> z@I8ao7)KS_xfvVA94Al2#TmgtCi;Mna?<Bp9IpSfbKT8lRa)AF z*QCX29XBNttqCWm=Cd4CuM)lKeh7gm6lo6=nYm;-IY4KOM%1eBODR>nAgN;BOW_+_ z2jCn=OfCe1^2c0dMziSN#&_uGDt{vXq9BGZasn1KYlda5a%iil9=r0L4jhb1RhS;C z&D8Y1R9VZ~**iGFOb^wQCrVj|u3Eb>H)Rg!AUe^CK?>rk8@Y|@)(;vn=R*5vlnZWs z8nGm<^hV7o5}^X7Tt-4A3DF<{tpLa};q2wPw;K1%>vdQ$WTb&+LqB3(_@mPk^?y7g<}IH5T$Zq{SGwZZH2%j-;3^)<0i`V1YJNYCqgVYm zOaTsTUlHTYS}kDX32MdkBUCGQk*`su%&Du#FJ-y41>H(+A85KdXAXt^;GQXWdJioG z7_c+`imHW2d#2(ZOe$-N`&3$6Qi>nOCdeWb8VbMv*2eGEE)9bFX@7JPPXnWMz3{5m z9@YUKD7~6RS24=P7Ji_s!X#z++LO9ldv14YE#0j@sk`;(cDLTr-Nuu;+jwqw8&-FZ zCLoCOxV5wSy8lL=2Pp?Y%>GNt$uu3kzcC$DNbY&wGcP+vYb>nq0z_AmZK4`Dkam>6>_Be{%Ba!|Cqn-p=RK_8HaJqo=OWJk2im;juH`N;|Nt{-G7Cw+t}{W=J5$8#Qt=$ za|{F9G(S3Gnc64VD$2QD|9X38>-g8BQ@gM2c%0we)~10viO+!dKYu*@bf7-i#mk^9 zKC0YatqZrcx3hWNws2b*Nw35J!paO3hl z4~D6UX8^H5ESRK19WOUwViD2y7;Ni{Z0)5?}sgEO$4=@ zqofB&(($UBcVq8;PX(nw1@r9TA!TjB8O-I}vo6palbYx1t}U3foZj(7F2e>&6fHy* z-6ca~T?)DDqY4`*mfozys$;4*l$(WIAqEbBz25q?b3yJ&T3^I6suJZx=O#*0VNK?mbo?0x zGC2?Lr35&Db0%90ibpi?mo`3bE4`n!$a<~gUqufn50O^bJDA5EP6F*vTLv-WZ^*R6 zvr}@!2HVn<#$iF-`EZKT25b(K9O2(7T7c*UvevG7jaqok z#ea(>65Fd&c>g(>1f|dHK`a*M_XKq~dejrn1Q{$X#k`)&%j#!Oy!6M@3=WSRPas~4 z%p&dMm9F+S#=*eY2b-t6KXc?+c~9~EcF&A^fKe)~l~YUJBAm7lTcXYh-Y$B(_!Gur zHi^{akHNADFX9{k{Gjz>{6y4N9vwztTJhTFLG%0Oi3;>U)c7fYR#CC=U6>Ga) zA|VE4(`EHAxBtD;2YVeGWj5a_ifIrA)v$kK>BB>tw8)}lWU?ibl#$nrRk4yu!K|;s z=Hp(OOVI*63a<6tV$8Gob}_CL03>w&k=J)41wH>BFRV{!rO>Fl$Zq0BJwho2%YT!2 z4A*xSJu;0|mm;vi7Z6KwSIOb)fV_s6yxzotScoRT^c=suVo)A`~DW}yT zhnEER+Pt>1Fb4n=C*?4gTVJ4l8h^t@MdLEg@lG5g9vY&3aP5xEfH6oZ@(W$7o=3rt zDER^^`A9g6{x(#M>b%=sOrR}(`MF8xh{TbkR$@KUrMZ2UO@KJ3;!TTHfRujm2{Suh}vHY5!!^77J!0Uoy79nn^}>JyHPsn7D&7={F+e9 z@^UUcO%>fB$WKQuB9zpwojFKlxJaHzcCih=n`w5jO71Aw+Ij${{O8@R9nU=*bT`ll zn^h?o1C`9{cPE}fCMBU3DStXEF>-dKW~)r9ApO>>6gtoW&*B2aNE zGtQdC)W z&Rb&$K<30(HE%E#$kDvJ%tU}E7{IqqKPU_=G&cZ1%gYIFBl3fEI)BlULG(cx8E!f7Xv`K(u69RjK!06I6vR@iw*?$UKv&Dg~D-;2R*o zAUB6IUI5rd@hcS6WiAX{1&wJ?tdiKYs95~g^MOH|R)`b6)qg*;r6H0WX#Xl$UM>X^ zr68l&nKXa+53e>wNY`sDzzElwE)_krd1RWB4NuTa#gdnxeek(&aTh=rM7Os<`cRBF zLS(r5ctV~tr#{aKg+rd*!8V1ZbUsGO6#Zv2(>8=s3q7|hv3#XizWC7-7*%glGjk}8 zqdbPVL`5Vr3V*l>rS(k8llThlP{;`tVR`hqbgeg3>Q^iqW6uj3*E+}KpJQKG7TYV6 zwk>`1pIG{wI=GCcQ#7wS%^0K+T>O?TL6?j1EDks#Y4k@nCD)r$8Noux6<9#sa)~~s z4-bn$8XcMSxy~Y>JIy0a4wYVOedjA+8%GXZ?@s$oiGNU3VQJr~#1!))Wr8a9OI?*)V&a_~0oq~fzUX#d@ zg2kog)eXRme9aaOokH4X-Y}PGABbb^-Ij$v6(0W$FDOWbSVUXJ)B-ewQH4hj5?wLo zGNY%|d{X=uEfcPcOhm23DZpARxhe`bY7*X|vwtQ6U<51pC7HzR1a9YCXcy&W-rUoA z8oL<^mPu*j5y$=%{IR?&+|HDXQfkvrS`=gsX1Z`NQyxr8gP|>`?PrS{+ZmjOvvW)b zygpbiQA?JDYa%6ZZe;{MOIB7;8HaJL#Y1L1Pz-&XQo(6EGPr=@ue-4vd2*8L%h3?u z0e|g=UZPX@}B`$exjzIdr5<$>ws&HAHK`Iv7uD ztg_#kW98Op;)bCF=(xf0yG5`zUtT6TaLdF2*3II~k{nF}5{%kJwJR2I0J@bJ#nS{p z`WS$r5|S8M;Fh??hRs)P%xs0&J32hsC4X7S?!iY?P5)Y(g%lQ74f|^2S2DSIV>iFQ zN{TYh(HA*ROdT($asKEdAR53Jkw z+v_}U{A;nbIrhX%kaN0J)aS2wzpC!C3zO zA}KM}Qjqt=FaJ6wr?tGtKm4!Bq<_4INBaBteHyLE*p|vc3tfkC{SK5?1b_R{HzuD; z6<&)%4OQyDZ@fv>GTFGirMQ;@^+BJXu;stkazEF*XM)ZcZdi>^T$3Cb>#~%{h2bl; zJ5X_->i$DUgvY#kmPw-WE{suRXl2BxUUlYBKim<>;NH8bU)fK;y62pv&Vai*3x_m@ z45;`_+6LFfIDB;=uurGwQ-4%Y%Co$S4z*vRsZOyVZIYSjp_)Lc*!8N=4@fR$C8y^P z;&qv0w^B=JlZ~@fTZO0K7D>K6bCGC1%ggT5=gtJ5w58gHva~?1s_Cq2Sn--cXjoO2 z`*C>BcR*j>4gE($gPybV*$32u!R)qFOD={jqAx>ndtg*dY9Um&i+`x`@E~7N)ED^` z`A>IIntfR!10m}6&4wwpIM1f`?LGNR3;CLcBDRKn@f` zj(TupAu}H3d(;+XVt;h+!<=;0VdgKn82tis4WhR)*Ci)(u{nwOgv$6Qu%A&_$l#<> z{qpD|7kPFM9CqMnoaFe;@s1_7(D3bg+~*IH^GDyi6SQ3X7@kGJD5$v8erzQxmHv;p$aiN0jKHh-zS({7|XXT~F1#$qs@ zljkzkNkQZo;y)BJ|8*8klk#r!OO#AeUPb{jnz_p=&xJZaiZoJn&e~==mHhsS(0oC0 zMk+6!%31%{@v(EcLbadIW#^hXrfPG zEYg0BYy&uw(YI)7j$CgG8sc-Y>A&NFFSG|IzTXmvuv8AvY%eG1pPlwzKpNq z@$WEWS!$9mdGC_hMmSgdS(*UWfh9eP^CX+FP+orBV&-`p=NP&LSFM+3UtMX+p;G;d z!>qzAcdcR!2i0vp;AoTHZ9d{Cu#DG#h*nd7YAJuFhJTJk3I_apAx;*p2azuexXl1q z@2rfbR_~}d^D|^#qW4pYW1H6M^ct@A>ufstLHOLw!l@Ks6SNJtdtakGbsc20J20wF zj@Y+zMOIya(61x(#{Slcn1tw1MDGr)YR7B_m4P$QpW%>Pia9u~(S#2V^|JTj4DZ}o zHyrp)%YRdmo7@w}5zKs3C=l2)f|aTF6VCi6GE4whHl9z~P<-Bo;$sUmC15W$)|61W z;Mi%S&X(irN>@iQ0z4Bv0wSs{pj1g#j6%;aS1`T?>Mp+cJ+Y>_1+=j7##kA8BQvS* zMWJ&B=;_??kJ~QoxaHDraPF?&#z32V!~-J z*9>jXfb2+%7`5E9oChD8z5NB+f$xdgkQ@-Sy*oM0^efrDY#h+szWBKK>nxt(Zf$Mv zqs}m$-HO_yvxdU+Kz1Uok{xLW!|?LCT5KXr@!c;`f^G}2GSI*J%qp#YHHj}~SK&7Q z<$t%^uzNc1Z%F0o`};)&~- zjG?%jF(L@TiQG>Us6IkpQXVm7IQrXlegZ?f4OPi;T-*Zi#9P9`K>;)zz#DE2edE=` zA?phjEGdD0Ge9(McPoI_LMJ>)DbP;-8GrI+P4{T=a>I8lG_HInx1jmEr@MvzF>>>% zlc|ZopE{f8dbtX5hd@y$7$YnHl($-ciqnHyZw*?c^adUh_^UJ)EkPS-w<=tKQWYCT zf-JnJD+%uLUwgmoZtwiOd$5BB1=3GuSPeS%BF#GD;||60$~&Kq_c}Zxz^fA?8GisQ zy9Euaw>FPx__N9D_8Fhcd_R1#$O#X;8L4m(B_%C=l< zS`74@M;et-cw1KRK+8b=nm)r%TH?i$emPfR3QHLnHq2WC+?7D(Op=U5@kXGg#G@#t z?O&1jz5dlu0|5z6R-|zUj06cyR)3~A(UdgXPTw#3xCSND35`SOA;*sRU#vCzO0TuCp15e_3r+}LEK zHltBYmX({4%ce>@y}#`I`uXJ7lhd93&pXG*hsXW|j&m|Cf)n%A!Qto4Eq}CcllF!F zWdsyfz=@cFmMWsFm^~Lb4k07i)~jTW^^Y|7n0pOT%y-4(skBZy9NU&YigTLkBn5?6 ziaKihoRz#1BaW*AEnv+IflB)<PkdmlGeV&W_P0X?FsZFxOfRpEZ_OKQ5SR;m$G5i++4~II{}iQ$)#G9_1MNk8xsj8(k#8 z3nel6pSCyy385yo61<=fS8r}NhMh5MH{})O=h?-qC{wgxO&IAOs}jt=*3>)aewjTg(pJdCB4fShFK%Vj6iv!i!Blm@fLK^fRK7q zRGptG?ir&uu#=!dy{^|VcDwz3-7tSVsdSK6n=ljGB^C!>pAPVy7<3TT%$(s-4Yqlo zIA4IVQ{#Ele}B}QWVHOKFQnSmsi8-9eZRVNf}NuvjNi&8y3_KoLB*xoaa7&w<_&6? z_7abl0W1Q;;*@f6x^^cxuUpKvLQm+}>*)kfJWw$}%u^QL8$$sCNmFjQLAfRRxA-+Hi=H?939`w4#2sFF9&8I`m!_95zQeKF;7%UwhjM&s=( zUl2oWk5bL?99^bq3kq(lt}T{_Ho&?SM1uKI{D1xMaQ|rA+Ej(A(h`QefjE?I1zB7| z#SZ!ypdPB@7AaAgy&_$4=m#<*D-IV@$1oB6zC+rXvOxc?-aoShfYnm^I7Yq!*r8q5ed+rrf{viq|uMU_PF5aIUkd7+Yty{Du_slnqLMow~=yoX|u z6@RjD8+l@h!ZdR)#DVP03UR7wm9(tu#Gs@w z1%g*6UYbTYl&SUR-k*jzCo+hF!Z%5W{LwlmPr5Hld0*z@zQpMAQ{X+3S|gWajDO8l zqxQ6@39}pH+Vc6~R1!p0RHxb;m+5+1)Ne4Ek(@GHIUc7_R-M!>HJ}lxi)RY7RFWmX ztjMt%e2iIq#jdErL%FHKvjt!9B*k8(7JGRHrOuA0P1y_to7acMa@c@H2;>;w~&e64*a!bmPnrK4>c zPBCs$L~q~tYa2*e=pkrxxSC@t5&bW!UfS4o$5Ho!Sf`FaAByUKAwm=g9EAuA$c8&6`)R1{>?IU&(|rqLB@+T9vXF6PsYx zd*i)-|9)-5S8v}BtPg?c7V`;j>*I=` zY$m~#awExZmzQUHLBjB__>5zxOey@c0^11ORSb$>$_3DJ@<&&<%~{%)myJlT*R%nc zcd4Yc!PJb{CY(pHr@!6MiBJL{^f{5sehliy|@NqKOk;w4rh)^dmE?Gn3 zOH`!+zeRjNgk-Buw9&;h8;+-#gKKZ(;@FCF8PAV?bLU|V3HhR{FcmWjFIz=S&mf^N zh>6A_T|yy9KXoZ1FefH+NCn||fk?}Y`4)#?-i@XG^%v>gdw&yNu>qc5DomfayewLP z#kuj=e)Jv=j$5=)lvIIDvWFy%CD!UQ=DPqRkJa%- zO%jh|v!(EfY9MbgdTS_~BP6NhsxAdQF)98O2yN5W`hSs7^Z)`7!nw4?lEhQd!{FvU zGjPYbr?pj;(Qup#Nd->BOeA#@{1)rXB)Qj`tuGg5Vk}HE3}-66b$9_WVLFhE7R_9d zI5I-gbw(B3q~D12ONz!MVo*`tL|_`6r@(?UW!&Q7g)f&9NpvyG(ny}2do}Uu$?pjn z=UU>`Tz}4z!7RaJ?xvX{SiKjf&cDc}Ur0H{v_K<6X$fJCll>#F>k|fmf~V^h7)OoC zSc#$7kl5y<+?3ej+*xQl)QR?DjM7sTKKHUztZ$RwWnET{E(4~60DVe8km~25#+eC= z(U|yWRsbhxYI$s-wyawu|Bi9~sTpd{cLZD66@RNmfruU+jAEE+G^OHE!HO7RdqxV? zrVFB|+zgm+@CNhLlBB`mxJ7}{#WcpGQ`CiVP|0RZvQ6k?Sknl=2!3{*XpE*2z%yMT z9z}I(Rq^2klDV3tJTxg@Lm`=5AcO=7C@%zEUKx421c?0M8ejpjE$O}DVhmkZpn@2o z>VH?bfLZz%sW{uB&*agNdO&(Ll*3ac4(2CN8YPhiO&xr#GIo?MNefi3dFd=o8!q0n zS3+cyY!<%L4L(78P}vmbS)gZQ7Pc~&oqP+tEL>+s5wkGyqYFR;SL*Go>}tP9n)E1k zze_H2a=Ll?>E!d_r_-ZPr=O2^PEL<^w|_8WhY-yS9)0Jh?X9B@iCR0{dB^A+;W|M- zfi#+Sd4B(a@$4R)?i?R%?un{ePV@qIj^V4r;6;>&5}CkgOjr=Z&{{YJ1z)d|X)G@& zM5GcOG@hMWuewLR=@qF`KN6Koka7mrDHakt3~iGUb$=Qrs2b}@WnJ8WWIY`#RezyI z&(eioHyRxhz4}Lld?!06C%cCSRS_$K5p9CG;tf}qF!A!dRu*vFVk^nRo(N31Ih~p& z^K}I2$MZUAX{Hn;T@6>YDdifVK^^(HDa0=keyksP(F$`C7-Tz^frE2FLN1I;npCN# zq{lCP4!$ZQi<#GBP!|#c>Xf^rbbnqAq9coZGmI>>y34Ktg&34Y%_Gdk>NcD4EHoU4 z@wk1V>x**_1IMO{s%kRPHZy3Bw3_(EN9><9aFvfL3`8@!M>Ug>soqP%n9ScC5+aH1 z@n`uoNFOO4@ECeP)A^$e2!uNowtE)dPgN;!!{~|#_&1nhY96eQK3@C48GlFLj$=z*#%+{Xn)#XM_A~P@*YhQkwV7bD1{)Rmlokvthlud$$!HlBzh5A zmSDmB5q2hcd&?ydGu*t$@-nEJ5f|pA8DSN==pP@4IUO%I!vyvuFbS#*jj-#OW5G7Z zYI(jD1KQW$m*gm3vx=)6eaBGge41P=W4mVzPhx>9|cOV+C0j!h?zroif1~)ecCT zgw5pjYoZod!w%CVhJWNNVrflEq8d5GCeSO|`_TK{%Wh#@&e7q?DX=I$ddRnS&}zSm zK8MldPMFm>PIeN|n>wpJ3`U1brltBAC`i9n3h zFXAU4B^e>U!QsthLcL)wEz!s#RB5;sn$FPm46mg^8g65+e}CKG`>8B%rOYntnRG>H z(-j#|r?dscoK`t-2?wyB6q%;RH%Q2G=dimd!P&ro^2T1H2l!gQPo+$>QsDJ@j>34%t-J#4QCAHv?_k)7bvdL zI%{dZ;ytGB)PD#*eH{whY9g}yNq9Y?q=^T!8$ph7aEv)?u(IOMeg7U42#Do;A8z#f z%ggfd-OGO8`_Ah`SYJGq_{b{6M`02kK2lGC92I42R! zz;mJ5TYqDK02$uga$T(qxRJj@02{~eQP{O~FBsD_B}o*d|*uDOyy z7``h6#HW%Y;=s#Kc|w(TC;QQ@tDPl;a=ak`gsn)u=S)_GUe`Zs#6AG2$Y?q1zvQW0)(m)n+u zS=weoiWw?b$i7&jYaPp$fiX(dk|f8xr8nU}UEecR0s?VPStlb&xjSU$i+~I+47xlm zeW(XXMJc2xc!7%jikaepyKZH!Tkjy@SjI+Ky4Rlx(l?WoHK^{0H1T$Q)g<*xS--WXujS4K`>0q)Gv>al{hBX}ER*EU7g4y}s7kIea2rd(%NK0&-FgLwaD2F$Wk)gNm|h{n z=JIVt$OmQ>a)Zk&T1m)?LZM=jv6+oY%gHqN@4oH^Vohw;7_BCo@$aB9rdy>s_%*Z` zw)H+-C$PxZFL?4xUxndg09>{_Nn>Aj8c&EKz=_wT)m*p+k<@PC;sgI0lTi^|OEb!$ z#w06M$k`z#duIF$-=KgB&v9ga*5ow|5C-*R&gf;zCr*4e zfL8e5I>tf98ifm@w$d0Zx#X}+=n}9e9!GK|4PVoxLiBV*ivr#YQu34?fhi9rinSh3 z^6^xrN^^C91x-hH&Nd#@O@LM+%%PuC4QSgdKTXgMNpCuswAw`+I7^eR^Fk7K#dJ)Y z47c`&_J)bYEJ=4OS7KcMRD~mHqCXlH;Mj>LxkDnITt;b)0JdEp^`WrU%-`{1e_KQ& z;)5~c(J>vwY(uP4`qjG+;66rG;vN7$Kn#9K?GrVYN8fh0aQO^spdG1uUXttK&2-e- z^)P9lNYJ9!cWOza>X2HU8d5N;Buo;c#P%2Ut#Uh>Lb$~=zo@KRyJLW^R=)iT@EM8> zqPJ{4MyJ@kNF@Dq6d0JjMw?NF+WV;0_Ix9E4uNn4RIWIWjb?49QFSBnd>b7vF#~^T zVs6E`y~evl5I%c0j2gJ_m&yvGE!+^h7)7;W zrLE><2EN@9UFBvv$9JW+*rXg7K+zi}U4bRC7ik_q-^%H35<}1eS2L`oHHPR>nS~b< z*1V;7-B&N8CSwoxZIEwZw>gaHj99^NR{gG2QR2D^^pS`dCQ2Cg!O-`Yfgbc^{SH_i z4B7I{_zg(lbAuOgD-)PTHO=2y=x>*jS)qQ4)?S zJ6vZ=@*a)KLjKbcR7ecdMV+g*9<7%VL7ay)wz}ZbCdbF)|AuH>pln;fJY>&g{X~n$ zXW~YCdQjWQ*_*^C($TC5h?NZGLL*w@n&Ll-kY9^``j>=3AMz zNjwPz?VUs$6UKaknJp3>#gi@Nbjl}O@3ov8a`REh%NY(om@TVhp{Hg(JmSA$IbKMu z230XCgcZubFhWvv!A_{rENdL7&9zNlPld0099cN^*rftqjaMe3XOS$3xupn5|g}$nUoz}DT~J7_0g8?+coB+ zWnutn5f##=dH|jOevqaS1~M1U#puyz{f&0D`?)h->O)ykq44gdZcFU;Rinp#SuvLO z`Q7=x(_J}fz36_oaF@Gk-vhOq@u*KwvKDf(fEEum;7O(e=(oRrm45ELgNx+&l^ad< z>$xUgl&dnfl{pUy)xj9~Vo)u$7xZ;eD>xWXr}TOqvG$BH*j#QK)^SBiQu99EkThPu>hNG z8!WI-q*kXqV5C!fZHjIa%u+Jv=uy@)z|GRbR6|jna#^aDu&uw6)UHj+s7H#i`fV+l zcMAn0sEDC`8ly{*0P6;LEZr{lQdQyW}v zEZsw8i^?{Y-ZmRnT}L5vQ*=%Y&Cmi4+MMW;fTa0rK)ASK#J5`ZnEB{x(yC__itVwI z(B%ZcIE{4z+1*J28euGJ!>$&%)EsDEmZ2EBZQJUas-^uVtm@^ptGw38*pnibqavb0WrGJzw)96 z04Co7+4;mG(CVa`|J-4673k+s_dlpm{Ok;F1(GitZKt`JwsS>qENH;NHhoEMq8M*o zD=7vauA&d`e^>Bg>>rM%6lvplAYinoj3ZrkG^^0-R>Ji%ET)4&$C@p?a`p@^Qq)|c z6%TML;KSdGWdCYctEd={R@V(32A$><2S68BsF=Yqc*<+G-y~yU=K`Ok?@Lt+F_m-gkJ&j}mBSY1#0z>G3!g`+JvzS2CYS0WxQ0 zy#ynkt(H-cx(9Bb0dY+G|BhHYs1?r5*Xq=7OwU3JQq5O=uyTt}n6(TSI=zG_XY{28 zotS?q>^dF1d7@)j`IHQW&?lo~;Nu`L`o8!P0tXmAkLGfR#*Y?{T^BXLVk*R&di$(< z9EkQzdjWv~9|-e&qN{(W9~GQH15~h)tS1j!e{bYG%~bLTdHoBD=EGxB0bw*uR~KZB z$@HzfOTp-lg{>!iEUu_IOFW&ys_C+fb}rgq2`6GW1JVgiOMFNO4dbUFJ^^;9rD@n7 zhv9;8{$#L1$(!>Oq)KvC30)cV8J8&aQWi5m34n5Sj;AnRQ~^aym58ZR28^r?h*hX7 zUc^9**h>|eHSo5t?1qFX`gWun9scwBbn?^`sqX`Md`zyAgRYXRNOCPnT#5kdP(nI^ z1MMP&LLMVq$fFwEvEi;UDNbI5xh0cxtPBSHcm2#qM_ zCp^eEZth0>N&Rz}HiCdE0$`-CL+i~ZCKjk;GmZWxb#Xe&$#Do=Ubz6adAGNCIj^qm zcuu4(1h&7hwUU%9E6S7FDxB}2rUsdG%6a-8^TxlhE>J zkfbyg$p&nxR84-eQgd%Lbk$ zN4O&|A)uKyUr(Hw21p$iLi`;oMJVko_2!|_5aml>3Ux8hjR2n(US;@#^1dp>rsHGj z;YBd-xx<_mDN@|6c0w8g4f}#ChEF{ErQ>)7LzjdQbI$@JzV~76gjc$umY#5^@k!@o z3r%sSh%$V{u6t0*Pcz2bBa^inBo?B=M$%!ZM@+hn9(Vf-9RPeBTW?5JW*`$c$WS+_ znm#<(f~b)&0IDwzcKA_^jH)nQPC~H+T!wV)hM6AagRIbxeF00ekN8Be={7`fCK5}3 zpHs^*$Nup#%7LFTDgO3~Es=B@DpRd{@*wXII;7}C?UD3rVoE=+aq05>-7R!qz@Il& z8C4Zy4}eaI1`uJ0YIDySNuvyx^%6A|z{w7oixcxM%-aZez(AjIFtG*f%eX;G#Zw`*M6M6wN{UZwWu$_wk16S8@nNmQm#-DP zJWMmae;Gpq}WGgh{|Sva9(iB zwDt;Q0e7ooNa5YhhHAKK{2XtWF~AVjLvdZA6Fy2;b%og126}C<5@9+g?oK9l$EtXSAlx?)`7&ot|U$ zt^VZBo*=(83Gy$HgF5*64JE@pGRZlhJc9+;0o-E?Iy>WB7oq&8CG}n7 zRSS@ujzNiy1}mBeKnG^CwyM0*Zx%# zDY<*vMY_ooN2c243%?CYGXL5jSV6EJplxckiZGQ}AnZsWiA55t*o~p}Ga{=Xqqyxu z0lK3S^ibpcDcs4fe%e!FM|dDMI!pb{Vb2xQnEs_3M>+jXu-P3s7?2m2;T-;(`gR^7 zs!YzWG&nF{G&q`v5gVd)7^g_bNuV<=fR~%Cbo)^_bujf0rK@h{-Wi#?r2mpGiGqVC zYKFF~T!-`kGIIw}Rv*Xo+Z*|vJto(N%}w-IH2}Qa z+jw02q7Z#5woOTkDXCr388LmE5fg_d@*Mt{IKd&c-$>^u9VJnU{gi((R!m7t0%ijx zK~w^rURF(mScS#T@L*>637H75I3-TUFwrOyh+^JcwkPRm*nn1o`Q`T!LU{-s6RR}Y z3b@Er;+5AYcnkM=G>HM!!kO*~G2nU<8g?wurCdgTaTa+8$(48+T!#-Sou4FOG zfwWl5_*X6zB7M=gK;gO2okgK&~wP{b3DXO|OGB;To1#ug` zcX^S?_QONrJSc@Op2)z0yMpS(BrBT&U}uX8)wrsyJe^=!%Q#%44JG8<=qY1{dQbxU z!Ptq3dickRfXP;3Oqjl6PL6amq909=z{xXPR6(;V_IZWK7j)JPb-*q2aOAP4GCvJm z3%iLCsspcd`twcr41H^|7sx~L2w;GYw3X?3t zikB7SeI|A!gf&JEe{weI28r~OT;Z6=OePoYdwmN@YOwW@m#n?;8Yk8x-b#oo%t`n* z9H&G+us>y3Jqw#UDv|-_CU&@|U`92udh;f4j)NDAW@vr%jsSkc@tj6cd~e34Ll_UP zp88_b@};HX0OAgWaTrlE6(%F-I(1znBG`ML_UN^s1o$>zH76V+%U6EMBj)qHYEF(2 zR%D$~1HPE2^7`6pOr2-b1d!)f)VJz7%L%>P{SoAugfc^5VqVqcEIRzC4Es!>uB_hIBYpr=TZdtF2VX>;L zwjc9tTZH4pe{~Nxb-xzPLq7akxF7o{sRS>m%MNvXBdVu*tZW}o>M*RS$N9w>N8uQ` ztdSnT(-G0BnX5xarD+*?Rr zHXtlma=#Q>h)}ZQ+vHey-Uh|QonqSpIr`6_pr%n?yNlAf@uIUYNVMJ%r{(Q3P}Ttq zfaa1WhCJ9+swG~&9G{3+?TJk4xN2rq{!5*HtnI>V>zp#6I~?drav@*h-go7kLTO(( z2Ei|S^CAo)Y|wStgKd(z05d>^r+FH zYRi9zza>G0sWP>2snF>hHvKTR^u+L&>-aKt49yHOd@aqnzyD+JH39`D9@WCU7pAdvt1qn<823y%tiM~*wQA!ns=)XTL*R!JAVqB8pTD*!lyo(H?xy>j%d z4gRVba?^sh;PDPhv+IQ{$N%*hz+BuFfw6WND?VlzQ?b2~BjZid*wk7hvzxaD*52l& z)eQG{SRB^_VLEEIGrOR%B6BaC z^{sJ>!-u1u4^Oc~8q&2AO}}mx@#fxG{H3^7Grh!{t6di`V+O|THN)SAe`;0l0-}cd zUw0VaB>BO7;VCb$G-JNsu$VswQZmlAalvkbQUr-cEvLfVjA zhh974`xDeSRnM+`@7JoI>#c!Czq$kBC=;ap1QpUv)WschO-`w@r^(fcnP8WTMtm(1 z+hS!6>w>#!KmILTQL(0xFe7+bGyJ21eLJMbvyVcwK`ln-&zM)~0bBt?%Z<1{YvbBK z@w7Kg?TocbR7N7iMN{(E$-U-Ob!Qo6FWBP#M zXpQEJLH7G(E~aU3>G?0rVjd)OW5&pN+)^9VY>_%UE=R-_hn%nIKEu&%ER4AR{l9|2 zq9K(oJo5Cwi9UI>!|7ImQV0uIMTqTQmfx0b7Ka~9{SM>$Mu4B06({DY9;Gqu#_5^0 z7F{qHm6*tKMw@kMpAaH{Kf#OrxH(KWy3_9FD1ohUjM{qK7I>DfJ~Fm{e|sQ|yuzb< z5PvnYU4=4uu=s8(SDyt=L0)*o}b;Ke-ttc zE|rmXKl&w|76Ib?{|5DbP)aG^#X7j!KUK?y!KEf6T=OHdDF6$jk0afVtqo^eNHpGn zE)Pf9z;F*$e0rUfv|0Hzc6RIe8kQSjp)q?DM8U@o&Wv3Q> z=4^(x9uC)P)`BipLYM9TtfHu$!wp+|KibFm%gbkrciri;$2C*T93O{XRM?~b zfm%;&#^-48bCocd&6u1o(W1v*jH0Ptv$BxAGc9fU1zL+56{=TWoZ?1%YsK=h`_UCG z&$MF3{wYTa-B7E|ya+WTJsOEuBvM921it{cLgaUVPOPIK` z8x8)7X!}>t8D@I7)etpbq51v@53G|vJxE71R!V3bR~5qa^P;se z#9f+{cBU}#0j^S}qZ`sb0uicIuJRY6E~nF6vFzY|_$E-bt9Hh=xAv3}ApZqQyMW z<$HU0W~0*64sN%3!D-M0}L{B)r;F?w5)iKtu=&I)uw)wl&3!GW(>wuXToGi_QYWj(;y zQ?oBo+rZCIgP%NJlG`yh?&>!+G0fne@hq;|oQa4_1j`*iK%P@q;rX`~JHdgzBgTj{ zF{p^PDE({dugs61UjU>Y_MpC7NTPa zd%h8^({v=tCsZI>w{9hagC5lI$uR-Mt`OI(G_X|xI(b<`rK1E^z^gti*`Rt0j>U7V zSs}ByZ$pf6oneDh93lTw0FVGRKG0`!na zJ#gJ?Sk+{$zM$DA6I-Yqo))-faBqZerq`{hkuoVJjgp^;3l#_SsgM1ajnAk@N;)aH z@`RG+rfL0*00)`OEM8n5j%x(+I4;?Z)g5n$iy$pyreDy^wc+89cwO)B`-ec?==tx~-+A|@TN|O7o~8`5dh6_9 z-7UV~a|TU#A~(q`DJr4zgQv$xE~}J!-VO*3x;57~5jI!3Mmh+Ya5GC+L#NP;fg6H( z(pg^cUFX=3&iqsED&?B`V;pe6(-Iu&bHl(p7rjnl$eb?dmQD(s8&7~8xpwEOqHc>k zn4~=w>m`*u3`du2?PTk+A?Xepfp+tl)vOM$<5}EA*q9CfZPykP0dVU`G;pD*?0s@6 z3$#K>ha^9ll`L=F9YbyX?-M)zmat6--T@W_C0}`6^8B`di4a)WjxjQ%;_NJf>D8fu z#Um#S;Qs2M&%oLJ>2pA#bCqyhABZ=%TYE(x9=hL1N(0?qx-i$@g(q5n6`SCrTGt7g zfk0w^<))<4`!p$Utsu z5Ox>%3PB6Qb4Gn_{}mN)2S>6%C_|0(uZ-N+A{!M`ko^wOP9FciEs2_ztx(44cb9${ zei}(BSy*ALS`>hcFqVV@%^HH>sVm^5tx&_ zRR>066 zw~xRRHJo3*gmtlOU3qKc{b#aukjH(@ZE)m`ihLtQhdm0Eqg6k8fMl1}quc6K1ioNG zj+H@7uhe0G?T^RK%gO>yg0n-A2lI|(3Xdl9hUT-W(!j+{?rCfaLVh;8Oc0nJ$6ixi z69T1K)(@~AyGxo1cRoL)_!qpSXuty_b+aubn}vj>F2s4nMm@!&#a;0128I|x|6YMO z-?Gd=qw5pGhIjU5;iLgC3iXvi!Yak^)3wpp0)njI>e}JZzqpS# zY|{Nf@aFcYNFe>!q39yd<%^yWVYBOMWPm9$_yl0tE#-xlm95*?4>28_%~VIaQk1$$ z%ern3lTAZPy>vG5ByD4&FR>&vqu&G^F5N+krA|w=A80;4vt+9-7f$>Ru*+;J52TFx z@aidXTpt(;KQ(7&9N{r3do8Mqf=RMFf@sFciZ&CMZ`O`_YcXz8EW{Rrtjd9gowtdJ zXbq5kRSoqYI=7xahz=~O1=}mofIcKCVlRG|6T97?*1lF0`lV zwXgBdx1%d}J0tR+Ki$2VI$Z+X-^_0>cZUGbL72UaX$W8?Hri8FL=ooXOd?Zg%bp`~ zd6K}!@+M9y#wjH418iUJ3>`h)&pV3X?UISupX03&b9>CY|Iet#kRRwyDGi#HoL6TT z$>gpnJaTWUCL&d=ZRudroqC1yCJ9ONM45t+*P`bNC2d1^v0`|@5_yJf@_nW}`T}4P zb*Wq#<)!b_SG>)z-rTxxKDGfr+N>hn(oewHkkX3;35b!d(bMJ{z$}%DEv|lOZgdeO z4i;S8KvMPM)yUZ~y&$XUKR~IvZa2?0zK1CqYJ;#-2=@!s8{xPcr^)H!<{#2U7OCZ_ z+pG&kCU59aZ?*AR>P^qs{hiUDW$=DQTU`f)$#7sVk+^g5nCp*47fJ z#$G*D?e?|~*tr48loKKaaRa0qct9oX5~rln!z9b3MQqWN{_`F2CZL?_X1>1SeAOneC!DFhqxgBV{!o9^n| zH7u|5RxPmYPkt4G=V`|nyBMXJHt87xuP28yIsZGJ7VP84y;`+S;AQ|a-thfG4f`Tz zJot>x!#_+18zf4YV(5HY<0KXa(rz)A{gMUoong_%1eGFc+Tqj8VaEi?K%Mli>H-bD zZ-LDAj`yn-DdqEShX>TM_~Y9@L&W-`d%ahYhbZqu&W0HPGfdqD&Z&^Qzh704V#$1# zN%i|mEfEl0F;c88xpn~Hn)2T4FNx#)gL+~}{T+hp9g{+~W?!1!7RYR2jqMeMwx1I0 z=JOJlkN^DdiHd=vh;yft{t#|cRs#BIkV79)VfypS!EYA`VTG#EMVKMVGdJ=6F}uu3 z51pBXqyq%qN!8y$%;Ja+l&HDs5iTamaU1VFmgZaBcaOsI-`oIJnbaV{U0r)_NP>Qx zbJQ}pU*qfMZ-3=&{=68!%CcJgbRQA437ZmCCGE^#(vPRlBPZVTSA&6kz}Ib3Ve&pz zq6OUGaF9=^26j+TS%gB9&_@Aa?+x7*+^3g~3+A*AXCW%y_)_`X|}YWknDWT`HNPhp}@qu0Cqly7bZtd-9X15 zbRC7s5Rb|-;3CuEx9_@M#md%=xsIEf&i%JW#tWp}ygilRZn7Hz3BQ3UHKR;uY4NetvN@#1f`2nK~@= z&bu84hV<4AJ4uhZBW@xa)2QCf5=2Em8GsiotBx=&_=8d0a_Fbh?M75f6w|+p>ImMH zkQQ*YtVaXxb)AG_##BHU)|1z*cPWmI?M;AkpFD%!=fId^)O#$mJ^{nDaGeGbuka0n zfry*HKMVzF2*`&XT;JF#V4%M>U_c7epubRoAR!@vz$kLmfc}3EE)Y-}zcdnFYbzFF zUH};cq@s~ML2dvL5V;lbe=|$7$wJg6hk!KmaJ%IFSxfZi{cm4r-N`~M2m1k=))9~S zfc=1x|2sG>Hy;rnu$8IkT*!_%vhzUYBI7OW#lO;Rt-oJ_XEYIUf@=V@!zRxU5;=ex zB>sDTQntsN3>dz@friTW^wEr7%;WoGBSj5_1YZcY#qu?nkrQG^4v2ERPGks+2mCJr z?n=l43nO-2OJ|+k@$(VZYq_Pi^dG-}`F7K|H&I6k&m$dIfIbH2ELK3tl==G!kxV7V zi#wMetYcUIDbv_~X#eH7Nzknz4^NYOD(x=IZLVmOY^7`B6)b)t=254b&R(6&eY9il z2nB`f{s0@bfU@vBsJkkX6Bfct5a>^ox3=&_LN9IUL zAFP$}fs2eWfc%?@nkL(ke|XEkfVWe6S%{P>J9+W7T%zXqvj z1aq)#P)At{(;1yHP{)^s4l_O^`Ve>=!Hd^?v3PwR&07&qc3FSA0SL0<&RP=|6Po)K zrE||I#7R;A*^lf)@em``r&Z^aV}#K|6UVr#Dw1y~03Vo%T{G^f2fxG<^TRWQWUwnr zroREU@WUFFBEKDjOA(UPbGYA_L=m=@&YM5Tug-}sPNu6*uXPqs@MBx=?T8>8-GNzK?k$r-?H1+Dt9PUT_sWYR3xwcUx&9K=^2Zi+^AH;L@=2w?73rApXhTx&y<4j|9@^$oe+pUou= z&<^#IsX-pz%!Rn5CWko&qo!mhykFX2Tj{UbWqYL0=WEy0#E7M6mBLfB2FnLu@{j+M zx*by)zbTg&T_7q4ZagIQH!N*s7T%|%2JBR%h8$1=hZOJm=C``>4 z&8XpBy@0o*Ssh%qhW0}#cOjj|PzS&Uc*0c&pG!Y)(_eD`MwxIW!(ho*0E6S3xg(XB zlpDHB{tSQ4#%br(i&jPavm4Xjzf->)AhEO(RX;z&?$zF%=g!(m5#BJvjv(pz$@1GW zV71V*&rL9WjxTiAGD?PI({6#(XyyapGrCV?TexQywTvbg^X2>*n+77ji;GwYaFaLN z3C?Be^d_+>jVSAwGFr8XxZ8j;R3+>y2>}wKGo`dCwB5Y6gp2z4yd$oY4dP;awZ)8% zv?3YXA=CWmrT~=dPj!ujc@w(dSv1@pY;!K%Wo>Egz8LFqUuDc>*&#SxQpzlBFuo^E z^cKb`p&E5OC99kMD7C(D9&+FT#2tR+E4zOH{JxDtG?L$* zU&l4nceDJU*lP_TTZ=PRMDd@6uTd@akqQe2-;!>nk^kVW8_!9@|9fDic0y>?n1$i? z_)zocfk2Y4C-3bB>xO!~O^H6XyU)osZ(Z8L>z8aH-*%)zd?_K?YNJ>l78KCVt{q!N z&#t8FN22;H#E00uaNqgS8#BNCw-OXgxf73*hKvW>;;ehj%eoNPGEw9{bt5B7Ki)A6 zmEt#``IMbBExuP0Bm1ZX;qKf@QHH_pBu|b{A!1L#ReA~A-G~F^#tAo}09jECp3%kw z#l=3VRL?Wg@-hzkI~Jb2K1u1fKFwLtoYhC6(pIWu zM!_lnkt$uH}OU z90-V!{J)b->raW7{MQd7Ff&BskYR3NW;ItnwM(gi#L|f1wi&Mz0K4VZIATQYe zZqYhWg;+=V1IElovX7wz0%9%uU%(Mdh$g@Q2*{uIKx;u@AfRuM{|*KMLi!}*(_)^BV6JJREY-ffW2?O z_gnEy%p5ypQ9e@r$jd$xy7-E)X^9DNYt9XTCM#d2{vvy)5pA9L(dU9j)8CBqBHC>J ze5n%GUB(P!H0G3|(WNjsM{%vA4?!!$qRi8omlRR!e*-=-MCBq>uEP8U*f-rPP$#f_ z63A}`Jk#A_wut$U5DqmwuG$x6+OWmYtYTSgn9raq<5m&*b-ikhegVr^zGFe9`NaW% zdQ5w?u+1H?tX$5L%oi`;G4yG3Rw#d?%3^OcU_C!1)fe4az?HR7jW@S+o5zs#ZE)`G zy*5C1Y67D~7=CY05~j*}rFXyB$M@^u?(^&Z`4w|uADeISHBCp-NPyH>DR6$@pm+4n zxM#kHs4kuEf^5}B4qGVc5BQ#nsKYp5YQH^3h5(V7&69IVk=P-sJEo)_5`D&Y zkQmbscGkq!*m5;+=mA0`4>ZwD@ZqH&lu_9`#;*EtZy0X(vYzZ|z)w_WF3 zA#=EPf~Fm!YDv=suROG9dlpLcfyO`3|G21WI5=0?&rYZRc;5dLG$H+uxU6+^6%h;M z$BE|F7PsDh&>jCD`hS99HV~oz@=+$&j8Lg4a(S;fVIx5}3e;UHi*K?ZO=mY(U(x_qp;L%Oc+8{-E%NamnU~ zD+K3+gHs{o4+ay{ajXDRtDBqauUE-|4R`;!p|?fP0%Zj6MUX{L=P)ukUCsON`QL?j zE#}DXu7##>!M^xR?#K*~I1gA==Lg1Kz009Kgrp+Mq2?kF#Ap~bfai&Mb(+| z#AcUN`H%Uhdd15Df2SRnm|3kgYbyMy|2Uc~Pwg=<`ye*woANAB!Sk{ZFiA^@b7rGp zY&Z#+>F{{r4T(|`3w5={r{2l4I_u&Jauqj&5M>8q*-#zX;J5D$Vvt((ub@+(NOh8> zc=kyiKc&n1C@=w{my=Sjw6ULY-EA_N3{evP4!odS-ITlLSM9~LS?$X+%_$&nf>^a~ zl*RHBf;RbHGGAgrB3jXUE>Zp)bkh-vq_wt8w=pPxZnwjxrgkf7qQ&{PU8c)om|s-4 zNeSyKjWt&jKi2*yMLmwY&sdb7D<~+j0I`IuND#D@U}6b4m!>Ii!#U@>ReI>6N669y zKR2Y!DW;&4K?Q}n3>Sphqo3z6II?Y)dPm>!EU_Qbj&1D+t-8f19jYV5blkw)_1?aJ zENX_9(tL$F8l||#^Lj9&8{1o$XP?!OAdo>C`Q;noLiTw$uLtG79-jcI0z(;M(C>>5 zzLW)$UvvoAO=HuF5TGLOG$rd5BcGz$-?`6rwHT>OuC6X+kn*Vz5wAY&(0|clWgH*?^ngj*qA7oBgZH&;7$ki&Ae-k5zU(MA2$}btB!I)r{Gp ze>axCbCi>;U(UG9``msg^$wvNXj_HR#yfW;F{i(i^iao0+m0Z3bPW7i9Qb~wU^^@d za*#s-I7$RQ9IVTz#uidf$qf#WA0h*CKpDz%PQ@=;D5b0Krt(uR-$geRg;awm+#{8x zDE6Z^zsb|5(=Dz3ofn%0hw6@}qRUXV8cmWF)|1JdTXgC%Y<=SSy-HvRnmu^HQ*?2H z%mp&K(@N^J(P%k#F<{JwtbRfYtcrI}T>O&*yp&}yw`_AvY;^JWzn*|k|8uWqjvDEf z4=Q1o+%IG#;JqlJ&YhQ7qp1NJjlClErDUnv)WmekaND0mr=xRKPslvsY&t0Xm>uVl z(>Xgb9Ch{+gnSon80B-!l-af_11^<(E6FK=POSj-^Ll;TH6L^qvLf<2bx(mJfFNN9 zpwG!W*C&jLTJ80c9(_*4#UnXIJ$5Y1BhK*RJjABCrI7VAim=jn?S^JpD>+$WQ=6(_ z1ySqrw9moOO+_xES(_j*rjpBX68HJb9rV&S6%Iu9d!=z*`bZq82=k!7qb+T(2v*l8 zAypzyj^%A>Ob&gm;{v(ps)F?7*}%$uqTaQB&cOmVz#adm3LR{ zPyi^w-BPJVHWY8z9otWw1rM|8!DSR@a;OCJG&D4C2w%U+A%Y>P3G+P(^#R(a z#Xi+5)f6vNp>3+~lBB2^9mZW8Fe4Dc9K*c=_VEnj1oCN9Nv+1~0li;qLq+aP$F+Q4 zoab)*1HIQ@ozo2yP+MlRAD>5$Z;h7U?=%!HyKmjziOMbN{@2Hn*o^ zmZ0KqDYG}Xio0Nial3iGZ}G|OQ~>`-f$3cp)O{v(kOvjW1M`?mofOK@Dg9|o-e!-y zC^g1~>)0VAISZ_bX&W#^Imy2xt7`bGiASQ$gxJVf6d`YrOK$Cuxw2Wr1~eejvucJB z(c=sq)+ziAt!I|j;00zON$lKNUEd_J#le1C4XJkrA6Z>)R@`dZu4BwHZ2|BS2sjaJ z@iiz>VQ{bdUUGMF66@j0jV{qt#uUajRMsUz7klfs)?mZ@+=W1PR1z``+(&Rf$w_{H zqBXQ5flkDN?(1erdippyyW7` znk^1`zQO=&z?cJ)TTeU08V2;7mVR2FAwP$TQi#Tr`Ycc1nF@cIMQc>ZI z|HVe1%ZhA|mX)w6eF(D1E)I^oO{RB9R9G9wWZ|mA+rp)Y02kLvbplwx%5_V@_&$k@ zMuAzuxJS}u5QmjfNe@(t4E6KA$eQnnexx-((LC8fXKX!9N`<{-QPKz0C-g zeml+^kIWI7s#8WuIS$J66KrXZ7A*mGow7g`$E$40Qa4R*LR}rdMIbNf3~q?kwZvX0 z52*<~#NO#DnNWxV*8|+{Qwkw7Ks}Hr4rX-5Tc0f+_SFTh?*H0ZrRc6z7tgtlNMhjq z7)aO#k(soGW?M}jz!DP1ysbs3D0=h;{NZtT()E$@lp>Oy8`F-;XzjhUU=}h%()xHK z)cCt~eJxn+pSxN%*@>K3H9u|ZkOt#}X-5Rt3FRV7ljNYUDgw~I?);?p(5Jhvb~VYH z{8tV_)7JW%)Sk_kG}zPcwFfpk9TctmsnA4oTwHZ5Pc7Yc_WAul-`50x zsCi$;w^&tk;Swm!n0?MpsTP{&!a`r${qadBrNOiMxkOoYf*|PMNa6S0>k6~M6U|{@ z&aS?=1`~zH04^Yb(o8)M`cOo({P?KlsIq)?$|SWdlBS}S28?pMvPg})Bp&bSJ?ZfM zV>|1i+Bt`X*Fg)h*Piw1vD_j6?XDMN)*MMMT`Sl2R_eNAJ|9=)9-4|MIgTOm5?zpD z3e0cJD2hPkuW?Z1mK*kNKqS)jp3L+BUn;eOIn}i0od96157D)(> zOBFcjBEa42^LguE{L5G^}YM$-0SSQ`3(GdRC`r;GmEZFC^PPd}Uih4sI2#(#>tH*!D4UDXT3s{a&W@dWEdD}Ky$F#fw) zE5;pSHt-L)lYOYh^C$P<`$;MOYk7C<9#Qr`sj=WB`z-AbkR9s3gVSiA5s3jC?5Msk zwQaMoDnd5xYtq0YPIE=WN<~kR>;sIy1ZAb0WHr$F65Nb1ziv87p9HxZ(ymNbg^?4w zUN#YOy^Cxl;b}5$2?Kp${Knr|KB9E5 z+B)n(46kAeFp6AOybi$1<&k8H?f&8~F$gO27KQ^n%Tq71?XaGU z5saCyo8Z-}Q#;faQX$QDNFv>ci)K=JhRjpmZC+nh__}d-Vejb~T6cg(t*5AN&i}9&S+J4)M!K zv}lw?e0JMfJiK63gc1h;a??lihwpE!7leHo6JkgT<(020)H5C(IG>tkb=XsVPw7Bj zD|=}WK9-yc2fU!F&Q>yQ;oH@}v>AhWe1n^De@xK=*@Q^nhUvHHVpJMr704<&m0u*z z*omCSID%PS8V{?b-isOjMg$bu z8Y|LL-n9^u?h;LaQ=@_9{zj89vD!hd0+Dl%b-D)zjOJkLqJb)fGj&vX@3ybhr%?we z%V%&oj<6x+NskIH4fn_|9HG{q%O;)z<4MP2&Qouw7HXWB*XN%p1TrrA!XYRR3o_3l zuDAz$LL8lu`$k<;r?_aUD;h+r(I0I(MANg##^ha1N%s;4`e%+ zdp>R_Xm>BUx8U1wke{71MWewb+ulNZwxqlr)%7LRsIBM2@OP+IZ;1^luKh*3QX?W^ z%PX2ehRZ2d>$5URhRF&5@M{2>Dgg$3+JI_lGGwTn1g$@QL?@Q0%2-gI6}ph+g5<1P zT%yS3Ku%HsikDh08uMG?$=qQ`E|q3_D}=e}(HKLi%sqQhbQ4if4gaUFuK zr)Hk%dV4gj4>lQ_@a~RQXY+Nf4{pSkIUerXehGAe?~jZ6j;=d?Xt(lTUTGr;rzegt zVpDW;#V@vevStJ;M2sXD5!f8hd1lA!LcYm(hn|&bVvY6=HFvDAy~=7c-5bXW9%K_^ zwN~^3ELo%PBpfm5vb0*>8ufs}SFoVw%m#-kEL~Zzwdp-RUvJx>Om-W_8PR=_ZF83w zS5DNOJ#>Br8kXQZAz)!xA{04km1JO`)L`H*f1%oXP!vqHUxwBX*KxgInZ@ab-zt#K z%yWM_tVJqAc=n>o(VCUf|JBZlgPYe)f`P`nc=c81nIv*(`fjqWi*mO?IFJO(6X8=+V>WW!Z4H6;{obz%$|G~ z&C%}@_u|-95WXJ`Z8Kt(6%!z4`>~M@%A&iNl|(FI!#qF!ov^TetqN~$IdzMMkg;1q z@)!f%Is#WUd#N<2%iFB?IV0yg;=Av|&p1m2kFmudd#m6iRN2u_qlxZ?gA+ALS#F-c zoenM%P^Ty`Y!dXhvm~2QA8V}ihfX!`M5F}z1QkgpFe4;>T$9Ap;qlog4x+%2W?VJP z{RAZa$SjLQhQwO)QrtwkPc>LAkb6=okRM2fYVk=p=d}nrs8wogEo)E+7MOtMMc>?} z)F`b?4fLnf$>l9dh+wMD_v<2R=C9PEsj1H4B1Db3M%a-B-OeI8VjEW3|l-TDYq?2;c_=F9m5l4+4 zULE03ld>wM4a1h?o&4e>i37f}a%jFP+!`RvAh|=VLN8H^Jm2niH=N$*2lgmx`{k`@ zzb0LpNz;~ZO+J=Eatc$lZw@_^McNuIW}o59_RGT&&>S@?lJf>t?_LZ;vAQO{O3AP3 z3SqdP)IX(tiNdMGKUX;&gqm|fk8qAqHi@eE4Z-Ssy_fy;N*$l-+D2D$vNs%2VX-np zfz;xtVgJiidmh;`fpe=M)u-kNl1p+hJCS4`*=??JSF-KEp*S3)qZod&^_+)T)uAhq z>*CKZMWEZ66-3dZ0}owlW4rS0!u?>jG%K=D=#1V42DP++(izq@W6hV`9v@DIv0nG$ zu~Fx_c1n~5K-CbpOi*~dT6l20tXq<4V{B+75_^GxknD_CPZD6%m?O(Uz563{UU8n^ z)1DNT;XA&%I~=vck9QRdn*QzVSjoP)PLzJ^&uKyLel^8%lCc$#c5<-#o3W#Yg?SK3 zK*_Yg`5XL5^sj>6*gN-!&~9+f{Bx3wd5Uc+ntvr{C193JEN_l~M`p9qu%cOZQEMwp z&8vbTog&i1^Gfk-ZcO!Vk-C0mv)FXA$)ag;5-Fztq6X(+Ojw`Q*ph9=2v&j{7B=4)ko|`hUn=+5AzImacc$@u_`Q5@! zD(p1(p5;#u?mJ!TeY6uV=YCb0v3tCXjzDMtQ8RxH`@--lJA?cEo&7YyUb0>JxXP$X zG1b;G^Z3|>gdv{G2#BZI8a7MwC(vvm_4{f`Y%KP}>UcQ)-gNJUh?SfBOYN~-bMVE2 zX9srROT8&V0g?NGcX)}l^BDID=X!HpjmhgML#4=;#k6qvG96!yI9}66XLi1*tQvcByMgN zb6iy2pJao5g~C+9(4rHw3cOj9Hs35`Za|#)RAw>Nsc`97^)@|ru~^eS5mM&{%_wa9 zNEy6H%=XuZd%`;*96QdeXU?M~sbxV$5_?-7pE=_zmr1sjJUDrI@uWMr-pw^6CYPgV z)!g*nEgPf`FtU7%=#QD~x=2nq%WQq_o;vgm5Jy-ELY|xC zeHCcpJ=^`>&=tGW1GL{x!+jO0K(z?mw~Z4VUgf1?5nilm-TPZAn)})Gdi|6@(v*DX zOUl(Dkigy9DoIE#rIjv<<#3f85ca(tjPeMlIqRC$Emgz!nat0}*8&Cpf}6LQ`^sO% z(n;a1?vFQGA24s7^aP4;OCDOWK;o@gSMNZzBFA7oB>o6DAECpbEKtnF=m&B$R&u%c z+dj^m);q4xx_ce@M;5K=I^Xy!9K=3_kJ+Sj$?WRhXWoEGTcjNQ%;oO~bt<1pevsdx1be#cL4!58{&dMr@*=h*e3YKb6hK>;S}@R$+E?>cdbtAPkbE?geu zW1nfR|BT_<26R(&7M3)o+iqj~K;S;kX%^G`{P1(oyealb(>wxdYtP%aTrOUe-L(2H z>NQ)&oUtmWvcq&05^00eK4jDdMakP-p>u0IQ#0f8%Pf&;X(4Y<=Tfy}) zyjsAnLGwZFvS!|>{6vyw$c$H-6Gne`@j-sp`1;af<)kGm++5S;%iQo;%w1KD8DeWY zAn#?y5|R_-3mS99q}F}N7}s;mw3iyO$X1g*fDcK5I_1^A4BC8XCH7)s%vQ|g-L^-oe;gUSvBWatz2JmoEz>G@}=fkVv ztW|*F%mg|qXG1VI1IBP&@u+zZ@Z8vQ98m0O;BEy4SOQtk1}htH#koUOVJ-_Tz6uaB zdYP1Sg^ox{m|QbciEw$aE*ZeNfX+ z;yZHeWzQ~D=4vb3+A2x96R&eR*ElnLHM7iDpvQ+nhGvqn%S;(d?njAp66;pLLuQ>I zy~uc0YR+uDAv-!u9GDub!f>pv+fnCtyJd&a9Zl5cNe~zJ#ZYtfo8Ji@G)Qoyv+rD) zznScNP)9wL>Eh}ctUp_GecY?E+T;ZCPP%fV$Rp`Wc9iU8vR272v#0~UE^)RDFwq4G zueL8f%DWr37*xB*b{SEY4^P}iD7D<;{_20->6)X(P)bkfKM~2c6_IVpf6M~6rAB&r z8cUqVN*+#P>1C8U)kK%BstrdF*~3hV|5-h8bkT31SKEI*IPUC!&4>%M?)H2DG)11y0 z(sLkG9!kH6gX^g+Acos~Ele1vCl!dj%S6IA9lFIQH4h0_VLZECg$F4|B(7~udRU<; zX_#kT8=&Dz3g>wh&kaJNNAc@>zo46k_sGx+=|7|pG6Z4r%a1TRehb(QJ;lKT5nVTx z#=XuQB3qcwbnuZsAEQA9SOE+seKqQT>}V5Lk*Q8-st(64I9$cI){v0<2q-D66g2Bj zeeF-qkIQ`feNle?C3DVO+=(kQDoNfs$B))kS%bq`zIS7f1Y$UDA6$;rH+;JSs2eu_X(J=HVr z5T$Ew_BVm&vt-H^kPpS~>QF_;#*O#8Nuj`wmch_+BQX-^w_R9*BjFP74HDgyuOtjz z$B{nIjSf-uS=w2>Rc0VWJvYVeZ4DBAM)YkE84MM~slb5CLugIg88V8-1W3oonZhv_ zz~m-NWquunjO4-ynkH)d5pC#ziFCk*SBpi1K?m*UdoaMJE%{L;s2|f$H!yR4kQ|lS zdz}wi7ly$C+*dkcY<^To_ahw5y`YEv!kHVRg87=t#MDF+jO2OeU+5M$FFCk5$$u0M zPl^;`B0FJrUw~G;Lv=Ii68EK3oBUJ726_mQk{c-d!$|Bm5ak*RciHgCl0Ahta^TBC zh0Dn(RSeu*0l$CX}a| z6p`iGIcRF}A?C1gFe1>6m20m~XXt5LyLxVS<~~c?(%1q~v)Fvafs@&1OfFMAK83B* zkP3*rvN%Gd0(~_-xuWMDT1+huA`lh{}R;Xm^H;8qlo1Xj$ zPj@t#he!@kQu=eai6WO1tG#!TZDiX$OxWw1<(j70IA!bb4<%6-c4Hc`9<7zT? z&9N&DSlL>jLELrJ*&#GQ*G1iym9Ad&Tgm2rX`xz@5!Xw8La4ANzu8kXmT6+Du<g^)~SX$a>92gRcRYvNnesIN5+#{W2F$DE!f^) zSFt&bX=SR;R%@Kz+4ABJM@i3jSliqRoTdv37p69}Pfv<(jJw)`?9uq8~?(+|?84eu*z!SUJ$9CUMKZ z*PcJr<7Y`E<{9C#fZ7v@29+Ox+yV$b?(sHnU^)v`*v0VJ+C+u`mlF}^mlz@j6QdHVaiB0`uocTlP@j_#+V`TOtQW8~nqm@S2#C2eghj%QkR+FgLAsnlyLAjK6f${( z(2XwiqHb*TSHpf%W&sHMI%hxc?m^@dQx5x`Amvhc z@;RJ(EhnJ%!S>)nnURi5X}Ifa{bn+iSQ5;wn_qSxs30$T`y*?6FQ(fXD;h&_*%TX4 z;Vfg^Dp8f~bh*Dq9Ts2pX2Bo@gLr=6L1mYEkS#PSj!whp^G+IxIjCH0xL;sq9NT_~ zlb29apxDN`y3i{RJ(8no>z?k6-G_&bYet)tGGt2vEFxHKF!eZA4g1Y>{}_l)O3L3( zN(2P>!$4cWhBx|;A6voue-SRe`i%FTmii7#D`3ve>(N$1_o@T)6*Oa1GbjfTJxDvs!7v>!whB zgoX^Eb;EsOxD_09uB>KwpqD{|fJ&pBJsAnL%Ye>80j`GqEhQC?J_RSHL#d#rzCZ-p2 z^wr(w;(J6=NtADmRo|zm$iAW1DC={JOxTvIE|#%ZGv(*H<(^$Z_G?W@5(@o7qBNh_ zGO<)%YWH*Yf~1hST)q9KkGlq*?X}NM%bVe$z4-8hb{lfBpfk3-N%;)k=$~Tm<%JxM z<_4d^Ix5J?_p(Oe^HVFv&Oejdx5x~VcrSO}Gtz=4rt%|jT|a;^EoHr=&(GVqr5uAW z){Jn$F)+x+rIJQv{m=$DC4XZD{?#6xNg)ze7;;DO!xA+cfDLK1}fYjN8%EAx`bsXS|d4Wp>KO&Ol z!jV{QPeAgZrvc`{>wLpHZ?U~g8s&hrK_4FI*)mv4eLPD;>f8&O7P7o-seZU3=+!)| zq|vK5r?z7WBa()%YE)+FWftsXXUvMvX#`Hi7c1nf9;A8rFw|a@YS{ZVIG0FCS=+|r z3ZyE#@g=enubY2fS_}gvg;ILNUAUwe&Utx#^F)z=n@=ET?U))538t*O>|@Xx{Dcv! zf?sB$s5~%0;pq;_8S@8xm2qwy5VKphbXaFz;A6Sau49({datwd;JHF&9`q|4v8;Qj zhhV|(yeAUJ_?ea3Hk!q0k9-pJPzpyEnzd;YC(6nM)Os>3phru8j zj#tsm2LtgVJc*#fXdXuuZ)oc*ig%yz^iW?#YXtlpS)2@rPAN(z-H%sPyAUQ>?OTI( z4N?s8kiGls)SQ?QgUL$Cqjn;_mrldY z+bgxv%oPeY;Bq9UnIi3D#faq<(_}$h^(cHkkHQqncj2jA<1EZz3|28XHR7G(T%mHD zpL2W2xX8aiMQ5b;Sw1le?00qL0^uKrkUQo?ulTFppJB;wzCcj1s+8i0wQ6g6uHafh zrIY23{&vZ!;B90z#@aXD8Dg-~nU)!*ZtW6>g0bKP6CHDd73S8AXP1IrkjWN<+78h& zi8ki04Qu#%i%hIeS18s^s=pibhE)#%YBHyp)6!@mXq@B1dZlZpgpPZmo4|;E!fOz^ z+srGoG{sgkpF`i5q$yR}KwJH5SDJv|$Ea>n>4gqqj1xCR7%SDGpJh@U9zysMd6}cM zvg(>9tP>~S)XQ>zK0j29KhG?Ap|DUD(4;hO&6~1}X&ki=-xR0SIcJZIDg8h~A8s(x zLiP5g0qFU)!c`_AvXU+WkR^S$#Yw0r6*HT9vU%tY64KqdV+-96J!1{@V6R5)FVu@E>fV=@mb|=f z!Gu<+s>D2GuYZwua_ylb#d@la7WluO1_+7qD^4UXxwyV(z2n$1wF=JBrnRHmW$K-$ zOZx!&9Il{mM1&f+wQ1a_u{q-tbQn+9Ac&NS! zQ*h@|^H1aoA&!}N{30ihvE~u$$Ow6$AEOWdhXGv}vmS@j$~PzAq?Y!4q<&<%f9L3FgO^Hw-nGS8$i9^1Y{ zR3nnhrK64VI$Uhvoq^}-&QY<;q2jJe0D?IWsQvY!`*z+qQS&_e(g116bUlE9XdBBNOj4``BdX{XuZ z^IhXwIa}9IIPq*pm+v!!iHh9#uR!qmlg}<+GM(P`!1SgsO0@XH4J33H`HW7-k6qU- zh!so`XQJ%yL?cb&vkz?ENorHDfS<3hpyw)ha8P)t3; z=f%B&<#PXYj!Q)wf0T#RIUz&;rG6dETGgewpZ@6pVYW4OU=7b~CB_tOrZ9-8U?k_` zbDU>J5%!F@s96;muyq`DSz>7zEnG!xVByxOS1o&_{N{a8_L)`-hjQDK{@r|Ef9~u} z>SA^Xx{0pl;F+uLE%d?o6F6+BiDr|#pOW+C6lE%{;>z?tkE`KniKXiK9GXi#9;Y_n z$fB}pdIyE!IF?MEp*P=NU9=4v3M`0>kS1_RuIW6%iQXzGpf*=+dj9g*WNDPK#;tkM zuuVYG_4N?+@XIqW}(C>!e_Da4&0`jh?YaJwP_eibGoJBPCZcWZ9~HM=9$0 zdsN?Gn!|;^Q)MwyEe~!J=M{PF`B7fncYsk8gmy0Grf95utLy3a;5hZYR#V1%AMX-| zwT$b594qVsHr!zXYvgETU|_s%Q-QPjr=V?6btv`oyEH-JTJe3?#r+T9URzhg1ipUx z_a0rY`f2oDUDa4Jwleh&pk+^+67Q`IjZ^%=b5-H$6SkHLRSXNF0`F4twEkTxxM@GN z&QNL8y6vxDRJFEm3IUzYHWNL3KamNKFJs?6IA3>F)9JR;_T979Ja^8k`+(?u-$&W; zE=TP2IH@)LofL#!Y_uh7qMqs@`OzbS0K`DAVer)?UEqbU#t>5JEC@TvAn|yqoc0dG zw0AvG%ScXgrY=?`QPx2oDYY;>TZl#WM^R)M{+?ZASs4DF+7X$~w^*0=;t#x^f2jNb z($2Yz3;}-SfKEO`^!|XRW2DwCYbYHp_m7KZ(n#-1_?rSz7 zJCP)y**F6Ack|m4GC^t?&LLB;5`>6Sx(AkZSdDR^EbaPqpLz1^666&#^JS>dwfv*gkTEqMA(xJ3ADWZ*1t+ zIaZqcW>oK8KskYT+Ig+|gTBwVku&gp5v{N;ENir?&3xZ14nN4%bfcgw^iq#rsa?$% zZ|GjcU5G?g{=zW#EY~xHU1I}BJimT`XRL_4*O89-)afml_M5$qvi$gTl-Y+KySBL@ zsSY9a4F}ms^>{mh+U}on$9@U9#t|We+g;PAHb;BF6;`E9yRM2j-;Cf9sav7YeD@E| zS)6=XgOiiuS013L%o3v+1U@>YW~7pjqm78l z7sc%+NobYT_{TohYHk6AVGDgCOymxWV91JVFiuQSBmfL@mAEwNy<%P(b@(iCTS-7) z%R2`xUp{Q6^sHPq$8MddZtc~1O2|I`VpMRt(`r$^A@JH7r$umFJIfI`9^VL9zCrWmRcpYERAU0kc=gWzC3$-_4{^u zgvyfYm3b=&>HKs;U;Ua0>t-SuhxJ#iGODex zQ@S3UVKng4Z{yJ$!eKFM4GzyI@sVqSz;5Yo_1`lo_1f%Xl~m%zPiR>aDFg zmTBU?%lA3+See)ofGt@>FPDFy`EaM)6#Ma1SM>}N6lsQwSrrwnwTT$FrDflsP8rM| zwbplZ=Bj68#zITLg26bWulk7xzq>((soRN;?F+P}tGbW~F?GfB2m<;}8CCHmq4pag zm;C7GRvYd^?R~?y9;Cm5?uv}L$|%z$c-v@5U`>)qF_$LYQF$dS#MRO$sDg)c3H^tglSh zSW~C0*+YEC2uZw7G0cNQwE^=h+ljohftx9QCZIVtY}Mm+#^9sRCG~+mjl`eAk*Lyw zu0zKOVD$Z?yM-@JS(dJT{W3ejnDXG55ZU1BD|ctV40A-fCzD$I#u}101n%%E+`U(d zozop6B8@%j=WuvHkD3P+G`GyNT@>DMZmNpz>7M0?CEQ*qs4yG$ofgr6?lc-&TTbtW z?m#jdOkEqTJJ#a13@hOHBV{c^BJ6pug!`g9ZA+dHt>;^M=9=*{d^ zWktu3MYb@-$2B&nXBdG0B{(BP7|tFwc}ER+004s`7)Aid{QQ5J&tM(_ARhNEB*VbQ z+SttGan0?Ix{#{Ix^DVJ5Ej-LBo^caWQFeUL{12f764-Y1}lMpJ@X`vQ%uAKuL=Os zerMc1W{i76GAO|Uf_2~|yALW26{AqON> z?@5Yah5|rXWqP)@5K`Gc72}D;gz0TDuC{Qhijl;uD5ER5V7{!7II^L|fmNX2o8 zuINu%0{{Zpp#CDW88|pF8M&G{GD1%N*|PrU54~#70RRc|M*xVipCpby5KL{XjQ$&f z<$~>SAMT%=%C8+zBa! zV#xA$6BUFk`3Lxd7vld^o-IK{W&XF;D%1yyZ<`@Z#5%~q`bX7`=)bFCzWZmBNVM#T zaFAI51>t8xf~B4$m~6zSGXXM_^lkL)4gZTR!5U(a{wd@lf{EG@vB6PdKzQ=Mt_Ub} z7ltaxOhbpP>|;DZhb*+`gB!(wguhFEcd+GfgJ=>7|IaxIQwY8j0}@dDg_+S_ck@WU zi-+ip`3Gi8F(SCF2NCOE^WznL-@6G&6_$Ugaa{`b6$cXjzJ#kZJ4?+Wm(vM^P5P(8 zz=}Tx#M#Wy$mYL{hDu09__aPnHEqc8Cqi@OZv-*gsB`!NXS@8r&g1}2exVmc{V2*3^(8rVb@NctN#`ce9t9}Qdvk^Y8#N~wn2#Gj;P zAvADr2`WCyzd9rb0jf1e1M|xP$qoM+t*0d1M^g3QNyrlIFWdf2vHl0B%2QVEpWUOj zMguQHxVzv*xhGzE|4|7OTQo50EGh|@K^_SIyGu{WUnGC40XYLZqJfzgQAxp`Ps=|I z{Qt9Q6Zik%V}sk|fr!5cazq}|be0d=BM;zjgW@Sbq@M!O!1za~`2V`|JdNf5b1ta` zL*~FSDlRxh;YlB!hR*(}Q-2s5nB^Q5=U-+ydQ>1i8tpNdmhAUnJPpkHvtgZ2XbH(c z+<)QtKw@#B$x_fBBeh6=<2;SO`ct75NYP)AqQ9^5r;m}30a<@1;Z(>>_#-?^Q3e*` UXaN8b$j>Lp&C|9H@(1w$0ADB#yZ`_I delta 47580 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 diff --git a/README.md b/README.md index 71a2f30..de80641 100644 --- a/README.md +++ b/README.md @@ -16,11 +16,11 @@ - [x] Search element #### In progress +- [ ] Auto next episode +- [ ] Change audio and subtitles language inside player - [ ] Browse elements by categories #### Pending -- [ ] Auto next episode -- [ ] Change audio and subtitles language inside player - [ ] History screen - [ ] My list screen and workflow - [ ] Settings screen @@ -44,4 +44,11 @@ - Right click on the project - Configure - Convert To Tizen Project -8. The app opens on the TV and will be installed. \ No newline at end of file +8. The app opens on the TV and will be installed. + +## Instalation CLI + +1. Set tizen var + - Linux: ```export PATH=$PATH:/tizen-studio/tools/ide/bin``` + - Windows: ```set PATH=%PATH%;/tizen-studio/tools/ide/bin``` +2. In project folder run: ```npm run install --tv=``` \ No newline at end of file diff --git a/css/app.css b/css/app.css index 5bacb76..054fee1 100644 --- a/css/app.css +++ b/css/app.css @@ -70,4 +70,14 @@ body { font-size: 3rem; color: #fff; text-align: center; +} + +#console { + width: 50%; + height: 50%; + color: #fff; + padding: 25px; + position: absolute; + z-index: 300; + overflow: auto; } \ No newline at end of file diff --git a/index.html b/index.html index eb43b13..a8b9114 100644 --- a/index.html +++ b/index.html @@ -28,6 +28,7 @@ +
+ diff --git a/js/keys.js b/js/keys.js index 1b00a33..0a397ab 100644 --- a/js/keys.js +++ b/js/keys.js @@ -20,6 +20,7 @@ window.tvKey = { KEY_PAUSE: 19, KEY_RECORD: 416, KEY_PLAY: 415, + KEY_PLAY_PAUSE: 10252, KEY_STOP: 413, KEY_INFO: 457, KEY_LEFT: 37, diff --git a/package.json b/package.json index 615bc6a..f8ed035 100644 --- a/package.json +++ b/package.json @@ -4,14 +4,13 @@ "description": "## Description:", "main": "index.js", "scripts": { - "build": "tizen build-web -opt -out dist -e package.json layouts.gif .gitignore *.md .github/*/* server/mock/*", - "package": "tizen package -t wgt -- dist", - "install-emulator": "tizen install -t T-samsung-7.0-x86 --name Crunchyroll.wgt", - "run-emulator": "tizen run -t T-samsung-7.0-x86 -p qXuEoRvlCp.Crunchyroll", - "install-tv": "tizen install -t UN65MU6100 --name Crunchyroll.wgt", - "run-tv": "tizen run -t UN65MU6100 -p qXuEoRvlCp.Crunchyroll", - "start": "npm run build && npm run package && npm run install-emulator && npm run run-emulator", - "start-tv": "npm run build && npm run package && npm run install-tv && npm run run-tv" + "build": "tizen build-web -opt -out dist -e package.json layouts.gif .gitignore *.md **.github/* server/mock/* **.git/*", + "package": "tizen package -t wgt -- dist -o .", + "install": "tizen install -t $npm_config_tv --name Crunchyroll.wgt", + "init": "tizen run -t $npm_config_tv -p qXuEoRvlCp.Crunchyroll", + "start-tv": "npm run build && npm run package && npm run install --tv=$npm_config_tv && npm run init --tv=$npm_config_tv", + "start": "npm run start-tv --tv=T-samsung-7.0-x86", + "run": "npm run start-tv --tv=LS27AM500NLXZB" }, "repository": { "type": "git", diff --git a/server/css/exit.css b/server/css/exit.css index 7a217ee..170a656 100644 --- a/server/css/exit.css +++ b/server/css/exit.css @@ -5,6 +5,7 @@ position: absolute; left: 0; top: 0; + z-index: 5; } #exit-screen .content { @@ -51,5 +52,5 @@ #exit-screen .button.selected { background: #f47521; - box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; + /* box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; */ } \ No newline at end of file diff --git a/server/css/home.css b/server/css/home.css index 1fc0c3a..1290a8a 100644 --- a/server/css/home.css +++ b/server/css/home.css @@ -26,13 +26,13 @@ #home-screen .content { height: 100vh; - transition: margin 0.5s; + /* transition: margin 0.5s; */ } #home-screen .content .details { height: 50vh; position: relative; - transition: all 0.5s; + /* transition: all 0.5s; */ overflow: hidden; } @@ -46,7 +46,7 @@ top: 0; bottom: 0; margin: auto; - transition: all 0.5s; + /* transition: all 0.5s; */ width: 60%; background: linear-gradient( 90deg, @@ -67,12 +67,29 @@ position: absolute; width: 100%; height: 100%; - box-shadow: 240px -200px 1000px 0 rgb(0, 0, 0) inset; - transition: background 0.5s; + background: linear-gradient(90deg, rgb(0, 0, 0) 0%, rgba(0,0,0,0) 50%); + /* box-shadow: 240px -200px 1000px 0 rgb(0, 0, 0) inset; */ + /* transition: background 0.5s; */ +} + +#home-screen .content .details .background::before { + content: ""; + position: absolute; + width: 100%; + height: 100%; + background: linear-gradient(0deg, rgba(0,0,0,1) 0%, rgba(0,0,0,0) 50%); + z-index: 1; + /* box-shadow: 240px -200px 1000px 0 rgb(0, 0, 0) inset; */ + /* transition: background 0.5s; */ } #home-screen .content .details.full .background::after { - box-shadow: 760px -250px 1000px 0 rgba(0, 0, 0, 0.7) inset; + background: linear-gradient(90deg, rgba(0,0,0,0.75) 0%, rgba(0,0,0,0.50) 45%, rgba(0,0,0,0) 80%, rgba(0,0,0,0) 100%); + /* box-shadow: 760px -250px 1000px 0 rgba(0, 0, 0, 0.7) inset; */ +} + +#home-screen .content .details.full .background::before { + background: none; } #home-screen .content .details .background img { @@ -95,6 +112,7 @@ display: flex; flex-direction: column; justify-content: center; + z-index: 1; } #home-screen .content .details .info .title { @@ -102,9 +120,9 @@ font-size: 5vh; font-weight: bolder; text-transform: uppercase; - text-shadow: #fff; + /* text-shadow: #fff; text-shadow: -1px 1px 0 #fff, 1px 1px 0 #fff, 1px -1px 0 #fff, - -1px -1px 0 #fff; + -1px -1px 0 #fff; */ max-height: 200px; } @@ -113,7 +131,7 @@ font-size: 2.5vh; margin: 30px 0; max-height: 280px; - transition: max-height 1s; + /* transition: max-height 1s; */ } #home-screen .content .details .info .description.hide { @@ -151,9 +169,9 @@ #home-screen .content .details .info .buttons a.selected { border: 2px solid rgb(244, 130, 33, 0.9); box-sizing: border-box; - box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; + /* box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; */ color: rgb(250, 150, 60); - text-shadow: 0 0 25px #f47521, 0 0 15px #f47521, 0 0 15px #f47521; + /* text-shadow: 0 0 25px #f47521, 0 0 15px #f47521, 0 0 15px #f47521; */ opacity: 1; } @@ -162,7 +180,7 @@ display: inline-block; cursor: pointer; margin: 0px 8px; - transition: 350ms all; + /* transition: 350ms all; */ transform-origin: center left; } @@ -196,7 +214,7 @@ rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0) 100% ); - transition: 450ms opacity; + /* transition: 450ms opacity; */ color: #ecf0f1; } @@ -267,7 +285,7 @@ top: 0; margin-left: 8.3vw; box-sizing: border-box; - box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; + /* box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; */ } #home-screen .content .row .row-content.episode.selected::after { @@ -339,14 +357,14 @@ .home_details-screen.home_details-screen_buttons a.selected { border: 2px solid rgb(244, 130, 33, 0.9); box-sizing: border-box; - box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; + /* box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; */ opacity: 1; } .home_details-screen.home_details-screen_buttons a.selected p, .home_details-screen.home_details-screen_buttons a.selected i { color: rgb(250, 150, 60); - text-shadow: 0 0 25px #f47521, 0 0 15px #f47521, 0 0 15px #f47521; + /* text-shadow: 0 0 25px #f47521, 0 0 15px #f47521, 0 0 15px #f47521; */ opacity: 1; } @@ -387,8 +405,8 @@ .home_episodes-screen.home_episodes-screen_content .seasons .title { color: #fff; - text-shadow: -1px 1px 0 #fff, 1px 1px 0 #fff, 1px -1px 0 #fff, - -1px -1px 0 #fff; + /* text-shadow: -1px 1px 0 #fff, 1px 1px 0 #fff, 1px -1px 0 #fff, + -1px -1px 0 #fff; */ text-transform: uppercase; font-weight: bolder; font-size: 5vh; @@ -420,7 +438,7 @@ .seasons .seasons-list .season.selected { - box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; + /* box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; */ border: 2px solid rgb(244, 130, 33, 0.9); filter: grayscale(1); opacity: 0.5; @@ -467,7 +485,7 @@ top: 0; margin-left: -5px; box-sizing: border-box; - box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; + /* box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; */ margin-top: 25px; opacity: 0; } @@ -484,7 +502,7 @@ .episodes-list .slick-slide { opacity: 0.5; - transition: all 0.5s; + /* transition: all 0.5s; */ } .home_episodes-screen.home_episodes-screen_content diff --git a/server/css/keyboard.css b/server/css/keyboard.css index 06e7ee1..19d3511 100644 --- a/server/css/keyboard.css +++ b/server/css/keyboard.css @@ -104,7 +104,7 @@ position: absolute; bottom: -0.3rem; left: 0; - box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; + /* box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; */ } #keyboard-screen .col.size-5.selected::before { diff --git a/server/css/login.css b/server/css/login.css index e945517..c959bb7 100644 --- a/server/css/login.css +++ b/server/css/login.css @@ -40,7 +40,7 @@ position: relative; display: flex; margin: 0 auto; - transition: border-color 0.2s cubic-bezier(0.5, 0, 0.25, 1); + /* transition: border-color 0.2s cubic-bezier(0.5, 0, 0.25, 1); */ padding: 5px 15px; margin: 20px 0; } @@ -57,7 +57,7 @@ #login-screen .content .box .form .input.focus::after { background: #f47521; - box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; + /* box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; */ } #login-screen .content .box .form .input input { @@ -87,5 +87,5 @@ #login-screen .content .box .form .button.focus { background: #f47521; - box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; + /* box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; */ } diff --git a/server/css/menu.css b/server/css/menu.css index aa2b3e9..cca2176 100644 --- a/server/css/menu.css +++ b/server/css/menu.css @@ -10,7 +10,7 @@ height: 100%; width: 150px; padding: 50px 35px 50px 65px; - transition: all 0.3s; + /* transition: all 0.3s; */ display: flex; flex-direction: column; justify-content: space-between; @@ -45,7 +45,7 @@ margin: 0; line-height: 22px; text-transform: uppercase; - transition: width 0.3s; + /* transition: width 0.3s; */ white-space: nowrap; color: #fff; font-size: 18px; @@ -90,7 +90,7 @@ margin-left: 20px; line-height: 22px; text-transform: uppercase; - transition: width 0.3s; + /* transition: width 0.3s; */ white-space: nowrap; } @@ -106,7 +106,7 @@ #menu-screen .content .tools .option.focus::after { content: ""; background: #f47521; - box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; + /* box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; */ width: 10px; height: calc(100% + 30px); position: absolute; diff --git a/server/css/search.css b/server/css/search.css index bfe210f..fcb4a9f 100644 --- a/server/css/search.css +++ b/server/css/search.css @@ -7,7 +7,7 @@ #search-screen .content { height: 100vh; - transition: margin 0.5s; + /* transition: margin 0.5s; */ padding: 60px 60px 60px 8.5vw; } @@ -15,7 +15,7 @@ position: relative; display: flex; margin: 0 auto; - transition: border-color 0.2s cubic-bezier(0.5, 0, 0.25, 1); + /* transition: border-color 0.2s cubic-bezier(0.5, 0, 0.25, 1); */ padding: 5px 15px; width: 40%; margin: auto; @@ -33,7 +33,7 @@ #search-screen .content .input.focus::after { background: #f47521; - box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; + /* box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; */ } #search-screen .content .input input { @@ -55,7 +55,7 @@ } #search-screen .content .list-container .list-container-over { - transition: margin 0.5s; + /* transition: margin 0.2s; */ } #search-screen .content .list-container .list-container-over .item { @@ -98,10 +98,10 @@ left: 0; box-sizing: border-box; border: 3px solid rgb(114, 114, 114); - box-shadow: 0 0 25px 6px #727272, 0 0 15px 6px #727272 inset; + /* box-shadow: 0 0 25px 6px #727272, 0 0 15px 6px #727272 inset; */ } #search-screen .content .list-container.focus .list-container-over .item.selected::after{ border: 3px solid rgb(244, 130, 33, 0.9); - box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; + /* box-shadow: 0 0 25px 6px #f47521, 0 0 15px 6px #f47521 inset; */ } \ No newline at end of file diff --git a/server/css/video.css b/server/css/video.css index c111b17..91c4896 100644 --- a/server/css/video.css +++ b/server/css/video.css @@ -36,7 +36,7 @@ left: 0; top: 0; opacity: 0; - transition: opacity 0.5s; + /* transition: opacity 0.5s; */ } #video-screen .osd .details { @@ -75,7 +75,7 @@ width: 8vw; height: 10vw; opacity: 0; - transition: opacity 0.2s; + /* transition: opacity 0.2s; */ } #video-screen .icon-status .icon { @@ -107,7 +107,7 @@ border-style: solid; display: inline-block; vertical-align: middle; - transition: all 0.25s; + /* transition: all 0.25s; */ } #video-screen .icon-status.play .icon:before { @@ -199,10 +199,10 @@ background-color: rgba(255, 255, 255, 0.4); width: 100%; height: 1.5rem; + overflow: hidden; } #video-screen .osd .progress .bar #played { - border-radius: 50px; background-color: #fff; width: 0%; height: 1.5rem; diff --git a/server/js/core/hls.min.js b/server/js/core/hls.min.js new file mode 100644 index 0000000..ce60c4f --- /dev/null +++ b/server/js/core/hls.min.js @@ -0,0 +1,2 @@ +!function t(e){var r,i;r=this,i=function(){"use strict";function r(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function i(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,i=new Array(e);r=t.length?{done:!0}:{done:!1,value:t[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function m(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var i=r.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}var p={};!function(t,e){var r,i,n,a,s;r=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,i=/^(?=([^\/?#]*))\1([^]*)$/,n=/(?:\/|^)\.(?=\/)/g,a=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,s={buildAbsoluteURL:function(t,e,r){if(r=r||{},t=t.trim(),!(e=e.trim())){if(!r.alwaysNormalize)return t;var n=s.parseURL(t);if(!n)throw new Error("Error trying to parse base URL.");return n.path=s.normalizePath(n.path),s.buildURLFromParts(n)}var a=s.parseURL(e);if(!a)throw new Error("Error trying to parse relative URL.");if(a.scheme)return r.alwaysNormalize?(a.path=s.normalizePath(a.path),s.buildURLFromParts(a)):e;var o=s.parseURL(t);if(!o)throw new Error("Error trying to parse base URL.");if(!o.netLoc&&o.path&&"/"!==o.path[0]){var l=i.exec(o.path);o.netLoc=l[1],o.path=l[2]}o.netLoc&&!o.path&&(o.path="/");var u={scheme:o.scheme,netLoc:a.netLoc,path:null,params:a.params,query:a.query,fragment:a.fragment};if(!a.netLoc&&(u.netLoc=o.netLoc,"/"!==a.path[0]))if(a.path){var h=o.path,d=h.substring(0,h.lastIndexOf("/")+1)+a.path;u.path=s.normalizePath(d)}else u.path=o.path,a.params||(u.params=o.params,a.query||(u.query=o.query));return null===u.path&&(u.path=r.alwaysNormalize?s.normalizePath(a.path):a.path),s.buildURLFromParts(u)},parseURL:function(t){var e=r.exec(t);return e?{scheme:e[1]||"",netLoc:e[2]||"",path:e[3]||"",params:e[4]||"",query:e[5]||"",fragment:e[6]||""}:null},normalizePath:function(t){for(t=t.split("").reverse().join("").replace(n,"");t.length!==(t=t.replace(a,"")).length;);return t.split("").reverse().join("")},buildURLFromParts:function(t){return t.scheme+t.netLoc+t.path+t.params+t.query+t.fragment}},t.exports=s}({get exports(){return p},set exports(t){p=t}});var y=Number.isFinite||function(t){return"number"==typeof t&&isFinite(t)},T=function(t){return t.MEDIA_ATTACHING="hlsMediaAttaching",t.MEDIA_ATTACHED="hlsMediaAttached",t.MEDIA_DETACHING="hlsMediaDetaching",t.MEDIA_DETACHED="hlsMediaDetached",t.BUFFER_RESET="hlsBufferReset",t.BUFFER_CODECS="hlsBufferCodecs",t.BUFFER_CREATED="hlsBufferCreated",t.BUFFER_APPENDING="hlsBufferAppending",t.BUFFER_APPENDED="hlsBufferAppended",t.BUFFER_EOS="hlsBufferEos",t.BUFFER_FLUSHING="hlsBufferFlushing",t.BUFFER_FLUSHED="hlsBufferFlushed",t.MANIFEST_LOADING="hlsManifestLoading",t.MANIFEST_LOADED="hlsManifestLoaded",t.MANIFEST_PARSED="hlsManifestParsed",t.LEVEL_SWITCHING="hlsLevelSwitching",t.LEVEL_SWITCHED="hlsLevelSwitched",t.LEVEL_LOADING="hlsLevelLoading",t.LEVEL_LOADED="hlsLevelLoaded",t.LEVEL_UPDATED="hlsLevelUpdated",t.LEVEL_PTS_UPDATED="hlsLevelPtsUpdated",t.LEVELS_UPDATED="hlsLevelsUpdated",t.AUDIO_TRACKS_UPDATED="hlsAudioTracksUpdated",t.AUDIO_TRACK_SWITCHING="hlsAudioTrackSwitching",t.AUDIO_TRACK_SWITCHED="hlsAudioTrackSwitched",t.AUDIO_TRACK_LOADING="hlsAudioTrackLoading",t.AUDIO_TRACK_LOADED="hlsAudioTrackLoaded",t.SUBTITLE_TRACKS_UPDATED="hlsSubtitleTracksUpdated",t.SUBTITLE_TRACKS_CLEARED="hlsSubtitleTracksCleared",t.SUBTITLE_TRACK_SWITCH="hlsSubtitleTrackSwitch",t.SUBTITLE_TRACK_LOADING="hlsSubtitleTrackLoading",t.SUBTITLE_TRACK_LOADED="hlsSubtitleTrackLoaded",t.SUBTITLE_FRAG_PROCESSED="hlsSubtitleFragProcessed",t.CUES_PARSED="hlsCuesParsed",t.NON_NATIVE_TEXT_TRACKS_FOUND="hlsNonNativeTextTracksFound",t.INIT_PTS_FOUND="hlsInitPtsFound",t.FRAG_LOADING="hlsFragLoading",t.FRAG_LOAD_EMERGENCY_ABORTED="hlsFragLoadEmergencyAborted",t.FRAG_LOADED="hlsFragLoaded",t.FRAG_DECRYPTED="hlsFragDecrypted",t.FRAG_PARSING_INIT_SEGMENT="hlsFragParsingInitSegment",t.FRAG_PARSING_USERDATA="hlsFragParsingUserdata",t.FRAG_PARSING_METADATA="hlsFragParsingMetadata",t.FRAG_PARSED="hlsFragParsed",t.FRAG_BUFFERED="hlsFragBuffered",t.FRAG_CHANGED="hlsFragChanged",t.FPS_DROP="hlsFpsDrop",t.FPS_DROP_LEVEL_CAPPING="hlsFpsDropLevelCapping",t.ERROR="hlsError",t.DESTROYING="hlsDestroying",t.KEY_LOADING="hlsKeyLoading",t.KEY_LOADED="hlsKeyLoaded",t.LIVE_BACK_BUFFER_REACHED="hlsLiveBackBufferReached",t.BACK_BUFFER_REACHED="hlsBackBufferReached",t}({}),E=function(t){return t.NETWORK_ERROR="networkError",t.MEDIA_ERROR="mediaError",t.KEY_SYSTEM_ERROR="keySystemError",t.MUX_ERROR="muxError",t.OTHER_ERROR="otherError",t}({}),S=function(t){return t.KEY_SYSTEM_NO_KEYS="keySystemNoKeys",t.KEY_SYSTEM_NO_ACCESS="keySystemNoAccess",t.KEY_SYSTEM_NO_SESSION="keySystemNoSession",t.KEY_SYSTEM_NO_CONFIGURED_LICENSE="keySystemNoConfiguredLicense",t.KEY_SYSTEM_LICENSE_REQUEST_FAILED="keySystemLicenseRequestFailed",t.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED="keySystemServerCertificateRequestFailed",t.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED="keySystemServerCertificateUpdateFailed",t.KEY_SYSTEM_SESSION_UPDATE_FAILED="keySystemSessionUpdateFailed",t.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED="keySystemStatusOutputRestricted",t.KEY_SYSTEM_STATUS_INTERNAL_ERROR="keySystemStatusInternalError",t.MANIFEST_LOAD_ERROR="manifestLoadError",t.MANIFEST_LOAD_TIMEOUT="manifestLoadTimeOut",t.MANIFEST_PARSING_ERROR="manifestParsingError",t.MANIFEST_INCOMPATIBLE_CODECS_ERROR="manifestIncompatibleCodecsError",t.LEVEL_EMPTY_ERROR="levelEmptyError",t.LEVEL_LOAD_ERROR="levelLoadError",t.LEVEL_LOAD_TIMEOUT="levelLoadTimeOut",t.LEVEL_PARSING_ERROR="levelParsingError",t.LEVEL_SWITCH_ERROR="levelSwitchError",t.AUDIO_TRACK_LOAD_ERROR="audioTrackLoadError",t.AUDIO_TRACK_LOAD_TIMEOUT="audioTrackLoadTimeOut",t.SUBTITLE_LOAD_ERROR="subtitleTrackLoadError",t.SUBTITLE_TRACK_LOAD_TIMEOUT="subtitleTrackLoadTimeOut",t.FRAG_LOAD_ERROR="fragLoadError",t.FRAG_LOAD_TIMEOUT="fragLoadTimeOut",t.FRAG_DECRYPT_ERROR="fragDecryptError",t.FRAG_PARSING_ERROR="fragParsingError",t.FRAG_GAP="fragGap",t.REMUX_ALLOC_ERROR="remuxAllocError",t.KEY_LOAD_ERROR="keyLoadError",t.KEY_LOAD_TIMEOUT="keyLoadTimeOut",t.BUFFER_ADD_CODEC_ERROR="bufferAddCodecError",t.BUFFER_INCOMPATIBLE_CODECS_ERROR="bufferIncompatibleCodecsError",t.BUFFER_APPEND_ERROR="bufferAppendError",t.BUFFER_APPENDING_ERROR="bufferAppendingError",t.BUFFER_STALLED_ERROR="bufferStalledError",t.BUFFER_FULL_ERROR="bufferFullError",t.BUFFER_SEEK_OVER_HOLE="bufferSeekOverHole",t.BUFFER_NUDGE_ON_STALL="bufferNudgeOnStall",t.INTERNAL_EXCEPTION="internalException",t.INTERNAL_ABORTED="aborted",t.UNKNOWN="unknown",t}({}),L=function(){},R={trace:L,debug:L,log:L,warn:L,info:L,error:L},A=R;function k(t){var e=self.console[t];return e?e.bind(self.console,"["+t+"] >"):L}function b(t,e){if(self.console&&!0===t||"object"==typeof t){!function(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),i=1;iNumber.MAX_SAFE_INTEGER?1/0:e},e.hexadecimalInteger=function(t){if(this[t]){var e=(this[t]||"0x").slice(2);e=(1&e.length?"0":"")+e;for(var r=new Uint8Array(e.length/2),i=0;iNumber.MAX_SAFE_INTEGER?1/0:e},e.decimalFloatingPoint=function(t){return parseFloat(this[t])},e.optionalFloat=function(t,e){var r=this[t];return r?parseFloat(r):e},e.enumeratedString=function(t){return this[t]},e.bool=function(t){return"YES"===this[t]},e.decimalResolution=function(t){var e=I.exec(this[t]);if(null!==e)return{width:parseInt(e[1],10),height:parseInt(e[2],10)}},t.parseAttrList=function(t){var e,r={};for(w.lastIndex=0;null!==(e=w.exec(t));){var i=e[2];0===i.indexOf('"')&&i.lastIndexOf('"')===i.length-1&&(i=i.slice(1,-1)),r[e[1].trim()]=i}return r},t}();function _(t){return"SCTE35-OUT"===t||"SCTE35-IN"===t}var P=function(){function t(t,e){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,e){var r=e.attr;for(var i in r)if(Object.prototype.hasOwnProperty.call(t,i)&&t[i]!==r[i]){D.warn('DATERANGE tag attribute: "'+i+'" does not match for tags with ID: "'+t.ID+'"'),this._badValueForSameId=i;break}t=o(new C({}),r,t)}if(this.attr=t,this._startDate=new Date(t["START-DATE"]),"END-DATE"in this.attr){var n=new Date(this.attr["END-DATE"]);y(n.getTime())&&(this._endDate=n)}}return a(t,[{key:"id",get:function(){return this.attr.ID}},{key:"class",get:function(){return this.attr.CLASS}},{key:"startDate",get:function(){return this._startDate}},{key:"endDate",get:function(){if(this._endDate)return this._endDate;var t=this.duration;return null!==t?new Date(this._startDate.getTime()+1e3*t):null}},{key:"duration",get:function(){if("DURATION"in this.attr){var t=this.attr.decimalFloatingPoint("DURATION");if(y(t))return t}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}},{key:"plannedDuration",get:function(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}},{key:"endOnNext",get:function(){return this.attr.bool("END-ON-NEXT")}},{key:"isValid",get:function(){return!!this.id&&!this._badValueForSameId&&y(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}]),t}(),x=function(){this.aborted=!1,this.loaded=0,this.retry=0,this.total=0,this.chunkCount=0,this.bwEstimate=0,this.loading={start:0,first:0,end:0},this.parsing={start:0,end:0},this.buffering={start:0,first:0,end:0}},F="audio",O="video",M="audiovideo",N=function(){function t(t){var e;this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams=((e={})[F]=null,e[O]=null,e[M]=null,e),this.baseurl=t}return t.prototype.setByteRange=function(t,e){var r=t.split("@",2),i=[];1===r.length?i[0]=e?e.byteRangeEndOffset:0:i[0]=parseInt(r[1]),i[1]=parseInt(r[0])+i[0],this._byteRange=i},a(t,[{key:"byteRange",get:function(){return this._byteRange?this._byteRange:[]}},{key:"byteRangeStartOffset",get:function(){return this.byteRange[0]}},{key:"byteRangeEndOffset",get:function(){return this.byteRange[1]}},{key:"url",get:function(){return!this._url&&this.baseurl&&this.relurl&&(this._url=p.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""},set:function(t){this._url=t}}]),t}(),U=function(t){function e(e,r){var i;return(i=t.call(this,r)||this)._decryptdata=null,i.rawProgramDateTime=null,i.programDateTime=null,i.tagList=[],i.duration=0,i.sn=0,i.levelkeys=void 0,i.type=void 0,i.loader=null,i.keyLoader=null,i.level=-1,i.cc=0,i.startPTS=void 0,i.endPTS=void 0,i.startDTS=void 0,i.endDTS=void 0,i.start=0,i.deltaPTS=void 0,i.maxStartPTS=void 0,i.minEndPTS=void 0,i.stats=new x,i.urlId=0,i.data=void 0,i.bitrateTest=!1,i.title=null,i.initSegment=null,i.endList=void 0,i.gap=void 0,i.type=e,i}l(e,t);var r=e.prototype;return r.setKeyFormat=function(t){if(this.levelkeys){var e=this.levelkeys[t];e&&!this._decryptdata&&(this._decryptdata=e.getDecryptData(this.sn))}},r.abortRequests=function(){var t,e;null==(t=this.loader)||t.abort(),null==(e=this.keyLoader)||e.abort()},r.setElementaryStreamInfo=function(t,e,r,i,n,a){void 0===a&&(a=!1);var s=this.elementaryStreams,o=s[t];o?(o.startPTS=Math.min(o.startPTS,e),o.endPTS=Math.max(o.endPTS,r),o.startDTS=Math.min(o.startDTS,i),o.endDTS=Math.max(o.endDTS,n)):s[t]={startPTS:e,endPTS:r,startDTS:i,endDTS:n,partial:a}},r.clearElementaryStreamInfo=function(){var t=this.elementaryStreams;t[F]=null,t[O]=null,t[M]=null},a(e,[{key:"decryptdata",get:function(){if(!this.levelkeys&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){var t=this.levelkeys.identity;if(t)this._decryptdata=t.getDecryptData(this.sn);else{var e=Object.keys(this.levelkeys);if(1===e.length)return this._decryptdata=this.levelkeys[e[0]].getDecryptData(this.sn)}}return this._decryptdata}},{key:"end",get:function(){return this.start+this.duration}},{key:"endProgramDateTime",get:function(){if(null===this.programDateTime)return null;if(!y(this.programDateTime))return null;var t=y(this.duration)?this.duration:0;return this.programDateTime+1e3*t}},{key:"encrypted",get:function(){var t;if(null!=(t=this._decryptdata)&&t.encrypted)return!0;if(this.levelkeys){var e=Object.keys(this.levelkeys),r=e.length;if(r>1||1===r&&this.levelkeys[e[0]].encrypted)return!0}return!1}}]),e}(N),B=function(t){function e(e,r,i,n,a){var s;(s=t.call(this,i)||this).fragOffset=0,s.duration=0,s.gap=!1,s.independent=!1,s.relurl=void 0,s.fragment=void 0,s.index=void 0,s.stats=new x,s.duration=e.decimalFloatingPoint("DURATION"),s.gap=e.bool("GAP"),s.independent=e.bool("INDEPENDENT"),s.relurl=e.enumeratedString("URI"),s.fragment=r,s.index=n;var o=e.enumeratedString("BYTERANGE");return o&&s.setByteRange(o,a),a&&(s.fragOffset=a.fragOffset+a.duration),s}return l(e,t),a(e,[{key:"start",get:function(){return this.fragment.start+this.fragOffset}},{key:"end",get:function(){return this.start+this.duration}},{key:"loaded",get:function(){var t=this.elementaryStreams;return!!(t.audio||t.video||t.audiovideo)}}]),e}(N),G=function(){function t(t){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.live=!0,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.availabilityDelay=void 0,this.misses=0,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.encryptedFragments=void 0,this.playlistParsingError=null,this.variableList=null,this.hasVariableRefs=!1,this.fragments=[],this.encryptedFragments=[],this.dateRanges={},this.url=t}return t.prototype.reloaded=function(t){if(!t)return this.advanced=!0,void(this.updated=!0);var e=this.lastPartSn-t.lastPartSn,r=this.lastPartIndex-t.lastPartIndex;this.updated=this.endSN!==t.endSN||!!r||!!e,this.advanced=this.endSN>t.endSN||e>0||0===e&&r>0,this.updated||this.advanced?this.misses=Math.floor(.6*t.misses):this.misses=t.misses+1,this.availabilityDelay=t.availabilityDelay},a(t,[{key:"hasProgramDateTime",get:function(){return!!this.fragments.length&&y(this.fragments[this.fragments.length-1].programDateTime)}},{key:"levelTargetDuration",get:function(){return this.averagetargetduration||this.targetduration||10}},{key:"drift",get:function(){var t=this.driftEndTime-this.driftStartTime;return t>0?1e3*(this.driftEnd-this.driftStart)/t:1}},{key:"edge",get:function(){return this.partEnd||this.fragmentEnd}},{key:"partEnd",get:function(){var t;return null!=(t=this.partList)&&t.length?this.partList[this.partList.length-1].end:this.fragmentEnd}},{key:"fragmentEnd",get:function(){var t;return null!=(t=this.fragments)&&t.length?this.fragments[this.fragments.length-1].end:0}},{key:"age",get:function(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}},{key:"lastPartIndex",get:function(){var t;return null!=(t=this.partList)&&t.length?this.partList[this.partList.length-1].index:-1}},{key:"lastPartSn",get:function(){var t;return null!=(t=this.partList)&&t.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}]),t}();function K(t){return Uint8Array.from(atob(t),(function(t){return t.charCodeAt(0)}))}function H(t){var e,r,i=t.split(":"),n=null;if("data"===i[0]&&2===i.length){var a=i[1].split(";"),s=a[a.length-1].split(",");if(2===s.length){var o="base64"===s[0],l=s[1];o?(a.splice(-1,1),n=K(l)):(e=V(l).subarray(0,16),(r=new Uint8Array(16)).set(e,16-e.length),n=r)}}return n}function V(t){return Uint8Array.from(unescape(encodeURIComponent(t)),(function(t){return t.charCodeAt(0)}))}var Y={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},W="org.w3.clearkey",j="com.apple.streamingkeydelivery",q="com.microsoft.playready",X="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";function z(t){switch(t){case j:return Y.FAIRPLAY;case q:return Y.PLAYREADY;case X:return Y.WIDEVINE;case W:return Y.CLEARKEY}}var Q="edef8ba979d64acea3c827dcd51d21ed";function $(t){switch(t){case Y.FAIRPLAY:return j;case Y.PLAYREADY:return q;case Y.WIDEVINE:return X;case Y.CLEARKEY:return W}}function J(t){var e=t.drmSystems,r=t.widevineLicenseUrl,i=e?[Y.FAIRPLAY,Y.WIDEVINE,Y.PLAYREADY,Y.CLEARKEY].filter((function(t){return!!e[t]})):[];return!i[Y.WIDEVINE]&&r&&i.push(Y.WIDEVINE),i}var Z="undefined"!=typeof self&&self.navigator&&self.navigator.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;function tt(t,e,r){return Uint8Array.prototype.slice?t.slice(e,r):new Uint8Array(Array.prototype.slice.call(t,e,r))}var et,rt=function(t,e){return e+10<=t.length&&73===t[e]&&68===t[e+1]&&51===t[e+2]&&t[e+3]<255&&t[e+4]<255&&t[e+6]<128&&t[e+7]<128&&t[e+8]<128&&t[e+9]<128},it=function(t,e){return e+10<=t.length&&51===t[e]&&68===t[e+1]&&73===t[e+2]&&t[e+3]<255&&t[e+4]<255&&t[e+6]<128&&t[e+7]<128&&t[e+8]<128&&t[e+9]<128},nt=function(t,e){for(var r=e,i=0;rt(t,e);)i+=10,i+=at(t,e+6),it(t,e+10)&&(i+=10),e+=i;if(i>0)return t.subarray(r,r+i)},at=function(t,e){var r=0;return r=(127&t[e])<<21,r|=(127&t[e+1])<<14,r|=(127&t[e+2])<<7,r|=127&t[e+3]},st=function(t,e){return rt(t,e)&&at(t,e+6)+10<=t.length-e},ot=function(t){return t&&"PRIV"===t.key&&"com.apple.streaming.transportStreamTimestamp"===t.info},lt=function(t){var e=String.fromCharCode(t[0],t[1],t[2],t[3]),r=at(t,4);return{type:e,size:r,data:t.subarray(10,10+r)}},ut=function(t){for(var e=0,r=[];rt(t,e);){for(var i=at(t,e+6),n=(e+=10)+i;e+8>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:u+=String.fromCharCode(a);break;case 12:case 13:s=t[h++],u+=String.fromCharCode((31&a)<<6|63&s);break;case 14:s=t[h++],o=t[h++],u+=String.fromCharCode((15&a)<<12|(63&s)<<6|(63&o)<<0)}}return u};function mt(){return et||void 0===self.TextDecoder||(et=new self.TextDecoder("utf-8")),et}var pt=function(t){for(var e="",r=0;r>24,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=255&r}function bt(t,e){var r=[];if(!e.length)return r;for(var i=t.byteLength,n=0;n1?n+a:i;if(St(t.subarray(n+4,n+8))===e[0])if(1===e.length)r.push(t.subarray(n+8,s));else{var o=bt(t.subarray(n+8,s),e.slice(1));o.length&&Tt.apply(r,o)}n=s}return r}function Dt(t){var e=[],r=t[0],i=8,n=Rt(t,i);i+=4,i+=0===r?8:16,i+=2;var a=t.length+0,s=Lt(t,i);i+=2;for(var o=0;o>>31)return D.warn("SIDX has hierarchical references (not supported)"),null;var d=Rt(t,l);l+=4,e.push({referenceSize:h,subsegmentDuration:d,info:{duration:d/n,start:a,end:a+h-1}}),a+=h,i=l+=4}return{earliestPresentationTime:0,timescale:n,version:r,referencesCount:s,references:e}}function It(t){for(var e=[],r=bt(t,["moov","trak"]),i=0;i>1&63;return 39===r||40===r}return 6==(31&e)}function Ft(t,e,r,i){var n=Ot(t),a=0;a+=e;for(var s=0,o=0,l=!1,u=0;a=n.length)break;s+=u=n[a++]}while(255===u);o=0;do{if(a>=n.length)break;o+=u=n[a++]}while(255===u);var h=n.length-a;if(!l&&4===s&&a16){for(var T=[],E=0;E<16;E++){var S=n[a++].toString(16);T.push(1==S.length?"0"+S:S),3!==E&&5!==E&&7!==E&&9!==E||T.push("-")}for(var L=o-16,R=new Uint8Array(L),A=0;Ah)break}}function Ot(t){for(var e=t.byteLength,r=[],i=1;i0?(a=new Uint8Array(4),e.length>0&&new DataView(a.buffer).setUint32(0,e.length,!1)):a=new Uint8Array;var l=new Uint8Array(4);return r&&r.byteLength>0&&new DataView(l.buffer).setUint32(0,r.byteLength,!1),function(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),i=1;i>24&255,o[1]=a>>16&255,o[2]=a>>8&255,o[3]=255&a,o.set(t,4),s=0,a=8;s>8*(15-r)&255;return e}(e);return new t(this.method,this.uri,"identity",this.keyFormatVersions,r)}var i=H(this.uri);if(i)switch(this.keyFormat){case X:this.pssh=i,i.length>=22&&(this.keyId=i.subarray(i.length-22,i.length-6));break;case q:var n=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=Mt(n,null,i);var a=new Uint16Array(i.buffer,i.byteOffset,i.byteLength/2),s=String.fromCharCode.apply(null,Array.from(a)),o=s.substring(s.indexOf("<"),s.length),l=(new DOMParser).parseFromString(o,"text/xml").getElementsByTagName("KID")[0];if(l){var u=l.childNodes[0]?l.childNodes[0].nodeValue:l.getAttribute("VALUE");if(u){var h=K(u).subarray(0,16);!function(t){var e=function(t,e,r){var i=t[e];t[e]=t[r],t[r]=i};e(t,0,3),e(t,1,2),e(t,4,5),e(t,6,7)}(h),this.keyId=h}}break;default:var d=i.subarray(0,16);if(16!==d.length){var c=new Uint8Array(16);c.set(d,16-d.length),d=c}this.keyId=d}if(!this.keyId||16!==this.keyId.byteLength){var f=Nt[this.uri];if(!f){var g=Object.keys(Nt).length%Number.MAX_SAFE_INTEGER;f=new Uint8Array(16),new DataView(f.buffer,12,4).setUint32(0,g),Nt[this.uri]=f}this.keyId=f}return this},t}(),Bt=/\{\$([a-zA-Z0-9-_]+)\}/g;function Gt(t){return Bt.test(t)}function Kt(t,e,r){if(null!==t.variableList||t.hasVariableRefs)for(var i=r.length;i--;){var n=r[i],a=e[n];a&&(e[n]=Ht(t,a))}}function Ht(t,e){if(null!==t.variableList||t.hasVariableRefs){var r=t.variableList;return e.replace(Bt,(function(e){var i=e.substring(2,e.length-1),n=null==r?void 0:r[i];return void 0===n?(t.playlistParsingError||(t.playlistParsingError=new Error('Missing preceding EXT-X-DEFINE tag for Variable Reference: "'+i+'"')),e):n}))}return e}function Vt(t,e,r){var i,n,a=t.variableList;if(a||(t.variableList=a={}),"QUERYPARAM"in e){i=e.QUERYPARAM;try{var s=new self.URL(r).searchParams;if(!s.has(i))throw new Error('"'+i+'" does not match any query parameter in URI: "'+r+'"');n=s.get(i)}catch(e){t.playlistParsingError||(t.playlistParsingError=new Error("EXT-X-DEFINE QUERYPARAM: "+e.message))}}else i=e.NAME,n=e.VALUE;i in a?t.playlistParsingError||(t.playlistParsingError=new Error('EXT-X-DEFINE duplicate Variable Name declarations: "'+i+'"')):a[i]=n||""}function Yt(t,e,r){var i=e.IMPORT;if(r&&i in r){var n=t.variableList;n||(t.variableList=n={}),n[i]=r[i]}else t.playlistParsingError||(t.playlistParsingError=new Error('EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "'+i+'"'))}var Wt={audio:{a3ds:!0,"ac-3":!0,"ac-4":!0,alac:!0,alaw:!0,dra1:!0,"dts+":!0,"dts-":!0,dtsc:!0,dtse:!0,dtsh:!0,"ec-3":!0,enca:!0,g719:!0,g726:!0,m4ae:!0,mha1:!0,mha2:!0,mhm1:!0,mhm2:!0,mlpa:!0,mp4a:!0,"raw ":!0,Opus:!0,opus:!0,samr:!0,sawb:!0,sawp:!0,sevc:!0,sqcp:!0,ssmv:!0,twos:!0,ulaw:!0},video:{avc1:!0,avc2:!0,avc3:!0,avc4:!0,avcp:!0,av01:!0,drac:!0,dva1:!0,dvav:!0,dvh1:!0,dvhe:!0,encv:!0,hev1:!0,hvc1:!0,mjp2:!0,mp4v:!0,mvc1:!0,mvc2:!0,mvc3:!0,mvc4:!0,resv:!0,rv60:!0,s263:!0,svc1:!0,svc2:!0,"vc-1":!0,vp08:!0,vp09:!0},text:{stpp:!0,wvtt:!0}};function jt(t,e){return MediaSource.isTypeSupported((e||"video")+'/mp4;codecs="'+t+'"')}var qt=/#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\r\n]*)[\r\n]+/g,Xt=/#EXT-X-MEDIA:(.*)/g,zt=/^#EXT(?:INF|-X-TARGETDURATION):/m,Qt=new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,/(?!#) *(\S[\S ]*)/.source,/#EXT-X-BYTERANGE:*(.+)/.source,/#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,/#.*/.source].join("|"),"g"),$t=new RegExp([/#(EXTM3U)/.source,/#EXT-X-(DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source,/#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\d+)/.source,/#EXT-X-(DISCONTINUITY|ENDLIST|GAP)/.source,/(#)([^:]*):(.*)/.source,/(#)(.*)(?:.*)\r?\n?/.source].join("|")),Jt=function(){function t(){}return t.findGroup=function(t,e){for(var r=0;r2){var r=e.shift()+".";return r+=parseInt(e.shift()).toString(16),r+=("000"+parseInt(e.shift()).toString(16)).slice(-4)}return t},t.resolve=function(t,e){return p.buildAbsoluteURL(e,t,{alwaysNormalize:!0})},t.isMediaPlaylist=function(t){return zt.test(t)},t.parseMasterPlaylist=function(e,r){var i,n={contentSteering:null,levels:[],playlistParsingError:null,sessionData:null,sessionKeys:null,startTimeOffset:null,variableList:null,hasVariableRefs:Gt(e)},a=[];for(qt.lastIndex=0;null!=(i=qt.exec(e));)if(i[1]){var s,o=new C(i[1]);Kt(n,o,["CODECS","SUPPLEMENTAL-CODECS","ALLOWED-CPC","PATHWAY-ID","STABLE-VARIANT-ID","AUDIO","VIDEO","SUBTITLES","CLOSED-CAPTIONS","NAME"]);var l=Ht(n,i[2]),u={attrs:o,bitrate:o.decimalInteger("AVERAGE-BANDWIDTH")||o.decimalInteger("BANDWIDTH"),name:o.NAME,url:t.resolve(l,r)},h=o.decimalResolution("RESOLUTION");h&&(u.width=h.width,u.height=h.height),ee((o.CODECS||"").split(/[ ,]+/).filter((function(t){return t})),u),u.videoCodec&&-1!==u.videoCodec.indexOf("avc1")&&(u.videoCodec=t.convertAVC1ToAVCOTI(u.videoCodec)),null!=(s=u.unknownCodecs)&&s.length||a.push(u),n.levels.push(u)}else if(i[3]){var d=i[3],c=i[4];switch(d){case"SESSION-DATA":var f=new C(c);Kt(n,f,["DATA-ID","LANGUAGE","VALUE","URI"]);var g=f["DATA-ID"];g&&(null===n.sessionData&&(n.sessionData={}),n.sessionData[g]=f);break;case"SESSION-KEY":var v=Zt(c,r,n);v.encrypted&&v.isSupported()?(null===n.sessionKeys&&(n.sessionKeys=[]),n.sessionKeys.push(v)):D.warn('[Keys] Ignoring invalid EXT-X-SESSION-KEY tag: "'+c+'"');break;case"DEFINE":var m=new C(c);Kt(n,m,["NAME","VALUE","QUERYPARAM"]),Vt(n,m,r);break;case"CONTENT-STEERING":var p=new C(c);Kt(n,p,["SERVER-URI","PATHWAY-ID"]),n.contentSteering={uri:t.resolve(p["SERVER-URI"],r),pathwayId:p["PATHWAY-ID"]||"."};break;case"START":n.startTimeOffset=te(c)}}var y=a.length>0&&a.length0&&W.bool("CAN-SKIP-DATERANGES"),h.partHoldBack=W.optionalFloat("PART-HOLD-BACK",0),h.holdBack=W.optionalFloat("HOLD-BACK",0);break;case"PART-INF":var j=new C(I);h.partTarget=j.decimalFloatingPoint("PART-TARGET");break;case"PART":var q=h.partList;q||(q=h.partList=[]);var X=g>0?q[q.length-1]:void 0,z=g++,Q=new C(I);Kt(h,Q,["BYTERANGE","URI"]);var $=new B(Q,T,e,z,X);q.push($),T.duration+=$.duration;break;case"PRELOAD-HINT":var J=new C(I);Kt(h,J,["URI"]),h.preloadHint=J;break;case"RENDITION-REPORT":var Z=new C(I);Kt(h,Z,["URI"]),h.renditionReports=h.renditionReports||[],h.renditionReports.push(Z);break;default:D.warn("line parsed but not handled: "+s)}}}p&&!p.relurl?(d.pop(),v-=p.duration,h.partList&&(h.fragmentHint=p)):h.partList&&(ie(T,p),T.cc=m,h.fragmentHint=T,u&&ae(T,u,h));var tt=d.length,et=d[0],rt=d[tt-1];if((v+=h.skippedSegments*h.targetduration)>0&&tt&&rt){h.averagetargetduration=v/tt;var it=rt.sn;h.endSN="initSegment"!==it?it:0,h.live||(rt.endList=!0),et&&(h.startCC=et.cc)}else h.endSN=0,h.startCC=0;return h.fragmentHint&&(v+=h.fragmentHint.duration),h.totalduration=v,h.endCC=m,E>0&&function(t,e){for(var r=t[e],i=e;i--;){var n=t[i];if(!n)return;n.programDateTime=r.programDateTime-1e3*n.duration,r=n}}(d,E),h},t}();function Zt(t,e,r){var i,n,a=new C(t);Kt(r,a,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);var s=null!=(i=a.METHOD)?i:"",o=a.URI,l=a.hexadecimalInteger("IV"),u=a.KEYFORMATVERSIONS,h=null!=(n=a.KEYFORMAT)?n:"identity";o&&a.IV&&!l&&D.error("Invalid IV: "+a.IV);var d=o?Jt.resolve(o,e):"",c=(u||"1").split("/").map(Number).filter(Number.isFinite);return new Ut(s,d,h,c,l)}function te(t){var e=new C(t).decimalFloatingPoint("TIME-OFFSET");return y(e)?e:null}function ee(t,e){["video","audio","text"].forEach((function(r){var i=t.filter((function(t){return function(t,e){var r=Wt[e];return!!r&&!0===r[t.slice(0,4)]}(t,r)}));if(i.length){var n=i.filter((function(t){return 0===t.lastIndexOf("avc1",0)||0===t.lastIndexOf("mp4a",0)}));e[r+"Codec"]=n.length>0?n[0]:i[0],t=t.filter((function(t){return-1===i.indexOf(t)}))}})),e.unknownCodecs=t}function re(t,e,r){var i=e[r];i&&(t[r]=i)}function ie(t,e){t.rawProgramDateTime?t.programDateTime=Date.parse(t.rawProgramDateTime):null!=e&&e.programDateTime&&(t.programDateTime=e.endProgramDateTime),y(t.programDateTime)||(t.programDateTime=null,t.rawProgramDateTime=null)}function ne(t,e,r,i){t.relurl=e.URI,e.BYTERANGE&&t.setByteRange(e.BYTERANGE),t.level=r,t.sn="initSegment",i&&(t.levelkeys=i),t.initSegment=null}function ae(t,e,r){t.levelkeys=e;var i=r.encryptedFragments;i.length&&i[i.length-1].levelkeys===e||!Object.keys(e).some((function(t){return e[t].isCommonEncryption}))||i.push(t)}var se="manifest",oe="level",le="audioTrack",ue="subtitleTrack",he="main",de="audio",ce="subtitle";function fe(t){switch(t.type){case le:return de;case ue:return ce;default:return he}}function ge(t,e){var r=t.url;return void 0!==r&&0!==r.indexOf("data:")||(r=e.url),r}var ve=function(){function t(t){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=t,this.registerListeners()}var e=t.prototype;return e.startLoad=function(t){},e.stopLoad=function(){this.destroyInternalLoaders()},e.registerListeners=function(){var t=this.hls;t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.LEVEL_LOADING,this.onLevelLoading,this),t.on(T.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),t.on(T.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)},e.unregisterListeners=function(){var t=this.hls;t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.LEVEL_LOADING,this.onLevelLoading,this),t.off(T.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),t.off(T.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)},e.createInternalLoader=function(t){var e=this.hls.config,r=e.pLoader,i=e.loader,n=new(r||i)(e);return this.loaders[t.type]=n,n},e.getInternalLoader=function(t){return this.loaders[t.type]},e.resetInternalLoader=function(t){this.loaders[t]&&delete this.loaders[t]},e.destroyInternalLoaders=function(){for(var t in this.loaders){var e=this.loaders[t];e&&e.destroy(),this.resetInternalLoader(t)}},e.destroy=function(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()},e.onManifestLoading=function(t,e){var r=e.url;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:se,url:r,deliveryDirectives:null})},e.onLevelLoading=function(t,e){var r=e.id,i=e.level,n=e.url,a=e.deliveryDirectives;this.load({id:r,level:i,responseType:"text",type:oe,url:n,deliveryDirectives:a})},e.onAudioTrackLoading=function(t,e){var r=e.id,i=e.groupId,n=e.url,a=e.deliveryDirectives;this.load({id:r,groupId:i,level:null,responseType:"text",type:le,url:n,deliveryDirectives:a})},e.onSubtitleTrackLoading=function(t,e){var r=e.id,i=e.groupId,n=e.url,a=e.deliveryDirectives;this.load({id:r,groupId:i,level:null,responseType:"text",type:ue,url:n,deliveryDirectives:a})},e.load=function(t){var e,r,i,n=this,a=this.hls.config,s=this.getInternalLoader(t);if(s){var l=s.context;if(l&&l.url===t.url)return void D.trace("[playlist-loader]: playlist request ongoing");D.log("[playlist-loader]: aborting previous loader for type: "+t.type),s.abort()}if(r=t.type===se?a.manifestLoadPolicy.default:o({},a.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),s=this.createInternalLoader(t),null!=(e=t.deliveryDirectives)&&e.part&&(t.type===oe&&null!==t.level?i=this.hls.levels[t.level].details:t.type===le&&null!==t.id?i=this.hls.audioTracks[t.id].details:t.type===ue&&null!==t.id&&(i=this.hls.subtitleTracks[t.id].details),i)){var u=i.partTarget,h=i.targetduration;if(u&&h){var d=1e3*Math.max(3*u,.8*h);r=o({},r,{maxTimeToFirstByteMs:Math.min(d,r.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(d,r.maxTimeToFirstByteMs)})}}var c=r.errorRetry||r.timeoutRetry||{},f={loadPolicy:r,timeout:r.maxLoadTimeMs,maxRetry:c.maxNumRetry||0,retryDelay:c.retryDelayMs||0,maxRetryDelay:c.maxRetryDelayMs||0},g={onSuccess:function(t,e,r,i){var a=n.getInternalLoader(r);n.resetInternalLoader(r.type);var s=t.data;0===s.indexOf("#EXTM3U")?(e.parsing.start=performance.now(),Jt.isMediaPlaylist(s)?n.handleTrackOrLevelPlaylist(t,e,r,i||null,a):n.handleMasterPlaylist(t,e,r,i)):n.handleManifestParsingError(t,r,new Error("no EXTM3U delimiter"),i||null,e)},onError:function(t,e,r,i){n.handleNetworkError(e,r,!1,t,i)},onTimeout:function(t,e,r){n.handleNetworkError(e,r,!0,void 0,t)}};s.load(t,f,g)},e.handleMasterPlaylist=function(t,e,r,i){var n=this.hls,a=t.data,s=ge(t,r),o=Jt.parseMasterPlaylist(a,s);if(o.playlistParsingError)this.handleManifestParsingError(t,r,o.playlistParsingError,i,e);else{var l=o.contentSteering,u=o.levels,h=o.sessionData,d=o.sessionKeys,c=o.startTimeOffset,f=o.variableList;this.variableList=f;var g=Jt.parseMasterPlaylistMedia(a,s,o),v=g.AUDIO,m=void 0===v?[]:v,p=g.SUBTITLES,y=g["CLOSED-CAPTIONS"];m.length&&(m.some((function(t){return!t.url}))||!u[0].audioCodec||u[0].attrs.AUDIO||(D.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),m.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new C({}),bitrate:0,url:""}))),n.trigger(T.MANIFEST_LOADED,{levels:u,audioTracks:m,subtitles:p,captions:y,contentSteering:l,url:s,stats:e,networkDetails:i,sessionData:h,sessionKeys:d,startTimeOffset:c,variableList:f})}},e.handleTrackOrLevelPlaylist=function(t,e,r,i,n){var a=this.hls,s=r.id,o=r.level,l=r.type,u=ge(t,r),h=y(s)?s:0,d=y(o)?o:h,c=fe(r),f=Jt.parseLevelPlaylist(t.data,u,d,c,h,this.variableList);if(l===se){var g={attrs:new C({}),bitrate:0,details:f,name:"",url:u};a.trigger(T.MANIFEST_LOADED,{levels:[g],audioTracks:[],url:u,stats:e,networkDetails:i,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}e.parsing.end=performance.now(),r.levelDetails=f,this.handlePlaylistLoaded(f,t,e,r,i,n)},e.handleManifestParsingError=function(t,e,r,i,n){this.hls.trigger(T.ERROR,{type:E.NETWORK_ERROR,details:S.MANIFEST_PARSING_ERROR,fatal:e.type===se,url:t.url,err:r,error:r,reason:r.message,response:t,context:e,networkDetails:i,stats:n})},e.handleNetworkError=function(t,e,r,n,a){void 0===r&&(r=!1);var s="A network "+(r?"timeout":"error"+(n?" (status "+n.code+")":""))+" occurred while loading "+t.type;t.type===oe?s+=": "+t.level+" id: "+t.id:t.type!==le&&t.type!==ue||(s+=" id: "+t.id+' group-id: "'+t.groupId+'"');var o=new Error(s);D.warn("[playlist-loader]: "+s);var l=S.UNKNOWN,u=!1,h=this.getInternalLoader(t);switch(t.type){case se:l=r?S.MANIFEST_LOAD_TIMEOUT:S.MANIFEST_LOAD_ERROR,u=!0;break;case oe:l=r?S.LEVEL_LOAD_TIMEOUT:S.LEVEL_LOAD_ERROR,u=!1;break;case le:l=r?S.AUDIO_TRACK_LOAD_TIMEOUT:S.AUDIO_TRACK_LOAD_ERROR,u=!1;break;case ue:l=r?S.SUBTITLE_TRACK_LOAD_TIMEOUT:S.SUBTITLE_LOAD_ERROR,u=!1}h&&this.resetInternalLoader(t.type);var d={type:E.NETWORK_ERROR,details:l,fatal:u,url:t.url,loader:h,context:t,error:o,networkDetails:e,stats:a};if(n){var c=(null==e?void 0:e.url)||t.url;d.response=i({url:c,data:void 0},n)}this.hls.trigger(T.ERROR,d)},e.handlePlaylistLoaded=function(t,e,r,i,n,a){var s=this.hls,o=i.type,l=i.level,u=i.id,h=i.groupId,d=i.deliveryDirectives,c=ge(e,i),f=fe(i),g="number"==typeof i.level&&f===he?l:void 0;if(t.fragments.length){t.targetduration||(t.playlistParsingError=new Error("Missing Target Duration"));var v=t.playlistParsingError;if(v)s.trigger(T.ERROR,{type:E.NETWORK_ERROR,details:S.LEVEL_PARSING_ERROR,fatal:!1,url:c,error:v,reason:v.message,response:e,context:i,level:g,parent:f,networkDetails:n,stats:r});else switch(t.live&&a&&(a.getCacheAge&&(t.ageHeader=a.getCacheAge()||0),a.getCacheAge&&!isNaN(t.ageHeader)||(t.ageHeader=0)),o){case se:case oe:s.trigger(T.LEVEL_LOADED,{details:t,level:g||0,id:u||0,stats:r,networkDetails:n,deliveryDirectives:d});break;case le:s.trigger(T.AUDIO_TRACK_LOADED,{details:t,id:u||0,groupId:h||"",stats:r,networkDetails:n,deliveryDirectives:d});break;case ue:s.trigger(T.SUBTITLE_TRACK_LOADED,{details:t,id:u||0,groupId:h||"",stats:r,networkDetails:n,deliveryDirectives:d})}}else{var m=new Error("No Segments found in Playlist");s.trigger(T.ERROR,{type:E.NETWORK_ERROR,details:S.LEVEL_EMPTY_ERROR,fatal:!1,url:c,error:m,reason:m.message,response:e,context:i,level:g,parent:f,networkDetails:n,stats:r})}},t}();function me(t,e){var r;try{r=new Event("addtrack")}catch(t){(r=document.createEvent("Event")).initEvent("addtrack",!1,!1)}r.track=t,e.dispatchEvent(r)}function pe(t,e){var r=t.mode;if("disabled"===r&&(t.mode="hidden"),t.cues&&!t.cues.getCueById(e.id))try{if(t.addCue(e),!t.cues.getCueById(e.id))throw new Error("addCue is failed for: "+e)}catch(r){D.debug("[texttrack-utils]: "+r);var i=new self.TextTrackCue(e.startTime,e.endTime,e.text);i.id=e.id,t.addCue(i)}"disabled"===r&&(t.mode=r)}function ye(t){var e=t.mode;if("disabled"===e&&(t.mode="hidden"),t.cues)for(var r=t.cues.length;r--;)t.removeCue(t.cues[r]);"disabled"===e&&(t.mode=e)}function Te(t,e,r,i){var n=t.mode;if("disabled"===n&&(t.mode="hidden"),t.cues&&t.cues.length>0)for(var a=function(t,e,r){var i=[],n=function(t,e){if(et[r].endTime)return-1;for(var i=0,n=r;i<=n;){var a=Math.floor((n+i)/2);if(et[a].startTime&&i-1)for(var a=n,s=t.length;a=e&&o.endTime<=r)i.push(o);else if(o.startTime>r)return i}return i}(t.cues,e,r),s=0;sAe&&(d=Ae),d-h<=0&&(d=h+.25);for(var c=0;ce.startDate&&t.push(i),t}),[]).sort((function(t,e){return t.startDate.getTime()-e.startDate.getTime()}))[0];g&&(h=ke(g.startDate,c),l=!0)}for(var m,p,y=Object.keys(e.attr),T=0;T.05&&this.forwardBufferLength>1){var u=Math.min(2,Math.max(1,a)),h=Math.round(2/(1+Math.exp(-.75*o-this.edgeStalled))*20)/20;t.playbackRate=Math.min(u,Math.max(1,h))}else 1!==t.playbackRate&&0!==t.playbackRate&&(t.playbackRate=1)}}}}},e.estimateLiveEdge=function(){var t=this.levelDetails;return null===t?null:t.edge+t.age},e.computeLatency=function(){var t=this.estimateLiveEdge();return null===t?null:t-this.currentTime},a(t,[{key:"latency",get:function(){return this._latency||0}},{key:"maxLatency",get:function(){var t=this.config,e=this.levelDetails;return void 0!==t.liveMaxLatencyDuration?t.liveMaxLatencyDuration:e?t.liveMaxLatencyDurationCount*e.targetduration:0}},{key:"targetLatency",get:function(){var t=this.levelDetails;if(null===t)return null;var e=t.holdBack,r=t.partHoldBack,i=t.targetduration,n=this.config,a=n.liveSyncDuration,s=n.liveSyncDurationCount,o=n.lowLatencyMode,l=this.hls.userConfig,u=o&&r||e;(l.liveSyncDuration||l.liveSyncDurationCount||0===u)&&(u=void 0!==a?a:s*i);var h=i;return u+Math.min(1*this.stallCount,h)}},{key:"liveSyncPosition",get:function(){var t=this.estimateLiveEdge(),e=this.targetLatency,r=this.levelDetails;if(null===t||null===e||null===r)return null;var i=r.edge,n=t-e-this.edgeStalled,a=i-r.totalduration,s=i-(this.config.lowLatencyMode&&r.partTarget||r.targetduration);return Math.min(Math.max(a,n),s)}},{key:"drift",get:function(){var t=this.levelDetails;return null===t?1:t.drift}},{key:"edgeStalled",get:function(){var t=this.levelDetails;if(null===t)return 0;var e=3*(this.config.lowLatencyMode&&t.partTarget||t.targetduration);return Math.max(t.age-e,0)}},{key:"forwardBufferLength",get:function(){var t=this.media,e=this.levelDetails;if(!t||!e)return 0;var r=t.buffered.length;return(r?t.buffered.end(r-1):e.edge)-this.currentTime}}]),t}(),Ie=["NONE","TYPE-0","TYPE-1",null],we="",Ce="YES",_e="v2",Pe=function(){function t(t,e,r){this.msn=void 0,this.part=void 0,this.skip=void 0,this.msn=t,this.part=e,this.skip=r}return t.prototype.addDirectives=function(t){var e=new self.URL(t);return void 0!==this.msn&&e.searchParams.set("_HLS_msn",this.msn.toString()),void 0!==this.part&&e.searchParams.set("_HLS_part",this.part.toString()),this.skip&&e.searchParams.set("_HLS_skip",this.skip),e.href},t}(),xe=function(){function t(t){this._attrs=void 0,this.audioCodec=void 0,this.bitrate=void 0,this.codecSet=void 0,this.height=void 0,this.id=void 0,this.name=void 0,this.videoCodec=void 0,this.width=void 0,this.unknownCodecs=void 0,this.audioGroupIds=void 0,this.details=void 0,this.fragmentError=0,this.loadError=0,this.loaded=void 0,this.realBitrate=0,this.textGroupIds=void 0,this.url=void 0,this._urlId=0,this.url=[t.url],this._attrs=[t.attrs],this.bitrate=t.bitrate,t.details&&(this.details=t.details),this.id=t.id||0,this.name=t.name,this.width=t.width||0,this.height=t.height||0,this.audioCodec=t.audioCodec,this.videoCodec=t.videoCodec,this.unknownCodecs=t.unknownCodecs,this.codecSet=[t.videoCodec,t.audioCodec].filter((function(t){return t})).join(",").replace(/\.[^.,]+/g,"")}return t.prototype.addFallback=function(t){this.url.push(t.url),this._attrs.push(t.attrs)},a(t,[{key:"maxBitrate",get:function(){return Math.max(this.realBitrate,this.bitrate)}},{key:"attrs",get:function(){return this._attrs[this._urlId]}},{key:"pathwayId",get:function(){return this.attrs["PATHWAY-ID"]||"."}},{key:"uri",get:function(){return this.url[this._urlId]||""}},{key:"urlId",get:function(){return this._urlId},set:function(t){var e=t%this.url.length;this._urlId!==e&&(this.fragmentError=0,this.loadError=0,this.details=void 0,this._urlId=e)}},{key:"audioGroupId",get:function(){var t;return null==(t=this.audioGroupIds)?void 0:t[this.urlId]}},{key:"textGroupId",get:function(){var t;return null==(t=this.textGroupIds)?void 0:t[this.urlId]}}]),t}();function Fe(t,e){var r=e.startPTS;if(y(r)){var i,n=0;e.sn>t.sn?(n=r-t.start,i=t):(n=t.start-r,i=e),i.duration!==n&&(i.duration=n)}else e.sn>t.sn?t.cc===e.cc&&t.minEndPTS?e.start=t.start+(t.minEndPTS-t.start):e.start=t.start+t.duration:e.start=Math.max(t.start-e.duration,0)}function Oe(t,e,r,i,n,a){i-r<=0&&(D.warn("Fragment should have a positive duration",e),i=r+e.duration,a=n+e.duration);var s=r,o=i,l=e.startPTS,u=e.endPTS;if(y(l)){var h=Math.abs(l-r);y(e.deltaPTS)?e.deltaPTS=Math.max(h,e.deltaPTS):e.deltaPTS=h,s=Math.max(r,l),r=Math.min(r,l),n=Math.min(n,e.startDTS),o=Math.min(i,u),i=Math.max(i,u),a=Math.max(a,e.endDTS)}var d=r-e.start;0!==e.start&&(e.start=r),e.duration=i-e.start,e.startPTS=r,e.maxStartPTS=s,e.startDTS=n,e.endPTS=i,e.minEndPTS=o,e.endDTS=a;var c,f=e.sn;if(!t||ft.endSN)return 0;var g=f-t.startSN,v=t.fragments;for(v[g]=e,c=g;c>0;c--)Fe(v[c],v[c-1]);for(c=g;c=0;n--){var a=i[n].initSegment;if(a){r=a;break}}t.fragmentHint&&delete t.fragmentHint.endPTS;var s,l,u,h,d,c=0;if(function(t,e,r){for(var i=e.skippedSegments,n=Math.max(t.startSN,e.startSN)-e.startSN,a=(t.fragmentHint?1:0)+(i?e.endSN:Math.min(t.endSN,e.endSN))-e.startSN,s=e.startSN-t.startSN,o=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments,l=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments,u=n;u<=a;u++){var h=l[s+u],d=o[u];i&&!d&&u=i.length||Ue(e,i[r].start)}function Ue(t,e){if(e){for(var r=t.fragments,i=t.skippedSegments;i499)}(i)||!!r)}var je=function(t,e){for(var r=0,i=t.length-1,n=null,a=null;r<=i;){var s=e(a=t[n=(r+i)/2|0]);if(s>0)r=n+1;else{if(!(s<0))return a;i=n-1}}return null};function qe(t,e,r,i){void 0===r&&(r=0),void 0===i&&(i=0);var n=null;if(t?n=e[t.sn-e[0].sn+1]||null:0===r&&0===e[0].start&&(n=e[0]),n&&0===Xe(r,i,n))return n;var a=je(e,Xe.bind(null,r,i));return!a||a===t&&n?n:a}function Xe(t,e,r){if(void 0===t&&(t=0),void 0===e&&(e=0),r.start<=t&&r.start+r.duration>t)return 0;var i=Math.min(e,r.duration+(r.deltaPTS?r.deltaPTS:0));return r.start+r.duration-i<=t?1:r.start-i>t&&r.start?-1:0}function ze(t,e,r){var i=1e3*Math.min(e,r.duration+(r.deltaPTS?r.deltaPTS:0));return(r.endProgramDateTime||0)-i>t}var Qe,$e=3e5,Je=0,Ze=2,tr=5,er=0,rr=1,ir=2,nr=function(){function t(t){this.hls=void 0,this.playlistError=0,this.penalizedRenditions={},this.log=void 0,this.warn=void 0,this.error=void 0,this.hls=t,this.log=D.log.bind(D,"[info]:"),this.warn=D.warn.bind(D,"[warning]:"),this.error=D.error.bind(D,"[error]:"),this.registerListeners()}var e=t.prototype;return e.registerListeners=function(){var t=this.hls;t.on(T.ERROR,this.onError,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this)},e.unregisterListeners=function(){var t=this.hls;t&&(t.off(T.ERROR,this.onError,this),t.off(T.ERROR,this.onErrorOut,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this))},e.destroy=function(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}},e.startLoad=function(t){this.playlistError=0},e.stopLoad=function(){},e.getVariantLevelIndex=function(t){return(null==t?void 0:t.type)===he?t.level:this.hls.loadLevel},e.onManifestLoading=function(){this.playlistError=0,this.penalizedRenditions={}},e.onError=function(t,e){var r;if(!e.fatal){var i=this.hls,n=e.context;switch(e.details){case S.FRAG_LOAD_ERROR:case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_ERROR:case S.KEY_LOAD_TIMEOUT:return void(e.errorAction=this.getFragRetryOrSwitchAction(e));case S.FRAG_GAP:case S.FRAG_PARSING_ERROR:case S.FRAG_DECRYPT_ERROR:return e.errorAction=this.getFragRetryOrSwitchAction(e),void(e.errorAction.action=Ze);case S.LEVEL_EMPTY_ERROR:case S.LEVEL_PARSING_ERROR:var a,s,o=e.parent===he?e.level:i.loadLevel;return void(e.details===S.LEVEL_EMPTY_ERROR&&null!=(a=e.context)&&null!=(s=a.levelDetails)&&s.live?e.errorAction=this.getPlaylistRetryOrSwitchAction(e,o):(e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,o)));case S.LEVEL_LOAD_ERROR:case S.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==n?void 0:n.level)&&(e.errorAction=this.getPlaylistRetryOrSwitchAction(e,n.level)));case S.AUDIO_TRACK_LOAD_ERROR:case S.AUDIO_TRACK_LOAD_TIMEOUT:case S.SUBTITLE_LOAD_ERROR:case S.SUBTITLE_TRACK_LOAD_TIMEOUT:if(n){var l=i.levels[i.loadLevel];if(l&&(n.type===le&&n.groupId===l.audioGroupId||n.type===ue&&n.groupId===l.textGroupId))return e.errorAction=this.getPlaylistRetryOrSwitchAction(e,i.loadLevel),e.errorAction.action=Ze,void(e.errorAction.flags=rr)}return;case S.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:var u=i.levels[i.loadLevel],h=null==u?void 0:u.attrs["HDCP-LEVEL"];return void(h&&(e.errorAction={action:Ze,flags:ir,hdcpLevel:h}));case S.BUFFER_ADD_CODEC_ERROR:case S.REMUX_ALLOC_ERROR:return void(e.errorAction=this.getLevelSwitchAction(e,null!=(r=e.level)?r:i.loadLevel));case S.INTERNAL_EXCEPTION:case S.BUFFER_APPENDING_ERROR:case S.BUFFER_APPEND_ERROR:case S.BUFFER_FULL_ERROR:case S.LEVEL_SWITCH_ERROR:case S.BUFFER_STALLED_ERROR:case S.BUFFER_SEEK_OVER_HOLE:case S.BUFFER_NUDGE_ON_STALL:return void(e.errorAction={action:Je,flags:er})}if(e.type===E.KEY_SYSTEM_ERROR){var d=this.getVariantLevelIndex(e.frag);return e.levelRetry=!1,void(e.errorAction=this.getLevelSwitchAction(e,d))}}},e.getPlaylistRetryOrSwitchAction=function(t,e){var r,i,n=He(this.hls.config.playlistLoadPolicy,t),a=this.playlistError++,s=null==(r=t.response)?void 0:r.code;return We(n,a,Ke(t),s)?{action:tr,flags:er,retryConfig:n,retryCount:a}:null!=(i=t.context)&&i.deliveryDirectives?{action:Je,flags:er,retryConfig:n||{maxNumRetry:0,retryDelayMs:0,maxRetryDelayMs:0},retryCount:a}:this.getLevelSwitchAction(t,e)},e.getFragRetryOrSwitchAction=function(t){var e=this.hls,r=this.getVariantLevelIndex(t.frag),i=e.levels[r],n=e.config,a=n.fragLoadPolicy,s=n.keyLoadPolicy,o=He(t.details.startsWith("key")?s:a,t),l=e.levels.reduce((function(t,e){return t+e.fragmentError}),0);if(i){var u;t.details!==S.FRAG_GAP&&i.fragmentError++;var h=null==(u=t.response)?void 0:u.code;if(We(o,l,Ke(t),h))return{action:tr,flags:er,retryConfig:o,retryCount:l}}var d=this.getLevelSwitchAction(t,r);return o&&(d.retryConfig=o,d.retryCount=l),d},e.getLevelSwitchAction=function(t,e){var r=this.hls;null==e&&(e=r.loadLevel);var i=this.hls.levels[e];if(i&&(i.loadError++,r.autoLevelEnabled)){for(var n,a,s=-1,o=r.levels,l=null==(n=t.frag)?void 0:n.type,u=null!=(a=t.context)?a:{},h=u.type,d=u.groupId,c=o.length;c--;){var f=(c+r.loadLevel)%o.length;if(f!==r.loadLevel&&0===o[f].loadError){var g=o[f];if(t.details===S.FRAG_GAP&&t.frag){var v=o[f].details;if(v){var m=qe(t.frag,v.fragments,t.frag.start);if(null!=m&&m.gap)continue}}else{if(h===le&&d===g.audioGroupId||h===ue&&d===g.textGroupId)continue;if(l===de&&i.audioGroupId===g.audioGroupId||l===ce&&i.textGroupId===g.textGroupId)continue}s=f;break}}if(s>-1&&r.loadLevel!==s)return t.levelRetry=!0,{action:Ze,flags:er,nextAutoLevel:s}}return{action:Ze,flags:rr}},e.onErrorOut=function(t,e){var r;switch(null==(r=e.errorAction)?void 0:r.action){case Je:break;case Ze:this.sendAlternateToPenaltyBox(e),e.errorAction.resolved||e.details===S.FRAG_GAP||(e.fatal=!0)}e.fatal&&this.hls.stopLoad()},e.sendAlternateToPenaltyBox=function(t){var e=this.hls,r=t.errorAction;if(r){var i=r.flags,n=r.hdcpLevel,a=r.nextAutoLevel;switch(i){case er:this.switchLevel(t,a);break;case rr:r.resolved||(r.resolved=this.redundantFailover(t));break;case ir:n&&(e.maxHdcpLevel=Ie[Ie.indexOf(n)-1],r.resolved=!0),this.warn('Restricting playback to HDCP-LEVEL of "'+e.maxHdcpLevel+'" or lower')}r.resolved||this.switchLevel(t,a)}},e.switchLevel=function(t,e){void 0!==e&&t.errorAction&&(this.warn("switching to level "+e+" after "+t.details),this.hls.nextAutoLevel=e,t.errorAction.resolved=!0,this.hls.nextLoadLevel=this.hls.nextAutoLevel)},e.redundantFailover=function(t){var e=this,r=this.hls,i=this.penalizedRenditions,n=t.parent===he?t.level:r.loadLevel,a=r.levels[n],s=a.url.length,o=t.frag?t.frag.urlId:a.urlId;a.urlId!==o||t.frag&&!a.details||this.penalizeRendition(a,t);for(var l=function(){var l=(o+u)%s,h=i[l];if(!h||function(t,e,r){if(performance.now()-t.lastErrorPerfMs>$e)return!0;var i=t.details;if(e.details===S.FRAG_GAP&&i&&e.frag){var n=e.frag.start,a=qe(null,i.fragments,n);if(a&&!a.gap)return!0}if(r&&t.errors.length3*i.targetduration)return!0}return!1}(h,t,i[o]))return e.warn("Switching to Redundant Stream "+(l+1)+"/"+s+': "'+a.url[l]+'" after '+t.details),e.playlistError=0,r.levels.forEach((function(t){t.urlId=l})),r.nextLoadLevel=n,{v:!0}},u=1;u=0&&h>e.partTarget&&(u+=1)}return new Pe(l,u>=0?u:void 0,we)}}},e.loadPlaylist=function(t){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())},e.shouldLoadPlaylist=function(t){return this.canLoad&&!!t&&!!t.url&&(!t.details||t.details.live)},e.shouldReloadPlaylist=function(t){return-1===this.timer&&-1===this.requestScheduled&&this.shouldLoadPlaylist(t)},e.playlistLoaded=function(t,e,r){var i=this,n=e.details,a=e.stats,s=self.performance.now(),o=a.loading.first?Math.max(0,s-a.loading.first):0;if(n.advancedDateTime=Date.now()-o,n.live||null!=r&&r.live){if(n.reloaded(r),r&&this.log("live playlist "+t+" "+(n.advanced?"REFRESHED "+n.lastPartSn+"-"+n.lastPartIndex:"MISSED")),r&&n.fragments.length>0&&Me(r,n),!this.canLoad||!n.live)return;var l,u=void 0,h=void 0;if(n.canBlockReload&&n.endSN&&n.advanced){var d=this.hls.config.lowLatencyMode,c=n.lastPartSn,f=n.endSN,g=n.lastPartIndex,v=c===f;-1!==g?(u=v?f+1:c,h=v?d?0:g:g+1):u=f+1;var m=n.age,p=m+n.ageHeader,y=Math.min(p-n.partTarget,1.5*n.targetduration);if(y>0){if(r&&y>r.tuneInGoal)this.warn("CDN Tune-in goal increased from: "+r.tuneInGoal+" to: "+y+" with playlist age: "+n.age),y=0;else{var T=Math.floor(y/n.targetduration);u+=T,void 0!==h&&(h+=Math.round(y%n.targetduration/n.partTarget)),this.log("CDN Tune-in age: "+n.ageHeader+"s last advanced "+m.toFixed(2)+"s goal: "+y+" skip sn "+T+" to part "+h)}n.tuneInGoal=y}if(l=this.getDeliveryDirectives(n,e.deliveryDirectives,u,h),d||!v)return void this.loadPlaylist(l)}else n.canBlockReload&&(l=this.getDeliveryDirectives(n,e.deliveryDirectives,u,h));var E=this.hls.mainForwardBufferInfo,S=E?E.end-E.len:0,L=function(t,e){void 0===e&&(e=1/0);var r=1e3*t.targetduration;if(t.updated){var i=t.fragments;if(i.length&&4*r>e){var n=1e3*i[i.length-1].duration;nthis.requestScheduled+L&&(this.requestScheduled=a.loading.start),void 0!==u&&n.canBlockReload?this.requestScheduled=a.loading.first+L-(1e3*n.partTarget||1e3):-1===this.requestScheduled||this.requestScheduled+L(e.attrs["HDCP-LEVEL"]||"")?1:-1:t.bitrate!==e.bitrate?t.bitrate-e.bitrate:t.attrs["FRAME-RATE"]!==e.attrs["FRAME-RATE"]?t.attrs.decimalFloatingPoint("FRAME-RATE")-e.attrs.decimalFloatingPoint("FRAME-RATE"):t.attrs.SCORE!==e.attrs.SCORE?t.attrs.decimalFloatingPoint("SCORE")-e.attrs.decimalFloatingPoint("SCORE"):a&&t.height!==e.height?t.height-e.height:0}));var h=u[0];if(this.steering&&(l=this.steering.filterParsedLevels(l)).length!==u.length)for(var d=0;d1&&void 0!==e?(n.url=n.url.filter(i),n.audioGroupIds&&(n.audioGroupIds=n.audioGroupIds.filter(i)),n.textGroupIds&&(n.textGroupIds=n.textGroupIds.filter(i)),n.urlId=0,!0):(r.steering&&r.steering.removeLevel(n),!1))}));this.hls.trigger(T.LEVELS_UPDATED,{levels:n})},r.onLevelsUpdated=function(t,e){var r=e.levels;r.forEach((function(t,e){var r=t.details;null!=r&&r.fragments&&r.fragments.forEach((function(t){t.level=e}))})),this._levels=r},a(e,[{key:"levels",get:function(){return 0===this._levels.length?null:this._levels}},{key:"level",get:function(){return this.currentLevelIndex},set:function(t){var e=this._levels;if(0!==e.length){if(t<0||t>=e.length){var r=new Error("invalid level idx"),i=t<0;if(this.hls.trigger(T.ERROR,{type:E.OTHER_ERROR,details:S.LEVEL_SWITCH_ERROR,level:t,fatal:i,error:r,reason:r.message}),i)return;t=Math.min(t,e.length-1)}var n=this.currentLevelIndex,a=this.currentLevel,s=a?a.attrs["PATHWAY-ID"]:void 0,l=e[t],u=l.attrs["PATHWAY-ID"];if(this.currentLevelIndex=t,this.currentLevel=l,n!==t||!l.details||!a||s!==u){this.log("Switching to level "+t+(u?" with Pathway "+u:"")+" from level "+n+(s?" with Pathway "+s:""));var h=o({},l,{level:t,maxBitrate:l.maxBitrate,attrs:l.attrs,uri:l.uri,urlId:l.urlId});delete h._attrs,delete h._urlId,this.hls.trigger(T.LEVEL_SWITCHING,h);var d=l.details;if(!d||d.live){var c=this.switchParams(l.uri,null==a?void 0:a.details);this.loadPlaylist(c)}}}}},{key:"manualLevel",get:function(){return this.manualLevelIndex},set:function(t){this.manualLevelIndex=t,void 0===this._startLevel&&(this._startLevel=t),-1!==t&&(this.level=t)}},{key:"firstLevel",get:function(){return this._firstLevel},set:function(t){this._firstLevel=t}},{key:"startLevel",get:function(){if(void 0===this._startLevel){var t=this.hls.config.startLevel;return void 0!==t?t:this._firstLevel}return this._startLevel},set:function(t){this._startLevel=t}},{key:"nextLoadLevel",get:function(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel},set:function(t){this.level=t,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=t)}}]),e}(ar);function or(t,e,r){r&&("audio"===e?(t.audioGroupIds||(t.audioGroupIds=[]),t.audioGroupIds[t.url.length-1]=r):"text"===e&&(t.textGroupIds||(t.textGroupIds=[]),t.textGroupIds[t.url.length-1]=r))}function lr(t){var e={};t.forEach((function(t){var r=t.groupId||"";t.id=e[r]=e[r]||0,e[r]++}))}var ur="NOT_LOADED",hr="APPENDING",dr="PARTIAL",cr="OK",fr=function(){function t(t){this.mainFragEntity=null,this.activeParts=null,this.endListFragments=Object.create(null),this.fragments=Object.create(null),this.timeRanges=Object.create(null),this.bufferPadding=.2,this.hls=void 0,this.hasGaps=!1,this.hls=t,this._registerListeners()}var e=t.prototype;return e._registerListeners=function(){var t=this.hls;t.on(T.BUFFER_APPENDED,this.onBufferAppended,this),t.on(T.FRAG_BUFFERED,this.onFragBuffered,this),t.on(T.FRAG_LOADED,this.onFragLoaded,this)},e._unregisterListeners=function(){var t=this.hls;t.off(T.BUFFER_APPENDED,this.onBufferAppended,this),t.off(T.FRAG_BUFFERED,this.onFragBuffered,this),t.off(T.FRAG_LOADED,this.onFragLoaded,this)},e.destroy=function(){this._unregisterListeners(),this.fragments=this.endListFragments=this.timeRanges=this.mainFragEntity=this.activeParts=null},e.getAppendedFrag=function(t,e){if(e===he){var r=this.mainFragEntity,i=this.activeParts;if(r)if(r&&i)for(var n=i.length;n--;){var a=i[n],s=a?a.end:r.appendedPTS;if(a.start<=t&&null!==s&&t<=s)return n>9&&(this.activeParts=i.slice(n-9)),a}else if(r.body.start<=t&&null!==r.appendedPTS&&t<=r.appendedPTS)return r.body}return this.getBufferedFrag(t,e)},e.getBufferedFrag=function(t,e){for(var r=this.fragments,i=Object.keys(r),n=i.length;n--;){var a=r[i[n]];if((null==a?void 0:a.body.type)===e&&a.buffered){var s=a.body;if(s.start<=t&&t<=s.end)return s}}return null},e.detectEvictedFragments=function(t,e,r){var i=this;this.timeRanges&&(this.timeRanges[t]=e),Object.keys(this.fragments).forEach((function(n){var a=i.fragments[n];if(a)if(a.buffered||a.loaded){var s=a.range[t];s&&s.time.some((function(t){var r=!i.isTimeBuffered(t.startPTS,t.endPTS,e);return r&&i.removeFragment(a.body),r}))}else a.body.type===r&&i.removeFragment(a.body)}))},e.detectPartialFragments=function(t){var e=this,r=this.timeRanges,i=t.frag,n=t.part;if(r&&"initSegment"!==i.sn){var a=vr(i),s=this.fragments[a];s&&(Object.keys(r).forEach((function(t){var a=i.elementaryStreams[t];if(a){var o=r[t],l=null!==n||!0===a.partial;s.range[t]=e.getBufferedTimes(i,n,l,o)}})),s.loaded=null,Object.keys(s.range).length?(s.buffered=!0,s.body.endList&&(this.endListFragments[s.body.type]=s)):this.removeFragment(s.body))}},e.fragBuffered=function(t,e){var r=vr(t),i=this.fragments[r];!i&&e&&(i=this.fragments[r]={body:t,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},t.gap&&(this.hasGaps=!0)),i&&(i.loaded=null,i.buffered=!0)},e.getBufferedTimes=function(t,e,r,i){for(var n={time:[],partial:r},a=e?e.start:t.start,s=e?e.end:t.end,o=t.minEndPTS||s,l=t.maxStartPTS||a,u=0;u=h&&o<=d){n.time.push({startPTS:Math.max(a,i.start(u)),endPTS:Math.min(s,i.end(u))});break}if(ah)n.partial=!0,n.time.push({startPTS:Math.max(a,i.start(u)),endPTS:Math.min(s,i.end(u))});else if(s<=h)break}return n},e.getPartialFragment=function(t){var e,r,i,n=null,a=0,s=this.bufferPadding,o=this.fragments;return Object.keys(o).forEach((function(l){var u=o[l];u&&gr(u)&&(r=u.body.start-s,i=u.body.end+s,t>=r&&t<=i&&(e=Math.min(t-r,i-t),a<=e&&(n=u.body,a=e)))})),n},e.isEndListAppended=function(t){var e=this.endListFragments[t];return void 0!==e&&(e.buffered||gr(e))},e.getState=function(t){var e=vr(t),r=this.fragments[e];return r?r.buffered?gr(r)?dr:cr:hr:ur},e.isTimeBuffered=function(t,e,r){for(var i,n,a=0;a=i&&e<=n)return!0;if(e<=i)return!1}return!1},e.onFragLoaded=function(t,e){var r=e.frag,i=e.part;if("initSegment"!==r.sn&&!r.bitrateTest&&!i){var n=vr(r);this.fragments[n]={body:r,appendedPTS:null,loaded:e,buffered:!1,range:Object.create(null)}}},e.onBufferAppended=function(t,e){var r=this,i=e.frag,n=e.part,a=e.timeRanges,s=this.mainFragEntity;if(i.type===he){var o=s?s.body:null;if(o!==i){s&&o&&o.sn!==i.sn&&(s.buffered=!0,this.fragments[vr(o)]=s);var l=vr(i);s=this.mainFragEntity=this.fragments[l]||{body:i,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)}}if(n){var u=this.activeParts;u||(this.activeParts=u=[]),u.push(n)}else this.activeParts=null}this.timeRanges=a,Object.keys(a).forEach((function(t){var e=a[t];if(r.detectEvictedFragments(t,e),!n&&s){var o=i.elementaryStreams[t];if(!o)return;for(var l=0;lo.startPTS?s.appendedPTS=Math.max(u,s.appendedPTS||0):s.appendedPTS=o.endPTS}}}))},e.onFragBuffered=function(t,e){this.detectPartialFragments(e)},e.hasFragment=function(t){var e=vr(t);return!!this.fragments[e]},e.removeFragmentsInRange=function(t,e,r,i,n){var a=this;i&&!this.hasGaps||Object.keys(this.fragments).forEach((function(s){var o=a.fragments[s];if(o){var l=o.body;l.type!==r||i&&!l.gap||l.startt&&(o.buffered||n)&&a.removeFragment(l)}}))},e.removeFragment=function(t){var e=vr(t);t.stats.loaded=0,t.clearElementaryStreamInfo(),this.mainFragEntity===this.fragments[e]&&(this.mainFragEntity=null),delete this.fragments[e],t.endList&&delete this.endListFragments[t.type]},e.removeAllFragments=function(){this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.mainFragEntity=null,this.activeParts=null,this.hasGaps=!1},t}();function gr(t){var e,r;return t.buffered&&(t.body.gap||(null==(e=t.range.video)?void 0:e.partial)||(null==(r=t.range.audio)?void 0:r.partial))}function vr(t){return t.type+"_"+t.level+"_"+t.urlId+"_"+t.sn}var mr=Math.pow(2,17),pr=function(){function t(t){this.config=void 0,this.loader=null,this.partLoadTimeout=-1,this.config=t}var e=t.prototype;return e.destroy=function(){this.loader&&(this.loader.destroy(),this.loader=null)},e.abort=function(){this.loader&&this.loader.abort()},e.load=function(t,e){var r=this,n=t.url;if(!n)return Promise.reject(new Er({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_ERROR,fatal:!1,frag:t,error:new Error("Fragment does not have a "+(n?"part list":"url")),networkDetails:null}));this.abort();var a=this.config,s=a.fLoader,o=a.loader;return new Promise((function(l,u){if(r.loader&&r.loader.destroy(),t.gap)u(Tr(t));else{var h=r.loader=t.loader=s?new s(a):new o(a),d=yr(t),c=Ye(a.fragLoadPolicy.default),f={loadPolicy:c,timeout:c.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:"initSegment"===t.sn?1/0:mr};t.stats=h.stats,h.load(d,f,{onSuccess:function(e,i,n,a){r.resetLoader(t,h);var s=e.data;n.resetIV&&t.decryptdata&&(t.decryptdata.iv=new Uint8Array(s.slice(0,16)),s=s.slice(16)),l({frag:t,part:null,payload:s,networkDetails:a})},onError:function(e,a,s,o){r.resetLoader(t,h),u(new Er({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_ERROR,fatal:!1,frag:t,response:i({url:n,data:void 0},e),error:new Error("HTTP Error "+e.code+" "+e.text),networkDetails:s,stats:o}))},onAbort:function(e,i,n){r.resetLoader(t,h),u(new Er({type:E.NETWORK_ERROR,details:S.INTERNAL_ABORTED,fatal:!1,frag:t,error:new Error("Aborted"),networkDetails:n,stats:e}))},onTimeout:function(e,i,n){r.resetLoader(t,h),u(new Er({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_TIMEOUT,fatal:!1,frag:t,error:new Error("Timeout after "+f.timeout+"ms"),networkDetails:n,stats:e}))},onProgress:function(r,i,n,a){e&&e({frag:t,part:null,payload:n,networkDetails:a})}})}}))},e.loadPart=function(t,e,r){var n=this;this.abort();var a=this.config,s=a.fLoader,o=a.loader;return new Promise((function(l,u){if(n.loader&&n.loader.destroy(),t.gap||e.gap)u(Tr(t,e));else{var h=n.loader=t.loader=s?new s(a):new o(a),d=yr(t,e),c=Ye(a.fragLoadPolicy.default),f={loadPolicy:c,timeout:c.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:mr};e.stats=h.stats,h.load(d,f,{onSuccess:function(i,a,s,o){n.resetLoader(t,h),n.updateStatsFromPart(t,e);var u={frag:t,part:e,payload:i.data,networkDetails:o};r(u),l(u)},onError:function(r,a,s,o){n.resetLoader(t,h),u(new Er({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_ERROR,fatal:!1,frag:t,part:e,response:i({url:d.url,data:void 0},r),error:new Error("HTTP Error "+r.code+" "+r.text),networkDetails:s,stats:o}))},onAbort:function(r,i,a){t.stats.aborted=e.stats.aborted,n.resetLoader(t,h),u(new Er({type:E.NETWORK_ERROR,details:S.INTERNAL_ABORTED,fatal:!1,frag:t,part:e,error:new Error("Aborted"),networkDetails:a,stats:r}))},onTimeout:function(r,i,a){n.resetLoader(t,h),u(new Er({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_TIMEOUT,fatal:!1,frag:t,part:e,error:new Error("Timeout after "+f.timeout+"ms"),networkDetails:a,stats:r}))}})}}))},e.updateStatsFromPart=function(t,e){var r=t.stats,i=e.stats,n=i.total;if(r.loaded+=i.loaded,n){var a=Math.round(t.duration/e.duration),s=Math.min(Math.round(r.loaded/n),a),o=(a-s)*Math.round(r.loaded/s);r.total=r.loaded+o}else r.total=Math.max(r.loaded,r.total);var l=r.loading,u=i.loading;l.start?l.first+=u.first-u.start:(l.start=u.start,l.first=u.first),l.end=u.end},e.resetLoader=function(t,e){t.loader=null,this.loader===e&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),e.destroy()},t}();function yr(t,e){void 0===e&&(e=null);var r=e||t,i={frag:t,part:e,responseType:"arraybuffer",url:r.url,headers:{},rangeStart:0,rangeEnd:0},n=r.byteRangeStartOffset,a=r.byteRangeEndOffset;if(y(n)&&y(a)){var s,o=n,l=a;if("initSegment"===t.sn&&"AES-128"===(null==(s=t.decryptdata)?void 0:s.method)){var u=a-n;u%16&&(l=a+(16-u%16)),0!==n&&(i.resetIV=!0,o=n-16)}i.rangeStart=o,i.rangeEnd=l}return i}function Tr(t,e){var r=new Error("GAP "+(t.gap?"tag":"attribute")+" found"),i={type:E.MEDIA_ERROR,details:S.FRAG_GAP,fatal:!1,frag:t,error:r,networkDetails:null};return e&&(i.part=e),(e||t).stats.aborted=!0,new Er(i)}var Er=function(t){function e(e){var r;return(r=t.call(this,e.error.message)||this).data=void 0,r.data=e,r}return l(e,t),e}(f(Error)),Sr=function(){function t(t){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=t}var e=t.prototype;return e.abort=function(){for(var t in this.keyUriToKeyInfo){var e=this.keyUriToKeyInfo[t].loader;e&&e.abort()}},e.detach=function(){for(var t in this.keyUriToKeyInfo){var e=this.keyUriToKeyInfo[t];(e.mediaKeySessionContext||e.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[t]}},e.destroy=function(){for(var t in this.detach(),this.keyUriToKeyInfo){var e=this.keyUriToKeyInfo[t].loader;e&&e.destroy()}this.keyUriToKeyInfo={}},e.createKeyLoadError=function(t,e,r,i,n){return void 0===e&&(e=S.KEY_LOAD_ERROR),new Er({type:E.NETWORK_ERROR,details:e,fatal:!1,frag:t,response:n,error:r,networkDetails:i})},e.loadClear=function(t,e){var r=this;if(this.emeController&&this.config.emeEnabled)for(var i=t.sn,n=t.cc,a=function(){var t=e[s];if(n<=t.cc&&("initSegment"===i||"initSegment"===t.sn||i1&&this.tickImmediate(),this._tickCallCount=0)},e.tickImmediate=function(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)},e.doTick=function(){},t}(),Rr={length:0,start:function(){return 0},end:function(){return 0}},Ar=function(){function t(){}return t.isBuffered=function(e,r){try{if(e)for(var i=t.getBuffered(e),n=0;n=i.start(n)&&r<=i.end(n))return!0}catch(t){}return!1},t.bufferInfo=function(e,r,i){try{if(e){var n,a=t.getBuffered(e),s=[];for(n=0;ns&&(i[a-1].end=t[n].end):i.push(t[n])}else i.push(t[n])}else i=t;for(var o,l=0,u=e,h=e,d=0;d=c&&er.startCC||t&&t.cc>>8^255&m^99,t[f]=m,e[m]=f;var p=c[f],y=c[p],T=c[y],E=257*c[m]^16843008*m;i[f]=E<<24|E>>>8,n[f]=E<<16|E>>>16,a[f]=E<<8|E>>>24,s[f]=E,E=16843009*T^65537*y^257*p^16843008*f,l[m]=E<<24|E>>>8,u[m]=E<<16|E>>>16,h[m]=E<<8|E>>>24,d[m]=E,f?(f=p^c[c[c[T^p]]],g^=c[c[g]]):f=g=1}},e.expandKey=function(t){for(var e=this.uint8ArrayToUint32Array_(t),r=!0,i=0;is.end){var h=a>u;(a0&&a&&a.key&&a.iv&&"AES-128"===a.method){var s=self.performance.now();return r.decrypter.decrypt(new Uint8Array(n),a.key.buffer,a.iv.buffer).catch((function(e){throw i.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((function(r){var n=self.performance.now();return i.trigger(T.FRAG_DECRYPTED,{frag:t,payload:r,stats:{tstart:s,tdecrypt:n}}),e.payload=r,e}))}return e})).then((function(i){var n=r.fragCurrent,a=r.hls;if(!r.levels)throw new Error("init load aborted, missing levels");var s=t.stats;r.state=Nr,e.fragmentError=0,t.data=new Uint8Array(i.payload),s.parsing.start=s.buffering.start=self.performance.now(),s.parsing.end=s.buffering.end=self.performance.now(),i.frag===n&&a.trigger(T.FRAG_BUFFERED,{stats:s,frag:n,part:null,id:t.type}),r.tick()})).catch((function(e){r.state!==Mr&&r.state!==Wr&&(r.warn(e),r.resetFragmentLoading(t))}))},r.fragContextChanged=function(t){var e=this.fragCurrent;return!t||!e||t.level!==e.level||t.sn!==e.sn||t.urlId!==e.urlId},r.fragBufferedComplete=function(t,e){var r,i,n,a,s=this.mediaBuffer?this.mediaBuffer:this.media;this.log("Buffered "+t.type+" sn: "+t.sn+(e?" part: "+e.index:"")+" of "+("[stream-controller]"===this.logPrefix?"level":"track")+" "+t.level+" (frag:["+(null!=(r=t.startPTS)?r:NaN).toFixed(3)+"-"+(null!=(i=t.endPTS)?i:NaN).toFixed(3)+"] > buffer:"+(s?Or(Ar.getBuffered(s)):"(detached)")+")"),this.state=Nr,s&&(!this.loadedmetadata&&t.type==he&&s.buffered.length&&(null==(n=this.fragCurrent)?void 0:n.sn)===(null==(a=this.fragPrevious)?void 0:a.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())},r.seekToStartPos=function(){},r._handleFragmentLoadComplete=function(t){var e=this.transmuxer;if(e){var r=t.frag,i=t.part,n=t.partsLoaded,a=!n||0===n.length||n.some((function(t){return!t})),s=new kr(r.level,r.sn,r.stats.chunkCount+1,0,i?i.index:-1,!a);e.flush(s)}},r._handleFragmentLoadProgress=function(t){},r._doFragLoad=function(t,e,r,i){var n,a=this;void 0===r&&(r=null);var s=null==e?void 0:e.details;if(!this.levels||!s)throw new Error("frag load aborted, missing level"+(s?"":" detail")+"s");var o=null;if(!t.encrypted||null!=(n=t.decryptdata)&&n.key?!t.encrypted&&s.encryptedFragments.length&&this.keyLoader.loadClear(t,s.encryptedFragments):(this.log("Loading key for "+t.sn+" of ["+s.startSN+"-"+s.endSN+"], "+("[stream-controller]"===this.logPrefix?"level":"track")+" "+t.level),this.state=Ur,this.fragCurrent=t,o=this.keyLoader.load(t).then((function(t){if(!a.fragContextChanged(t.frag))return a.hls.trigger(T.KEY_LOADED,t),a.state===Ur&&(a.state=Nr),t})),this.hls.trigger(T.KEY_LOADING,{frag:t}),null===this.fragCurrent&&(o=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))),r=Math.max(t.start,r||0),this.config.lowLatencyMode){var l=s.partList;if(l&&i){r>t.end&&s.fragmentHint&&(t=s.fragmentHint);var u=this.getNextPart(l,t,r);if(u>-1){var h,d=l[u];return this.log("Loading part sn: "+t.sn+" p: "+d.index+" cc: "+t.cc+" of playlist ["+s.startSN+"-"+s.endSN+"] parts [0-"+u+"-"+(l.length-1)+"] "+("[stream-controller]"===this.logPrefix?"level":"track")+": "+t.level+", target: "+parseFloat(r.toFixed(3))),this.nextLoadPosition=d.start+d.duration,this.state=Br,h=o?o.then((function(r){return!r||a.fragContextChanged(r.frag)?null:a.doFragPartsLoad(t,d,e,i)})).catch((function(t){return a.handleFragLoadError(t)})):this.doFragPartsLoad(t,d,e,i).catch((function(t){return a.handleFragLoadError(t)})),this.hls.trigger(T.FRAG_LOADING,{frag:t,part:d,targetBufferTime:r}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):h}if(!t.url||this.loadedEndOfParts(l,r))return Promise.resolve(null)}}this.log("Loading fragment "+t.sn+" cc: "+t.cc+" "+(s?"of ["+s.startSN+"-"+s.endSN+"] ":"")+("[stream-controller]"===this.logPrefix?"level":"track")+": "+t.level+", target: "+parseFloat(r.toFixed(3))),y(t.sn)&&!this.bitrateTest&&(this.nextLoadPosition=t.start+t.duration),this.state=Br;var c,f=this.config.progressive;return c=f&&o?o.then((function(e){return!e||a.fragContextChanged(null==e?void 0:e.frag)?null:a.fragmentLoader.load(t,i)})).catch((function(t){return a.handleFragLoadError(t)})):Promise.all([this.fragmentLoader.load(t,f?i:void 0),o]).then((function(t){var e=t[0];return!f&&e&&i&&i(e),e})).catch((function(t){return a.handleFragLoadError(t)})),this.hls.trigger(T.FRAG_LOADING,{frag:t,targetBufferTime:r}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):c},r.doFragPartsLoad=function(t,e,r,i){var n=this;return new Promise((function(a,s){var o,l=[],u=null==(o=r.details)?void 0:o.partList;!function e(o){n.fragmentLoader.loadPart(t,o,i).then((function(i){l[o.index]=i;var s=i.part;n.hls.trigger(T.FRAG_LOADED,i);var h=Be(r,t.sn,o.index+1)||Ge(u,t.sn,o.index+1);if(!h)return a({frag:t,part:s,partsLoaded:l});e(h)})).catch(s)}(e)}))},r.handleFragLoadError=function(t){if("data"in t){var e=t.data;t.data&&e.details===S.INTERNAL_ABORTED?this.handleFragLoadAborted(e.frag,e.part):this.hls.trigger(T.ERROR,e)}else this.hls.trigger(T.ERROR,{type:E.OTHER_ERROR,details:S.INTERNAL_EXCEPTION,err:t,error:t,fatal:!0});return null},r._handleTransmuxerFlush=function(t){var e=this.getCurrentContext(t);if(e&&this.state===Hr){var r=e.frag,i=e.part,n=e.level,a=self.performance.now();r.stats.parsing.end=a,i&&(i.stats.parsing.end=a),this.updateLevelTiming(r,i,n,t.partial)}else this.fragCurrent||this.state===Mr||this.state===Wr||(this.state=Nr)},r.getCurrentContext=function(t){var e=this.levels,r=this.fragCurrent,i=t.level,n=t.sn,a=t.part;if(null==e||!e[i])return this.warn("Levels object was unset while buffering fragment "+n+" of level "+i+". The current chunk will not be buffered."),null;var s=e[i],o=a>-1?Be(s,n,a):null,l=o?o.fragment:function(t,e,r){if(null==t||!t.details)return null;var i=t.details,n=i.fragments[e-i.startSN];return n||((n=i.fragmentHint)&&n.sn===e?n:ea&&this.flushMainBuffer(s,t.start)}else this.flushMainBuffer(0,t.start)},r.getFwdBufferInfo=function(t,e){var r=this.getLoadPosition();return y(r)?this.getFwdBufferInfoAtPos(t,r,e):null},r.getFwdBufferInfoAtPos=function(t,e,r){var i=this.config.maxBufferHole,n=Ar.bufferInfo(t,e,i);if(0===n.len&&void 0!==n.nextStart){var a=this.fragmentTracker.getBufferedFrag(e,r);if(a&&n.nextStart=r&&(e.maxMaxBufferLength/=2,this.warn("Reduce max buffer length to "+e.maxMaxBufferLength+"s"),!0)},r.getNextFragment=function(t,e){var r=e.fragments,i=r.length;if(!i)return null;var n,a=this.config,s=r[0].start;if(e.live){var o=a.initialLiveManifestSize;if(ie},r.getNextFragmentLoopLoading=function(t,e,r,i,n){var a=t.gap,s=this.getNextFragment(this.nextLoadPosition,e);if(null===s)return s;if(t=s,a&&t&&!t.gap&&r.nextStart){var o=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,r.nextStart,i);if(null!==o&&r.len+o.len>=n)return this.log('buffer full after gaps in "'+i+'" playlist starting at sn: '+t.sn),null}return t},r.mapToInitFragWhenRequired=function(t){return null==t||!t.initSegment||null!=t&&t.initSegment.data||this.bitrateTest?t:t.initSegment},r.getNextPart=function(t,e,r){for(var i=-1,n=!1,a=!0,s=0,o=t.length;s-1&&rr.start&&r.loaded},r.getInitialLiveFragment=function(t,e){var r=this.fragPrevious,i=null;if(r){if(t.hasProgramDateTime&&(this.log("Live playlist, switching playlist, load frag with same PDT: "+r.programDateTime),i=function(t,e,r){if(null===e||!Array.isArray(t)||!t.length||!y(e))return null;if(e<(t[0].programDateTime||0))return null;if(e>=(t[t.length-1].endProgramDateTime||0))return null;r=r||0;for(var i=0;i=t.startSN&&n<=t.endSN){var a=e[n-t.startSN];r.cc===a.cc&&(i=a,this.log("Live playlist, switching playlist, load frag with next SN: "+i.sn))}i||(i=function(t,e){return je(t,(function(t){return t.cce?-1:0}))}(e,r.cc),i&&this.log("Live playlist, switching playlist, load frag with same CC: "+i.sn))}}else{var s=this.hls.liveSyncPosition;null!==s&&(i=this.getFragmentAtPosition(s,this.bitrateTest?t.fragmentEnd:t.edge,t))}return i},r.getFragmentAtPosition=function(t,e,r){var i,n=this.config,a=this.fragPrevious,s=r.fragments,o=r.endSN,l=r.fragmentHint,u=n.maxFragLookUpTolerance,h=!!(n.lowLatencyMode&&r.partList&&l);if(h&&l&&!this.bitrateTest&&(s=s.concat(l),o=l.sn),i=te-u?0:u):s[s.length-1]){var d=i.sn-r.startSN,c=this.fragmentTracker.getState(i);if((c===cr||c===dr&&i.gap)&&(a=i),a&&i.sn===a.sn&&!h&&a&&i.level===a.level){var f=s[d+1];i=i.sn=a-e.maxFragLookUpTolerance&&n<=s;if(null!==i&&r.duration>i&&(n"+t.startSN+" prev-sn: "+(n?n.sn:"na")+" fragments: "+s),h}return o},r.waitForCdnTuneIn=function(t){return t.live&&t.canBlockReload&&t.partTarget&&t.tuneInGoal>Math.max(t.partHoldBack,3*t.partTarget)},r.setStartPosition=function(t,e){var r=this.startPosition;if(r "+(null==(n=this.fragCurrent)?void 0:n.url))}else{var a=e.details===S.FRAG_GAP;a&&this.fragmentTracker.fragBuffered(i,!0);var s=e.errorAction,o=s||{},l=o.action,u=o.retryCount,h=void 0===u?0:u,d=o.retryConfig;if(s&&l===tr&&d){this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition);var c=Ve(d,h);this.warn("Fragment "+i.sn+" of "+t+" "+i.level+" errored with "+e.details+", retrying loading "+(h+1)+"/"+d.maxNumRetry+" in "+c+"ms"),s.resolved=!0,this.retryDate=self.performance.now()+c,this.state=Gr}else d&&s?(this.resetFragmentErrors(t),h.5;i&&this.reduceMaxBufferLength(r.len);var n=!i;return n&&this.warn("Buffer full error while media.currentTime is not buffered, flush "+e+" buffer"),t.frag&&(this.fragmentTracker.removeFragment(t.frag),this.nextLoadPosition=t.frag.start),this.resetLoadingState(),n}return!1},r.resetFragmentErrors=function(t){t===de&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==Mr&&(this.state=Nr)},r.afterBufferFlushed=function(t,e,r){if(t){var i=Ar.getBuffered(t);this.fragmentTracker.detectEvictedFragments(e,i,r),this.state===Yr&&this.resetLoadingState()}},r.resetLoadingState=function(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state=Nr},r.resetStartWhenNotLoaded=function(t){if(!this.loadedmetadata){this.startFragRequested=!1;var e=this.levels?this.levels[t].details:null;null!=e&&e.live?(this.startPosition=-1,this.setStartPosition(e,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}},r.resetWhenMissingContext=function(t){this.warn("The loading context changed while buffering fragment "+t.sn+" of level "+t.level+". This chunk will not be buffered."),this.removeUnbufferedFrags(),this.resetStartWhenNotLoaded(t.level),this.resetLoadingState()},r.removeUnbufferedFrags=function(t){void 0===t&&(t=0),this.fragmentTracker.removeFragmentsInRange(t,1/0,this.playlistType,!1,!0)},r.updateLevelTiming=function(t,e,r,i){var n,a=this,s=r.details;if(s){if(Object.keys(t.elementaryStreams).reduce((function(e,n){var o=t.elementaryStreams[n];if(o){var l=o.endPTS-o.startPTS;if(l<=0)return a.warn("Could not parse fragment "+t.sn+" "+n+" duration reliably ("+l+")"),e||!1;var u=i?0:Oe(s,t,o.startPTS,o.endPTS,o.startDTS,o.endDTS);return a.hls.trigger(T.LEVEL_PTS_UPDATED,{details:s,level:r,drift:u,type:n,frag:t,start:o.startPTS,end:o.endPTS}),!0}return e}),!1))r.fragmentError=0;else if(null===(null==(n=this.transmuxer)?void 0:n.error)){var o=new Error("Found no media in fragment "+t.sn+" of level "+r.id+" resetting transmuxer to fallback to playlist timing");if(this.warn(o.message),this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!1,error:o,frag:t,reason:"Found no media in msn "+t.sn+' of level "'+r.url+'"'}),!this.hls)return;this.resetTransmuxer()}this.state=Vr,this.hls.trigger(T.FRAG_PARSED,{frag:t,part:e})}else this.warn("level.details undefined")},r.resetTransmuxer=function(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)},r.recoverWorkerError=function(t){"demuxerWorker"===t.event&&(this.resetTransmuxer(),this.resetLoadingState())},a(e,[{key:"state",get:function(){return this._state},set:function(t){var e=this._state;e!==t&&(this._state=t,this.log(e+"->"+t))}}]),e}(Lr);function zr(){if("undefined"!=typeof self)return self.MediaSource||self.WebKitMediaSource}function Qr(){return self.SourceBuffer||self.WebKitSourceBuffer}function $r(t,e){return void 0===t&&(t=""),void 0===e&&(e=9e4),{type:t,id:-1,pid:-1,inputTimeScale:e,sequenceNumber:-1,samples:[],dropped:0}}var Jr=function(){function t(){this._audioTrack=void 0,this._id3Track=void 0,this.frameIndex=0,this.cachedData=null,this.basePTS=null,this.initPTS=null,this.lastPTS=null}var e=t.prototype;return e.resetInitSegment=function(t,e,r,i){this._id3Track={type:"id3",id:3,pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0}},e.resetTimeStamp=function(t){this.initPTS=t,this.resetContiguity()},e.resetContiguity=function(){this.basePTS=null,this.lastPTS=null,this.frameIndex=0},e.canParse=function(t,e){return!1},e.appendFrame=function(t,e,r){},e.demux=function(t,e){this.cachedData&&(t=_t(this.cachedData,t),this.cachedData=null);var r,i=nt(t,0),n=i?i.length:0,a=this._audioTrack,s=this._id3Track,o=i?function(t){for(var e=ut(t),r=0;r0&&s.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:i,type:Ee,duration:Number.POSITIVE_INFINITY});n>>5}function ii(t,e){return e+1=t.length)return!1;var i=ri(t,e);if(i<=r)return!1;var n=e+i;return n===t.length||ii(t,n)}return!1}function ai(t,e,r,i,n){if(!t.samplerate){var a=function(t,e,r,i){var n,a,s,o,l=navigator.userAgent.toLowerCase(),u=i,h=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];n=1+((192&e[r+2])>>>6);var d=(60&e[r+2])>>>2;if(!(d>h.length-1))return s=(1&e[r+2])<<2,s|=(192&e[r+3])>>>6,D.log("manifest codec:"+i+", ADTS type:"+n+", samplingIndex:"+d),/firefox/i.test(l)?d>=6?(n=5,o=new Array(4),a=d-3):(n=2,o=new Array(2),a=d):-1!==l.indexOf("android")?(n=2,o=new Array(2),a=d):(n=5,o=new Array(4),i&&(-1!==i.indexOf("mp4a.40.29")||-1!==i.indexOf("mp4a.40.5"))||!i&&d>=6?a=d-3:((i&&-1!==i.indexOf("mp4a.40.2")&&(d>=6&&1===s||/vivaldi/i.test(l))||!i&&1===s)&&(n=2,o=new Array(2)),a=d)),o[0]=n<<3,o[0]|=(14&d)>>1,o[1]|=(1&d)<<7,o[1]|=s<<3,5===n&&(o[1]|=(14&a)>>1,o[2]=(1&a)<<7,o[2]|=8,o[3]=0),{config:o,samplerate:h[d],channelCount:s,codec:"mp4a.40."+n,manifestCodec:u};t.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+d})}(e,r,i,n);if(!a)return;t.config=a.config,t.samplerate=a.samplerate,t.channelCount=a.channelCount,t.codec=a.codec,t.manifestCodec=a.manifestCodec,D.log("parsed codec:"+t.codec+", rate:"+a.samplerate+", channels:"+a.channelCount)}}function si(t){return 9216e4/t}function oi(t,e,r,i,n){var a,s=i+n*si(t.samplerate),o=function(t,e){var r=ei(t,e);if(e+r<=t.length){var i=ri(t,e)-r;if(i>0)return{headerLength:r,frameLength:i}}}(e,r);if(o){var l=o.frameLength,u=o.headerLength,h=u+l,d=Math.max(0,r+h-e.length);d?(a=new Uint8Array(h-u)).set(e.subarray(r+u,e.length),0):a=e.subarray(r+u,r+h);var c={unit:a,pts:s};return d||t.samples.push(c),{sample:c,length:h,missing:d}}var f=e.length-r;return(a=new Uint8Array(f)).set(e.subarray(r,e.length),0),{sample:{unit:a,pts:s},length:f,missing:-1}}var li=function(t){function e(e,r){var i;return(i=t.call(this)||this).observer=void 0,i.config=void 0,i.observer=e,i.config=r,i}l(e,t);var r=e.prototype;return r.resetInitSegment=function(e,r,i,n){t.prototype.resetInitSegment.call(this,e,r,i,n),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:r,duration:n,inputTimeScale:9e4,dropped:0}},e.probe=function(t){if(!t)return!1;for(var e=(nt(t,0)||[]).length,r=t.length;e16384?t.subarray(0,16384):t,["moof"]).length>0},e.demux=function(t,e){this.timeOffset=e;var r=t,i=this.videoTrack,n=this.txtTrack;if(this.config.progressive){this.remainderData&&(r=_t(this.remainderData,t));var a=function(t){var e={valid:null,remainder:null},r=bt(t,["moof"]);if(!r)return e;if(r.length<2)return e.remainder=t,e;var i=r[r.length-1];return e.valid=tt(t,0,i.byteOffset-8),e.remainder=tt(t,i.byteOffset-8),e}(r);this.remainderData=a.remainder,i.samples=a.valid||new Uint8Array}else i.samples=r;var s=this.extractID3Track(i,e);return n.samples=Pt(e,i),{videoTrack:i,audioTrack:this.audioTrack,id3Track:s,textTrack:this.txtTrack}},e.flush=function(){var t=this.timeOffset,e=this.videoTrack,r=this.txtTrack;e.samples=this.remainderData||new Uint8Array,this.remainderData=null;var i=this.extractID3Track(e,this.timeOffset);return r.samples=Pt(t,e),{videoTrack:e,audioTrack:$r(),id3Track:i,textTrack:$r()}},e.extractID3Track=function(t,e){var r=this.id3Track;if(t.samples.length){var i=bt(t.samples,["emsg"]);i&&i.forEach((function(t){var i=function(t){var e=t[0],r="",i="",n=0,a=0,s=0,o=0,l=0,u=0;if(0===e){for(;"\0"!==St(t.subarray(u,u+1));)r+=St(t.subarray(u,u+1)),u+=1;for(r+=St(t.subarray(u,u+1)),u+=1;"\0"!==St(t.subarray(u,u+1));)i+=St(t.subarray(u,u+1)),u+=1;i+=St(t.subarray(u,u+1)),u+=1,n=Rt(t,12),a=Rt(t,16),o=Rt(t,20),l=Rt(t,24),u=28}else if(1===e){n=Rt(t,u+=4);var h=Rt(t,u+=4),d=Rt(t,u+=4);for(u+=4,s=Math.pow(2,32)*h+d,Number.isSafeInteger(s)||(s=Number.MAX_SAFE_INTEGER,D.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),o=Rt(t,u),l=Rt(t,u+=4),u+=4;"\0"!==St(t.subarray(u,u+1));)r+=St(t.subarray(u,u+1)),u+=1;for(r+=St(t.subarray(u,u+1)),u+=1;"\0"!==St(t.subarray(u,u+1));)i+=St(t.subarray(u,u+1)),u+=1;i+=St(t.subarray(u,u+1)),u+=1}return{schemeIdUri:r,value:i,timeScale:n,presentationTime:s,presentationTimeDelta:a,eventDuration:o,id:l,payload:t.subarray(u,t.byteLength)}}(t);if(ui.test(i.schemeIdUri)){var n=y(i.presentationTime)?i.presentationTime/i.timeScale:e+i.presentationTimeDelta/i.timeScale,a=4294967295===i.eventDuration?Number.POSITIVE_INFINITY:i.eventDuration/i.timeScale;a<=.001&&(a=Number.POSITIVE_INFINITY);var s=i.payload;r.samples.push({data:s,len:s.byteLength,dts:n,pts:n,type:Le,duration:a})}}))}return r},e.demuxSampleAes=function(t,e,r){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))},e.destroy=function(){},t}(),di=null,ci=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],fi=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],gi=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],vi=[0,1,1,4];function mi(t,e,r,i,n){if(!(r+24>e.length)){var a=pi(e,r);if(a&&r+a.frameLength<=e.length){var s=i+n*(9e4*a.samplesPerFrame/a.sampleRate),o={unit:e.subarray(r,r+a.frameLength),pts:s,dts:s};return t.config=[],t.channelCount=a.channelCount,t.samplerate=a.sampleRate,t.samples.push(o),{sample:o,length:a.frameLength,missing:0}}}}function pi(t,e){var r=t[e+1]>>3&3,i=t[e+1]>>1&3,n=t[e+2]>>4&15,a=t[e+2]>>2&3;if(1!==r&&0!==n&&15!==n&&3!==a){var s=t[e+2]>>1&1,o=t[e+3]>>6,l=1e3*ci[14*(3===r?3-i:3===i?3:4)+n-1],u=fi[3*(3===r?0:2===r?1:2)+a],h=3===o?1:2,d=gi[r][i],c=vi[i],f=8*d*c,g=Math.floor(d*l/u+s)*c;if(null===di){var v=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);di=v?parseInt(v[1]):0}return!!di&&di<=87&&2===i&&l>=224e3&&0===o&&(t[e+3]=128|t[e+3]),{sampleRate:u,channelCount:h,frameLength:g,samplesPerFrame:f}}}function yi(t,e){return 255===t[e]&&224==(224&t[e+1])&&0!=(6&t[e+1])}function Ti(t,e){return e+1t?(this.word<<=t,this.bitsAvailable-=t):(t-=this.bitsAvailable,t-=(e=t>>3)<<3,this.bytesAvailable-=e,this.loadWord(),this.word<<=t,this.bitsAvailable-=t)},e.readBits=function(t){var e=Math.min(this.bitsAvailable,t),r=this.word>>>32-e;if(t>32&&D.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=e,this.bitsAvailable>0)this.word<<=e;else{if(!(this.bytesAvailable>0))throw new Error("no bits available");this.loadWord()}return(e=t-e)>0&&this.bitsAvailable?r<>>t))return this.word<<=t,this.bitsAvailable-=t,t;return this.loadWord(),t+this.skipLZ()},e.skipUEG=function(){this.skipBits(1+this.skipLZ())},e.skipEG=function(){this.skipBits(1+this.skipLZ())},e.readUEG=function(){var t=this.skipLZ();return this.readBits(t+1)-1},e.readEG=function(){var t=this.readUEG();return 1&t?1+t>>>1:-1*(t>>>1)},e.readBoolean=function(){return 1===this.readBits(1)},e.readUByte=function(){return this.readBits(8)},e.readUShort=function(){return this.readBits(16)},e.readUInt=function(){return this.readBits(32)},e.skipScalingList=function(t){for(var e=8,r=8,i=0;i=t.length)return void r();if(!(t[e].unit.length<32||(this.decryptAacSample(t,e,r),this.decrypter.isSync())))return}},e.getAvcEncryptedData=function(t){for(var e=16*Math.floor((t.length-48)/160)+16,r=new Int8Array(e),i=0,n=32;n=t.length)return void i();for(var n=t[e].units;!(r>=n.length);r++){var a=n[r];if(!(a.data.length<=48||1!==a.type&&5!==a.type||(this.decryptAvcSample(t,e,r,i,a),this.decrypter.isSync())))return}}},t}(),Ri=188,Ai=function(){function t(t,e,r){this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._duration=0,this._pmtId=-1,this._avcTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.avcSample=null,this.remainderData=null,this.observer=t,this.config=e,this.typeSupported=r}t.probe=function(e){var r=t.syncOffset(e);return r>0&&D.warn("MPEG2-TS detected but first sync word found @ offset "+r),-1!==r},t.syncOffset=function(t){for(var e=t.length,r=Math.min(940,t.length-Ri)+1,i=0;ir)return i;i++}return-1},t.createTrack=function(t,e){return{container:"video"===t||"audio"===t?"video/mp2t":void 0,type:t,id:Et[t],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===t?e:void 0}};var e=t.prototype;return e.resetInitSegment=function(e,r,i,n){this.pmtParsed=!1,this._pmtId=-1,this._avcTrack=t.createTrack("video"),this._audioTrack=t.createTrack("audio",n),this._id3Track=t.createTrack("id3"),this._txtTrack=t.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.avcSample=null,this.remainderData=null,this.audioCodec=r,this.videoCodec=i,this._duration=n},e.resetTimeStamp=function(){},e.resetContiguity=function(){var t=this._audioTrack,e=this._avcTrack,r=this._id3Track;t&&(t.pesData=null),e&&(e.pesData=null),r&&(r.pesData=null),this.aacOverFlow=null,this.avcSample=null,this.remainderData=null},e.demux=function(e,r,i,n){var a;void 0===i&&(i=!1),void 0===n&&(n=!1),i||(this.sampleAes=null);var s=this._avcTrack,o=this._audioTrack,l=this._id3Track,u=this._txtTrack,h=s.pid,d=s.pesData,c=o.pid,f=l.pid,g=o.pesData,v=l.pesData,m=null,p=this.pmtParsed,y=this._pmtId,L=e.length;if(this.remainderData&&(L=(e=_t(this.remainderData,e)).length,this.remainderData=null),L>4>1){if((w=k+5+e[k+4])===k+Ri)continue}else w=k+4;switch(I){case h:b&&(d&&(a=wi(d))&&this.parseAVCPES(s,u,a,!1),d={data:[],size:0}),d&&(d.data.push(e.subarray(w,k+Ri)),d.size+=k+Ri-w);break;case c:if(b){if(g&&(a=wi(g)))switch(o.segmentCodec){case"aac":this.parseAACPES(o,a);break;case"mp3":this.parseMPEGPES(o,a)}g={data:[],size:0}}g&&(g.data.push(e.subarray(w,k+Ri)),g.size+=k+Ri-w);break;case f:b&&(v&&(a=wi(v))&&this.parseID3PES(l,a),v={data:[],size:0}),v&&(v.data.push(e.subarray(w,k+Ri)),v.size+=k+Ri-w);break;case 0:b&&(w+=e[w]+1),y=this._pmtId=Di(e,w);break;case y:b&&(w+=e[w]+1);var C=Ii(e,w,this.typeSupported,i);(h=C.avc)>0&&(s.pid=h),(c=C.audio)>0&&(o.pid=c,o.segmentCodec=C.segmentCodec),(f=C.id3)>0&&(l.pid=f),null===m||p||(D.warn("MPEG-TS PMT found at "+k+" after unknown PID '"+m+"'. Backtracking to sync byte @"+R+" to parse all TS packets."),m=null,k=R-188),p=this.pmtParsed=!0;break;case 17:case 8191:break;default:m=I}}else A++;if(A>0){var _=new Error("Found "+A+" TS packet/s that do not start with 0x47");this.observer.emit(T.ERROR,T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!1,error:_,reason:_.message})}s.pesData=d,o.pesData=g,l.pesData=v;var P={audioTrack:o,videoTrack:s,id3Track:l,textTrack:u};return n&&this.extractRemainingSamples(P),P},e.flush=function(){var t,e=this.remainderData;return this.remainderData=null,t=e?this.demux(e,-1,!1,!0):{videoTrack:this._avcTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(t),this.sampleAes?this.decrypt(t,this.sampleAes):t},e.extractRemainingSamples=function(t){var e,r=t.audioTrack,i=t.videoTrack,n=t.id3Track,a=t.textTrack,s=i.pesData,o=r.pesData,l=n.pesData;if(s&&(e=wi(s))?(this.parseAVCPES(i,a,e,!0),i.pesData=null):i.pesData=s,o&&(e=wi(o))){switch(r.segmentCodec){case"aac":this.parseAACPES(r,e);break;case"mp3":this.parseMPEGPES(r,e)}r.pesData=null}else null!=o&&o.size&&D.log("last AAC PES packet truncated,might overlap between fragments"),r.pesData=o;l&&(e=wi(l))?(this.parseID3PES(n,e),n.pesData=null):n.pesData=l},e.demuxSampleAes=function(t,e,r){var i=this.demux(t,r,!0,!this.config.progressive),n=this.sampleAes=new Li(this.observer,this.config,e);return this.decrypt(i,n)},e.decrypt=function(t,e){return new Promise((function(r){var i=t.audioTrack,n=t.videoTrack;i.samples&&"aac"===i.segmentCodec?e.decryptAacSamples(i.samples,0,(function(){n.samples?e.decryptAvcSamples(n.samples,0,0,(function(){r(t)})):r(t)})):n.samples&&e.decryptAvcSamples(n.samples,0,0,(function(){r(t)}))}))},e.destroy=function(){this._duration=0},e.parseAVCPES=function(t,e,r,i){var n,a=this,s=this.parseAVCNALu(t,r.data),o=this.avcSample,l=!1;r.data=null,o&&s.length&&!t.audFound&&(Ci(o,t),o=this.avcSample=ki(!1,r.pts,r.dts,"")),s.forEach((function(i){switch(i.type){case 1:n=!0,o||(o=a.avcSample=ki(!0,r.pts,r.dts,"")),o.frame=!0;var s=i.data;if(l&&s.length>4){var u=new Si(s).readSliceType();2!==u&&4!==u&&7!==u&&9!==u||(o.key=!0)}break;case 5:n=!0,o||(o=a.avcSample=ki(!0,r.pts,r.dts,"")),o.key=!0,o.frame=!0;break;case 6:n=!0,Ft(i.data,1,r.pts,e.samples);break;case 7:if(n=!0,l=!0,!t.sps){var h=i.data,d=new Si(h).readSPS();t.width=d.width,t.height=d.height,t.pixelRatio=d.pixelRatio,t.sps=[h],t.duration=a._duration;for(var c=h.subarray(1,4),f="avc1.",g=0;g<3;g++){var v=c[g].toString(16);v.length<2&&(v="0"+v),f+=v}t.codec=f}break;case 8:n=!0,t.pps||(t.pps=[i.data]);break;case 9:n=!1,t.audFound=!0,o&&Ci(o,t),o=a.avcSample=ki(!1,r.pts,r.dts,"");break;case 12:n=!0;break;default:n=!1,o&&(o.debug+="unknown NAL "+i.type+" ")}o&&n&&o.units.push(i)})),i&&o&&(Ci(o,t),this.avcSample=null)},e.getLastNalUnit=function(t){var e,r,i=this.avcSample;if(i&&0!==i.units.length||(i=t[t.length-1]),null!=(e=i)&&e.units){var n=i.units;r=n[n.length-1]}return r},e.parseAVCNALu=function(t,e){var r,i,n=e.byteLength,a=t.naluState||0,s=a,o=[],l=0,u=-1,h=0;for(-1===a&&(u=0,h=31&e[0],a=0,l=1);l=0){var d={data:e.subarray(u,l-a-1),type:h};o.push(d)}else{var c=this.getLastNalUnit(t.samples);if(c&&(s&&l<=4-s&&c.state&&(c.data=c.data.subarray(0,c.data.byteLength-s)),(i=l-a-1)>0)){var f=new Uint8Array(c.data.byteLength+i);f.set(c.data,0),f.set(e.subarray(0,i),c.data.byteLength),c.data=f,c.state=0}}l=0&&a>=0){var g={data:e.subarray(u,n),type:h,state:a};o.push(g)}if(0===o.length){var v=this.getLastNalUnit(t.samples);if(v){var m=new Uint8Array(v.data.byteLength+e.byteLength);m.set(v.data,0),m.set(e,v.data.byteLength),v.data=m}}return t.naluState=a,o},e.parseAACPES=function(t,e){var r,i,n,a=0,s=this.aacOverFlow,o=e.data;if(s){this.aacOverFlow=null;var l=s.missing,u=s.sample.unit.byteLength;if(-1===l){var h=new Uint8Array(u+o.byteLength);h.set(s.sample.unit,0),h.set(o,u),o=h}else{var d=u-l;s.sample.unit.set(o.subarray(0,l),d),t.samples.push(s.sample),a=s.missing}}for(r=a,i=o.length;r1;){var l=new Uint8Array(o[0].length+o[1].length);l.set(o[0]),l.set(o[1],o[0].length),o[0]=l,o.splice(1,1)}if(1===((e=o[0])[0]<<16)+(e[1]<<8)+e[2]){if((r=(e[4]<<8)+e[5])&&r>t.size-6)return null;var u=e[7];192&u&&(n=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&u?n-(a=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2)>54e5&&(D.warn(Math.round((n-a)/9e4)+"s delta between PTS and DTS, align them"),n=a):a=n);var h=(i=e[8])+9;if(t.size<=h)return null;t.size-=h;for(var d=new Uint8Array(t.size),c=0,f=o.length;cg){h-=g;continue}e=e.subarray(h),g-=h,h=0}d.set(e,s),s+=g}return r&&(r-=i+3),{data:d,pts:n,dts:a,len:r}}return null}function Ci(t,e){if(t.units.length&&t.frame){if(void 0===t.pts){var r=e.samples,i=r.length;if(!i)return void e.dropped++;var n=r[i-1];t.pts=n.pts,t.dts=n.dts}e.samples.push(t)}t.debug.length&&D.log(t.pts+"/"+t.dts+":"+t.debug)}var _i=function(t){function e(){return t.apply(this,arguments)||this}l(e,t);var r=e.prototype;return r.resetInitSegment=function(e,r,i,n){t.prototype.resetInitSegment.call(this,e,r,i,n),this._audioTrack={container:"audio/mpeg",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"mp3",samples:[],manifestCodec:r,duration:n,inputTimeScale:9e4,dropped:0}},e.probe=function(t){if(!t)return!1;for(var e=(nt(t,0)||[]).length,r=t.length;e1?r-1:0),n=1;n>24&255,o[1]=e>>16&255,o[2]=e>>8&255,o[3]=255&e,o.set(t,4),a=0,e=8;a>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,n>>24,n>>16&255,n>>8&255,255&n,85,196,0,0]))},t.mdia=function(e){return t.box(t.types.mdia,t.mdhd(e.timescale,e.duration),t.hdlr(e.type),t.minf(e))},t.mfhd=function(e){return t.box(t.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))},t.minf=function(e){return"audio"===e.type?t.box(t.types.minf,t.box(t.types.smhd,t.SMHD),t.DINF,t.stbl(e)):t.box(t.types.minf,t.box(t.types.vmhd,t.VMHD),t.DINF,t.stbl(e))},t.moof=function(e,r,i){return t.box(t.types.moof,t.mfhd(e),t.traf(i,r))},t.moov=function(e){for(var r=e.length,i=[];r--;)i[r]=t.trak(e[r]);return t.box.apply(null,[t.types.moov,t.mvhd(e[0].timescale,e[0].duration)].concat(i).concat(t.mvex(e)))},t.mvex=function(e){for(var r=e.length,i=[];r--;)i[r]=t.trex(e[r]);return t.box.apply(null,[t.types.mvex].concat(i))},t.mvhd=function(e,r){r*=e;var i=Math.floor(r/(xi+1)),n=Math.floor(r%(xi+1)),a=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,n>>24,n>>16&255,n>>8&255,255&n,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return t.box(t.types.mvhd,a)},t.sdtp=function(e){var r,i,n=e.samples||[],a=new Uint8Array(4+n.length);for(r=0;r>>8&255),a.push(255&n),a=a.concat(Array.prototype.slice.call(i));for(r=0;r>>8&255),s.push(255&n),s=s.concat(Array.prototype.slice.call(i));var o=t.box(t.types.avcC,new Uint8Array([1,a[3],a[4],a[5],255,224|e.sps.length].concat(a).concat([e.pps.length]).concat(s))),l=e.width,u=e.height,h=e.pixelRatio[0],d=e.pixelRatio[1];return t.box(t.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,l>>8&255,255&l,u>>8&255,255&u,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),o,t.box(t.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),t.box(t.types.pasp,new Uint8Array([h>>24,h>>16&255,h>>8&255,255&h,d>>24,d>>16&255,d>>8&255,255&d])))},t.esds=function(t){var e=t.config.length;return new Uint8Array([0,0,0,0,3,23+e,0,1,0,4,15+e,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([e]).concat(t.config).concat([6,1,2]))},t.mp4a=function(e){var r=e.samplerate;return t.box(t.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]),t.box(t.types.esds,t.esds(e)))},t.mp3=function(e){var r=e.samplerate;return t.box(t.types[".mp3"],new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]))},t.stsd=function(e){return"audio"===e.type?"mp3"===e.segmentCodec&&"mp3"===e.codec?t.box(t.types.stsd,t.STSD,t.mp3(e)):t.box(t.types.stsd,t.STSD,t.mp4a(e)):t.box(t.types.stsd,t.STSD,t.avc1(e))},t.tkhd=function(e){var r=e.id,i=e.duration*e.timescale,n=e.width,a=e.height,s=Math.floor(i/(xi+1)),o=Math.floor(i%(xi+1));return t.box(t.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s,o>>24,o>>16&255,o>>8&255,255&o,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,n>>8&255,255&n,0,0,a>>8&255,255&a,0,0]))},t.traf=function(e,r){var i=t.sdtp(e),n=e.id,a=Math.floor(r/(xi+1)),s=Math.floor(r%(xi+1));return t.box(t.types.traf,t.box(t.types.tfhd,new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n])),t.box(t.types.tfdt,new Uint8Array([1,0,0,0,a>>24,a>>16&255,a>>8&255,255&a,s>>24,s>>16&255,s>>8&255,255&s])),t.trun(e,i.length+16+20+8+16+8+8),i)},t.trak=function(e){return e.duration=e.duration||4294967295,t.box(t.types.trak,t.tkhd(e),t.mdia(e))},t.trex=function(e){var r=e.id;return t.box(t.types.trex,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))},t.trun=function(e,r){var i,n,a,s,o,l,u=e.samples||[],h=u.length,d=12+16*h,c=new Uint8Array(d);for(r+=8+d,c.set(["video"===e.type?1:0,0,15,1,h>>>24&255,h>>>16&255,h>>>8&255,255&h,r>>>24&255,r>>>16&255,r>>>8&255,255&r],0),i=0;i>>24&255,a>>>16&255,a>>>8&255,255&a,s>>>24&255,s>>>16&255,s>>>8&255,255&s,o.isLeading<<2|o.dependsOn,o.isDependedOn<<6|o.hasRedundancy<<4|o.paddingValue<<1|o.isNonSync,61440&o.degradPrio,15&o.degradPrio,l>>>24&255,l>>>16&255,l>>>8&255,255&l],12+16*i);return t.box(t.types.trun,c)},t.initSegment=function(e){t.types||t.init();var r=t.moov(e),i=new Uint8Array(t.FTYP.byteLength+r.byteLength);return i.set(t.FTYP),i.set(r,t.FTYP.byteLength),i},t}();function Oi(t,e,r,i){void 0===r&&(r=1),void 0===i&&(i=!1);var n=t*e*r;return i?Math.round(n):n}function Mi(t,e){return void 0===e&&(e=!1),Oi(t,1e3,1/9e4,e)}Fi.types=void 0,Fi.HDLR_TYPES=void 0,Fi.STTS=void 0,Fi.STSC=void 0,Fi.STCO=void 0,Fi.STSZ=void 0,Fi.VMHD=void 0,Fi.SMHD=void 0,Fi.STSD=void 0,Fi.FTYP=void 0,Fi.DINF=void 0;var Ni=null,Ui=null,Bi=function(){function t(t,e,r,i){if(this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=null,this._initDTS=null,this.nextAvcDts=null,this.nextAudioPts=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.observer=t,this.config=e,this.typeSupported=r,this.ISGenerated=!1,null===Ni){var n=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);Ni=n?parseInt(n[1]):0}if(null===Ui){var a=navigator.userAgent.match(/Safari\/(\d+)/i);Ui=a?parseInt(a[1]):0}}var e=t.prototype;return e.destroy=function(){},e.resetTimeStamp=function(t){D.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=t},e.resetNextTimestamp=function(){D.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1},e.resetInitSegment=function(){D.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1},e.getVideoStartPts=function(t){var e=!1,r=t.reduce((function(t,r){var i=r.pts-t;return i<-4294967296?(e=!0,Gi(t,r.pts)):i>0?t:r.pts}),t[0].pts);return e&&D.debug("PTS rollover detected"),r},e.remux=function(t,e,r,i,n,a,s,o){var l,u,h,d,c,f,g=n,v=n,m=t.pid>-1,p=e.pid>-1,y=e.samples.length,T=t.samples.length>0,E=s&&y>0||y>1;if((!m||T)&&(!p||E)||this.ISGenerated||s){this.ISGenerated||(h=this.generateIS(t,e,n,a));var S,L=this.isVideoContiguous,R=-1;if(E&&(R=function(t){for(var e=0;e0){D.warn("[mp4-remuxer]: Dropped "+R+" out of "+y+" video samples due to a missing keyframe");var A=this.getVideoStartPts(e.samples);e.samples=e.samples.slice(R),e.dropped+=R,S=v+=(e.samples[0].pts-A)/e.inputTimeScale}else-1===R&&(D.warn("[mp4-remuxer]: No keyframe found out of "+y+" video samples"),f=!1);if(this.ISGenerated){if(T&&E){var k=this.getVideoStartPts(e.samples),b=(Gi(t.samples[0].pts,k)-k)/e.inputTimeScale;g+=Math.max(0,b),v+=Math.max(0,-b)}if(T){if(t.samplerate||(D.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),h=this.generateIS(t,e,n,a)),u=this.remuxAudio(t,g,this.isAudioContiguous,a,p||E||o===de?v:void 0),E){var I=u?u.endPTS-u.startPTS:0;e.inputTimeScale||(D.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),h=this.generateIS(t,e,n,a)),l=this.remuxVideo(e,v,L,I)}}else E&&(l=this.remuxVideo(e,v,L,0));l&&(l.firstKeyFrame=R,l.independent=-1!==R,l.firstKeyFramePTS=S)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(r.samples.length&&(c=Ki(r,n,this._initPTS,this._initDTS)),i.samples.length&&(d=Hi(i,n,this._initPTS))),{audio:u,video:l,initSegment:h,independent:f,text:d,id3:c}},e.generateIS=function(t,e,r,i){var n,a,s,o=t.samples,l=e.samples,u=this.typeSupported,h={},d=this._initPTS,c=!d||i,f="audio/mp4";if(c&&(n=a=1/0),t.config&&o.length&&(t.timescale=t.samplerate,"mp3"===t.segmentCodec&&(u.mpeg?(f="audio/mpeg",t.codec=""):u.mp3&&(t.codec="mp3")),h.audio={id:"audio",container:f,codec:t.codec,initSegment:"mp3"===t.segmentCodec&&u.mpeg?new Uint8Array(0):Fi.initSegment([t]),metadata:{channelCount:t.channelCount}},c&&(s=t.inputTimeScale,d&&s===d.timescale?c=!1:n=a=o[0].pts-Math.round(s*r))),e.sps&&e.pps&&l.length&&(e.timescale=e.inputTimeScale,h.video={id:"main",container:"video/mp4",codec:e.codec,initSegment:Fi.initSegment([e]),metadata:{width:e.width,height:e.height}},c))if(s=e.inputTimeScale,d&&s===d.timescale)c=!1;else{var g=this.getVideoStartPts(l),v=Math.round(s*r);a=Math.min(a,Gi(l[0].dts,g)-v),n=Math.min(n,g-v)}if(Object.keys(h).length)return this.ISGenerated=!0,c?(this._initPTS={baseTime:n,timescale:s},this._initDTS={baseTime:a,timescale:s}):n=s=void 0,{tracks:h,initPTS:n,timescale:s}},e.remuxVideo=function(t,e,r,i){var n,a,s=t.inputTimeScale,l=t.samples,u=[],h=l.length,d=this._initPTS,c=this.nextAvcDts,f=8,g=this.videoSampleDuration,v=Number.POSITIVE_INFINITY,m=Number.NEGATIVE_INFINITY,p=!1;r&&null!==c||(c=e*s-(l[0].pts-Gi(l[0].dts,l[0].pts)));for(var y=d.baseTime*s/d.timescale,L=0;L0?L-1:L].dts&&(p=!0)}p&&l.sort((function(t,e){var r=t.dts-e.dts,i=t.pts-e.pts;return r||i})),n=l[0].dts;var A=(a=l[l.length-1].dts)-n,k=A?Math.round(A/(h-1)):g||t.inputTimeScale/30;if(r){var b=n-c,I=b>k,w=b<-1;if((I||w)&&(I?D.warn("AVC: "+Mi(b,!0)+" ms ("+b+"dts) hole between fragments detected, filling it"):D.warn("AVC: "+Mi(-b,!0)+" ms ("+b+"dts) overlapping between fragments detected"),!w||c>l[0].pts)){n=c;var C=l[0].pts-b;l[0].dts=n,l[0].pts=C,D.log("Video: First PTS/DTS adjusted: "+Mi(C,!0)+"/"+Mi(n,!0)+", delta: "+Mi(b,!0)+" ms")}}n=Math.max(0,n);for(var _=0,P=0,x=0;x0?X.dts-l[q-1].dts:k;if(rt=q>0?X.pts-l[q-1].pts:k,it.stretchShortVideoTrack&&null!==this.nextAudioPts){var at=Math.floor(it.maxBufferHole*s),st=(i?v+i*s:this.nextAudioPts)-X.pts;st>at?((g=st-nt)<0?g=nt:H=!0,D.log("[mp4-remuxer]: It is approximately "+st/90+" ms to the next segment; using duration "+g/90+" ms for the last video frame.")):g=nt}else g=nt}var ot=Math.round(X.pts-X.dts);V=Math.min(V,g),W=Math.max(W,g),Y=Math.min(Y,rt),j=Math.max(j,rt),u.push(new Yi(X.key,g,Q,ot))}if(u.length)if(Ni){if(Ni<70){var lt=u[0].flags;lt.dependsOn=2,lt.isNonSync=0}}else if(Ui&&j-Y0&&(i&&Math.abs(p-m)<9e3||Math.abs(Gi(g[0].pts-y,p)-m)<20*u),g.forEach((function(t){t.pts=Gi(t.pts-y,p)})),!r||m<0){if(g=g.filter((function(t){return t.pts>=0})),!g.length)return;m=0===n?0:i&&!f?Math.max(0,p):g[0].pts}if("aac"===t.segmentCodec)for(var L=this.config.maxAudioFramesDrift,R=0,A=m;R=L*u&&w<1e4&&f){var C=Math.round(I/u);(A=b-C*u)<0&&(C--,A+=u),0===R&&(this.nextAudioPts=m=A),D.warn("[mp4-remuxer]: Injecting "+C+" audio frame @ "+(A/a).toFixed(3)+"s due to "+Math.round(1e3*I/a)+" ms gap.");for(var _=0;_0))return;N+=v;try{F=new Uint8Array(N)}catch(t){return void this.observer.emit(T.ERROR,T.ERROR,{type:E.MUX_ERROR,details:S.REMUX_ALLOC_ERROR,fatal:!1,error:t,bytes:N,reason:"fail allocating audio mdat "+N})}d||(new DataView(F.buffer).setUint32(0,N),F.set(Fi.types.mdat,4))}F.set(H,v);var Y=H.byteLength;v+=Y,c.push(new Yi(!0,l,Y,0)),M=V}var W=c.length;if(W){var j=c[c.length-1];this.nextAudioPts=m=M+s*j.duration;var q=d?new Uint8Array(0):Fi.moof(t.sequenceNumber++,O/s,o({},t,{samples:c}));t.samples=[];var X=O/a,z=m/a,Q={data1:q,data2:F,startPTS:X,endPTS:z,startDTS:X,endDTS:z,type:"audio",hasAudio:!0,hasVideo:!1,nb:W};return this.isAudioContiguous=!0,Q}},e.remuxEmptyAudio=function(t,e,r,i){var n=t.inputTimeScale,a=n/(t.samplerate?t.samplerate:n),s=this.nextAudioPts,o=this._initDTS,l=9e4*o.baseTime/o.timescale,u=(null!==s?s:i.startDTS*n)+l,h=i.endDTS*n+l,d=1024*a,c=Math.ceil((h-u)/d),f=Pi.getSilentFrame(t.manifestCodec||t.codec,t.channelCount);if(D.warn("[mp4-remuxer]: remux empty Audio"),f){for(var g=[],v=0;v4294967296;)t+=r;return t}function Ki(t,e,r,i){var n=t.samples.length;if(n){for(var a=t.inputTimeScale,s=0;s0;n||(i=bt(e,["encv"])),i.forEach((function(t){bt(n?t.subarray(28):t.subarray(78),["sinf"]).forEach((function(t){var e=wt(t);if(e){var i=e.subarray(8,24);i.some((function(t){return 0!==t}))||(D.log("[eme] Patching keyId in 'enc"+(n?"a":"v")+">sinf>>tenc' box: "+pt(i)+" -> "+pt(r)),e.set(r,8))}}))}))})),t}(t,i)),this.emitInitSegment=!0},e.generateInitSegment=function(t){var e=this.audioCodec,r=this.videoCodec;if(null==t||!t.byteLength)return this.initTracks=void 0,void(this.initData=void 0);var i=this.initData=It(t);e||(e=qi(i.audio,F)),r||(r=qi(i.video,O));var n={};i.audio&&i.video?n.audiovideo={container:"video/mp4",codec:e+","+r,initSegment:t,id:"main"}:i.audio?n.audio={container:"audio/mp4",codec:e,initSegment:t,id:"audio"}:i.video?n.video={container:"video/mp4",codec:r,initSegment:t,id:"main"}:D.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=n},e.remux=function(t,e,r,i,n,a){var s,o,l=this.initPTS,u=this.lastEndTime,h={audio:void 0,video:void 0,text:i,id3:r,initSegment:void 0};y(u)||(u=this.lastEndTime=n||0);var d=e.samples;if(null==d||!d.length)return h;var c={initPTS:void 0,timescale:1},f=this.initData;if(null!=(s=f)&&s.length||(this.generateInitSegment(d),f=this.initData),null==(o=f)||!o.length)return D.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),h;this.emitInitSegment&&(c.tracks=this.initTracks,this.emitInitSegment=!1);var g=function(t,e){return bt(e,["moof","traf"]).reduce((function(e,r){var i=bt(r,["tfdt"])[0],n=i[0],a=bt(r,["tfhd"]).reduce((function(e,r){var a=Rt(r,4),s=t[a];if(s){var o=Rt(i,4);if(1===n){if(o===yt)return D.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),e;o*=yt+1,o+=Rt(i,8)}var l=o/(s.timescale||9e4);if(isFinite(l)&&(null===e||l1}(l,v,n)||c.timescale!==l.timescale&&a)&&(c.initPTS=v-n,this.initPTS=l={baseTime:c.initPTS,timescale:1});var m=function(t,e){for(var r=0,i=0,n=0,a=bt(t,["moof","traf"]),s=0;s0?this.lastEndTime=T:(D.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());var E=!!f.audio,S=!!f.video,L="";E&&(L+="audio"),S&&(L+="video");var R={data1:d,startPTS:p,startDTS:p,endPTS:T,endDTS:T,type:L,hasAudio:E,hasVideo:S,nb:1,dropped:0};return h.audio="audio"===R.type?R:void 0,h.video="audio"!==R.type?R:void 0,h.initSegment=c,h.id3=Ki(r,n,l,l),i.samples.length&&(h.text=Hi(i,n,l)),h},t}();function qi(t,e){var r=null==t?void 0:t.codec;return r&&r.length>4?r:"hvc1"===r||"hev1"===r?"hvc1.1.c.L120.90":"av01"===r?"av01.0.04M.08":"avc1"===r||e===O?"avc1.42e01e":"mp4a.40.5"}try{Vi=self.performance.now.bind(self.performance)}catch(t){D.debug("Unable to use Performance API on this environment"),Vi="undefined"!=typeof self&&self.Date.now}var Xi=[{demux:hi,remux:ji},{demux:Ai,remux:Bi},{demux:li,remux:Bi},{demux:_i,remux:Bi}],zi=function(){function t(t,e,r,i,n){this.async=!1,this.observer=void 0,this.typeSupported=void 0,this.config=void 0,this.vendor=void 0,this.id=void 0,this.demuxer=void 0,this.remuxer=void 0,this.decrypter=void 0,this.probe=void 0,this.decryptionPromise=null,this.transmuxConfig=void 0,this.currentTransmuxState=void 0,this.observer=t,this.typeSupported=e,this.config=r,this.vendor=i,this.id=n}var e=t.prototype;return e.configure=function(t){this.transmuxConfig=t,this.decrypter&&this.decrypter.reset()},e.push=function(t,e,r,i){var n=this,a=r.transmuxing;a.executeStart=Vi();var s=new Uint8Array(t),o=this.currentTransmuxState,l=this.transmuxConfig;i&&(this.currentTransmuxState=i);var u=i||o,h=u.contiguous,d=u.discontinuity,c=u.trackSwitch,f=u.accurateTimeOffset,g=u.timeOffset,v=u.initSegmentChange,m=l.audioCodec,p=l.videoCodec,y=l.defaultInitPts,L=l.duration,R=l.initSegmentData,A=function(t,e){var r=null;return t.byteLength>0&&null!=e&&null!=e.key&&null!==e.iv&&null!=e.method&&(r=e),r}(s,e);if(A&&"AES-128"===A.method){var k=this.getDecrypter();if(!k.isSync())return this.decryptionPromise=k.webCryptoDecrypt(s,A.key.buffer,A.iv.buffer).then((function(t){var e=n.push(t,null,r);return n.decryptionPromise=null,e})),this.decryptionPromise;var b=k.softwareDecrypt(s,A.key.buffer,A.iv.buffer);if(r.part>-1&&(b=k.flush()),!b)return a.executeEnd=Vi(),Qi(r);s=new Uint8Array(b)}var I=this.needsProbing(d,c);if(I){var w=this.configureTransmuxer(s);if(w)return D.warn("[transmuxer] "+w.message),this.observer.emit(T.ERROR,T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!1,error:w,reason:w.message}),a.executeEnd=Vi(),Qi(r)}(d||c||v||I)&&this.resetInitSegment(R,m,p,L,e),(d||v||I)&&this.resetInitialTimestamp(y),h||this.resetContiguity();var C=this.transmux(s,A,g,f,r),_=this.currentTransmuxState;return _.contiguous=!0,_.discontinuity=!1,_.trackSwitch=!1,a.executeEnd=Vi(),C},e.flush=function(t){var e=this,r=t.transmuxing;r.executeStart=Vi();var i=this.decrypter,n=this.currentTransmuxState,a=this.decryptionPromise;if(a)return a.then((function(){return e.flush(t)}));var s=[],o=n.timeOffset;if(i){var l=i.flush();l&&s.push(this.push(l,null,t))}var u=this.demuxer,h=this.remuxer;if(!u||!h)return r.executeEnd=Vi(),[Qi(t)];var d=u.flush(o);return $i(d)?d.then((function(r){return e.flushRemux(s,r,t),s})):(this.flushRemux(s,d,t),s)},e.flushRemux=function(t,e,r){var i=e.audioTrack,n=e.videoTrack,a=e.id3Track,s=e.textTrack,o=this.currentTransmuxState,l=o.accurateTimeOffset,u=o.timeOffset;D.log("[transmuxer.ts]: Flushed fragment "+r.sn+(r.part>-1?" p: "+r.part:"")+" of level "+r.level);var h=this.remuxer.remux(i,n,a,s,u,l,!0,this.id);t.push({remuxResult:h,chunkMeta:r}),r.transmuxing.executeEnd=Vi()},e.resetInitialTimestamp=function(t){var e=this.demuxer,r=this.remuxer;e&&r&&(e.resetTimeStamp(t),r.resetTimeStamp(t))},e.resetContiguity=function(){var t=this.demuxer,e=this.remuxer;t&&e&&(t.resetContiguity(),e.resetNextTimestamp())},e.resetInitSegment=function(t,e,r,i,n){var a=this.demuxer,s=this.remuxer;a&&s&&(a.resetInitSegment(t,e,r,i),s.resetInitSegment(t,e,r,n))},e.destroy=function(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)},e.transmux=function(t,e,r,i,n){return e&&"SAMPLE-AES"===e.method?this.transmuxSampleAes(t,e,r,i,n):this.transmuxUnencrypted(t,r,i,n)},e.transmuxUnencrypted=function(t,e,r,i){var n=this.demuxer.demux(t,e,!1,!this.config.progressive),a=n.audioTrack,s=n.videoTrack,o=n.id3Track,l=n.textTrack;return{remuxResult:this.remuxer.remux(a,s,o,l,e,r,!1,this.id),chunkMeta:i}},e.transmuxSampleAes=function(t,e,r,i,n){var a=this;return this.demuxer.demuxSampleAes(t,e,r).then((function(t){return{remuxResult:a.remuxer.remux(t.audioTrack,t.videoTrack,t.id3Track,t.textTrack,r,i,!1,a.id),chunkMeta:n}}))},e.configureTransmuxer=function(t){for(var e,r=this.config,i=this.observer,n=this.typeSupported,a=this.vendor,s=0,o=Xi.length;s1&&l.id===(null==m?void 0:m.stats.chunkCount),L=!y&&(1===T||0===T&&(1===E||S&&E<=0)),R=self.performance.now();(y||T||0===n.stats.parsing.start)&&(n.stats.parsing.start=R),!a||!E&&L||(a.stats.parsing.start=R);var A=!(m&&(null==(h=n.initSegment)?void 0:h.url)===(null==(d=m.initSegment)?void 0:d.url)),k=new Zi(p,L,o,y,g,A);if(!L||p||A){D.log("[transmuxer-interface, "+n.type+"]: Starting new transmux session for sn: "+l.sn+" p: "+l.part+" level: "+l.level+" id: "+l.id+"\n discontinuity: "+p+"\n trackSwitch: "+y+"\n contiguous: "+L+"\n accurateTimeOffset: "+o+"\n timeOffset: "+g+"\n initSegmentChange: "+A);var b=new Ji(r,i,e,s,u);this.configureTransmuxer(b)}if(this.frag=n,this.part=a,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:t,decryptdata:v,chunkMeta:l,state:k},t instanceof ArrayBuffer?[t]:[]);else if(f){var I=f.push(t,v,l,k);$i(I)?(f.async=!0,I.then((function(t){c.handleTransmuxComplete(t)})).catch((function(t){c.transmuxerError(t,l,"transmuxer-interface push error")}))):(f.async=!1,this.handleTransmuxComplete(I))}},r.flush=function(t){var e=this;t.transmuxing.start=self.performance.now();var r=this.transmuxer;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:t});else if(r){var i=r.flush(t);$i(i)||r.async?($i(i)||(i=Promise.resolve(i)),i.then((function(r){e.handleFlushResult(r,t)})).catch((function(r){e.transmuxerError(r,t,"transmuxer-interface flush error")}))):this.handleFlushResult(i,t)}},r.transmuxerError=function(t,e,r){this.hls&&(this.error=t,this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,chunkMeta:e,fatal:!1,error:t,err:t,reason:r}))},r.handleFlushResult=function(t,e){var r=this;t.forEach((function(t){r.handleTransmuxComplete(t)})),this.onFlush(e)},r.onWorkerMessage=function(t){var e=t.data,r=this.hls;switch(e.event){case"init":var i,n=null==(i=this.workerContext)?void 0:i.objectURL;n&&self.URL.revokeObjectURL(n);break;case"transmuxComplete":this.handleTransmuxComplete(e.data);break;case"flush":this.onFlush(e.data);break;case"workerLog":D[e.data.logType]&&D[e.data.logType](e.data.message);break;default:e.data=e.data||{},e.data.frag=this.frag,e.data.id=this.id,r.trigger(e.event,e.data)}},r.configureTransmuxer=function(t){var e=this.transmuxer;this.workerContext?this.workerContext.worker.postMessage({cmd:"configure",config:t}):e&&e.configure(t)},r.handleTransmuxComplete=function(t){t.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(t)},e}(),ln=function(){function t(t,e,r,i){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=t,this.media=e,this.fragmentTracker=r,this.hls=i}var e=t.prototype;return e.destroy=function(){this.media=null,this.hls=this.fragmentTracker=null},e.poll=function(t,e){var r=this.config,i=this.media,n=this.stalled;if(null!==i){var a=i.currentTime,s=i.seeking,o=this.seeking&&!s,l=!this.seeking&&s;if(this.seeking=s,a===t){if(l||o)this.stalled=null;else if(!(i.paused&&!s||i.ended||0===i.playbackRate)&&Ar.getBuffered(i).length){var u=Ar.bufferInfo(i,a,0),h=u.len>0,d=u.nextStart||0;if(h||d){if(s){var c=u.len>2,f=!d||e&&e.start<=a||d-a>2&&!this.fragmentTracker.getPartialFragment(a);if(c||f)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var g,v=Math.max(d,u.start||0)-a,m=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,p=(null==m||null==(g=m.details)?void 0:g.live)?2*m.details.targetduration:2,y=this.fragmentTracker.getPartialFragment(a);if(v>0&&(v<=p||y))return void this._trySkipBufferHole(y)}var T=self.performance.now();if(null!==n){var E=T-n;if(s||!(E>=250)||(this._reportStall(u),this.media)){var S=Ar.bufferInfo(i,a,r.maxBufferHole);this._tryFixBufferStall(S,E)}}else this.stalled=T}}}else if(this.moved=!0,null!==n){if(this.stallReported){var L=self.performance.now()-n;D.warn("playback not stuck anymore @"+a+", after "+Math.round(L)+"ms"),this.stallReported=!1}this.stalled=null,this.nudgeRetry=0}}},e._tryFixBufferStall=function(t,e){var r=this.config,i=this.fragmentTracker,n=this.media;if(null!==n){var a=n.currentTime,s=i.getPartialFragment(a);if(s&&(this._trySkipBufferHole(s)||!this.media))return;(t.len>r.maxBufferHole||t.nextStart&&t.nextStart-a1e3*r.highBufferWatchdogPeriod&&(D.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}},e._reportStall=function(t){var e=this.hls,r=this.media;if(!this.stallReported&&r){this.stallReported=!0;var i=new Error("Playback stalling at @"+r.currentTime+" due to low buffer ("+JSON.stringify(t)+")");D.warn(i.message),e.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.BUFFER_STALLED_ERROR,fatal:!1,error:i,buffer:t.len})}},e._trySkipBufferHole=function(t){var e=this.config,r=this.hls,i=this.media;if(null===i)return 0;var n=i.currentTime,a=Ar.bufferInfo(i,n,0),s=n0&&a.len<1&&i.readyState<3,u=s-n;if(u>0&&(o||l)){if(u>e.maxBufferHole){var h=this.fragmentTracker,d=!1;if(0===n){var c=h.getAppendedFrag(0,he);c&&s1?(i=0,this.bitrateTest=!0):i=r.nextAutoLevel),this.level=r.nextLoadLevel=i,this.loadedmetadata=!1}e>0&&-1===t&&(this.log("Override startPosition with lastCurrentTime @"+e.toFixed(3)),t=e),this.state=Nr,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}else this._forceStartLoad=!0,this.state=Mr},r.stopLoad=function(){this._forceStartLoad=!1,t.prototype.stopLoad.call(this)},r.doTick=function(){switch(this.state){case qr:var t,e=this.levels,r=this.level,i=null==e||null==(t=e[r])?void 0:t.details;if(i&&(!i.live||this.levelLastLoaded===this.level)){if(this.waitForCdnTuneIn(i))break;this.state=Nr;break}break;case Gr:var n,a=self.performance.now(),s=this.retryDate;(!s||a>=s||null!=(n=this.media)&&n.seeking)&&(this.resetStartWhenNotLoaded(this.level),this.state=Nr)}this.state===Nr&&this.doTickIdle(),this.onTickEnd()},r.onTickEnd=function(){t.prototype.onTickEnd.call(this),this.checkBuffer(),this.checkFragmentChanged()},r.doTickIdle=function(){var t=this.hls,e=this.levelLastLoaded,r=this.levels,i=this.media,n=t.config,a=t.nextLoadLevel;if(null!==e&&(i||!this.startFragRequested&&n.startFragPrefetch)&&(!this.altAudio||!this.audioOnly)&&null!=r&&r[a]){var s=r[a],o=this.getMainFwdBufferInfo();if(null!==o){var l=this.getLevelDetails();if(l&&this._streamEnded(o,l)){var u={};return this.altAudio&&(u.type="video"),this.hls.trigger(T.BUFFER_EOS,u),void(this.state=Yr)}t.loadLevel!==a&&-1===t.manualLevel&&this.log("Adapting to level "+a+" from level "+this.level),this.level=t.nextLoadLevel=a;var h=s.details;if(!h||this.state===qr||h.live&&this.levelLastLoaded!==a)return this.level=a,void(this.state=qr);var d=o.len,c=this.getMaxBufferLength(s.maxBitrate);if(!(d>=c)){this.backtrackFragment&&this.backtrackFragment.start>o.end&&(this.backtrackFragment=null);var f=this.backtrackFragment?this.backtrackFragment.start:o.end,g=this.getNextFragment(f,h);if(this.couldBacktrack&&!this.fragPrevious&&g&&"initSegment"!==g.sn&&this.fragmentTracker.getState(g)!==cr){var v,m=(null!=(v=this.backtrackFragment)?v:g).sn-h.startSN,p=h.fragments[m-1];p&&g.cc===p.cc&&(g=p,this.fragmentTracker.removeFragment(p))}else this.backtrackFragment&&o.len&&(this.backtrackFragment=null);if(g&&this.isLoopLoading(g,f)){if(!g.gap){var y=this.audioOnly&&!this.altAudio?F:O,E=(y===O?this.videoBuffer:this.mediaBuffer)||this.media;E&&this.afterBufferFlushed(E,y,he)}g=this.getNextFragmentLoopLoading(g,h,o,he,c)}g&&(!g.initSegment||g.initSegment.data||this.bitrateTest||(g=g.initSegment),this.loadFragment(g,s,f))}}}},r.loadFragment=function(e,r,i){var n=this.fragmentTracker.getState(e);this.fragCurrent=e,n===ur?"initSegment"===e.sn?this._loadInitSegment(e,r):this.bitrateTest?(this.log("Fragment "+e.sn+" of level "+e.level+" is being downloaded to test bitrate and will not be buffered"),this._loadBitrateTestFrag(e,r)):(this.startFragRequested=!0,t.prototype.loadFragment.call(this,e,r,i)):this.clearTrackerIfNeeded(e)},r.getAppendedFrag=function(t){var e=this.fragmentTracker.getAppendedFrag(t,he);return e&&"fragment"in e?e.fragment:e},r.getBufferedFrag=function(t){return this.fragmentTracker.getBufferedFrag(t,he)},r.followingBufferedFrag=function(t){return t?this.getBufferedFrag(t.end+.5):null},r.immediateLevelSwitch=function(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)},r.nextLevelSwitch=function(){var t=this.levels,e=this.media;if(null!=e&&e.readyState){var r,i=this.getAppendedFrag(e.currentTime);if(i&&i.start>1&&this.flushMainBuffer(0,i.start-1),!e.paused&&t){var n=t[this.hls.nextLoadLevel],a=this.fragLastKbps;r=a&&this.fragCurrent?this.fragCurrent.duration*n.maxBitrate/(1e3*a)+1:0}else r=0;var s=this.getBufferedFrag(e.currentTime+r);if(s){var o=this.followingBufferedFrag(s);if(o){this.abortCurrentFrag();var l=o.maxStartPTS?o.maxStartPTS:o.start,u=o.duration,h=Math.max(s.end,l+Math.min(Math.max(u-this.config.maxFragLookUpTolerance,.5*u),.75*u));this.flushMainBuffer(h,Number.POSITIVE_INFINITY)}}}},r.abortCurrentFrag=function(){var t=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,t&&(t.abortRequests(),this.fragmentTracker.removeFragment(t)),this.state){case Ur:case Br:case Gr:case Hr:case Vr:this.state=Nr}this.nextLoadPosition=this.getLoadPosition()},r.flushMainBuffer=function(e,r){t.prototype.flushMainBuffer.call(this,e,r,this.altAudio?"video":null)},r.onMediaAttached=function(e,r){t.prototype.onMediaAttached.call(this,e,r);var i=r.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new ln(this.config,i,this.fragmentTracker,this.hls)},r.onMediaDetaching=function(){var e=this.media;e&&this.onvplaying&&this.onvseeked&&(e.removeEventListener("playing",this.onvplaying),e.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),t.prototype.onMediaDetaching.call(this)},r.onMediaPlaying=function(){this.tick()},r.onMediaSeeked=function(){var t=this.media,e=t?t.currentTime:null;y(e)&&this.log("Media seeked to "+e.toFixed(3));var r=this.getMainFwdBufferInfo();null!==r&&0!==r.len?this.tick():this.warn('Main forward buffer length on "seeked" event '+(r?r.len:"empty")+")")},r.onManifestLoading=function(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(T.BUFFER_RESET,void 0),this.fragmentTracker.removeAllFragments(),this.couldBacktrack=!1,this.startPosition=this.lastCurrentTime=0,this.fragPlaying=null,this.backtrackFragment=null},r.onManifestParsed=function(t,e){var r,i,n,a=!1,s=!1;e.levels.forEach((function(t){(r=t.audioCodec)&&(-1!==r.indexOf("mp4a.40.2")&&(a=!0),-1!==r.indexOf("mp4a.40.5")&&(s=!0))})),this.audioCodecSwitch=a&&s&&!("function"==typeof(null==(n=Qr())||null==(i=n.prototype)?void 0:i.changeType)),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=e.levels,this.startFragRequested=!1},r.onLevelLoading=function(t,e){var r=this.levels;if(r&&this.state===Nr){var i=r[e.level];(!i.details||i.details.live&&this.levelLastLoaded!==e.level||this.waitForCdnTuneIn(i.details))&&(this.state=qr)}},r.onLevelLoaded=function(t,e){var r,i=this.levels,n=e.level,a=e.details,s=a.totalduration;if(i){this.log("Level "+n+" loaded ["+a.startSN+","+a.endSN+"], cc ["+a.startCC+", "+a.endCC+"] duration:"+s);var o=i[n],l=this.fragCurrent;!l||this.state!==Br&&this.state!==Gr||l.level===e.level&&l.urlId===o.urlId||!l.loader||this.abortCurrentFrag();var u=0;if(a.live||null!=(r=o.details)&&r.live){if(a.fragments[0]||(a.deltaUpdateFailed=!0),a.deltaUpdateFailed)return;u=this.alignPlaylists(a,o.details)}if(o.details=a,this.levelLastLoaded=n,this.hls.trigger(T.LEVEL_UPDATED,{details:a,level:n}),this.state===qr){if(this.waitForCdnTuneIn(a))return;this.state=Nr}this.startFragRequested?a.live&&this.synchronizeToLiveEdge(a):this.setStartPosition(a,u),this.tick()}else this.warn("Levels were reset while loading level "+n)},r._handleFragmentLoadProgress=function(t){var e,r=t.frag,i=t.part,n=t.payload,a=this.levels;if(a){var s=a[r.level],o=s.details;if(!o)return this.warn("Dropping fragment "+r.sn+" of level "+r.level+" after level details were reset"),void this.fragmentTracker.removeFragment(r);var l=s.videoCodec,u=o.PTSKnown||!o.live,h=null==(e=r.initSegment)?void 0:e.data,d=this._getAudioCodec(s),c=this.transmuxer=this.transmuxer||new on(this.hls,he,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),f=i?i.index:-1,g=-1!==f,v=new kr(r.level,r.sn,r.stats.chunkCount,n.byteLength,f,g),m=this.initPTS[r.cc];c.push(n,h,d,l,r,i,o.totalduration,u,v,m)}else this.warn("Levels were reset while fragment load was in progress. Fragment "+r.sn+" of level "+r.level+" will not be buffered")},r.onAudioTrackSwitching=function(t,e){var r=this.altAudio;if(!e.url){if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;var i=this.fragCurrent;i&&(this.log("Switching to main audio track, cancel main fragment load"),i.abortRequests(),this.fragmentTracker.removeFragment(i)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();var n=this.hls;r&&(n.trigger(T.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),n.trigger(T.AUDIO_TRACK_SWITCHED,e)}},r.onAudioTrackSwitched=function(t,e){var r=e.id,i=!!this.hls.audioTracks[r].url;if(i){var n=this.videoBuffer;n&&this.mediaBuffer!==n&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=n)}this.altAudio=i,this.tick()},r.onBufferCreated=function(t,e){var r,i,n=e.tracks,a=!1;for(var s in n){var o=n[s];if("main"===o.id){if(i=s,r=o,"video"===s){var l=n[s];l&&(this.videoBuffer=l.buffer)}}else a=!0}a&&r?(this.log("Alternate track found, use "+i+".buffered to schedule main fragment loading"),this.mediaBuffer=r.buffer):this.mediaBuffer=this.media},r.onFragBuffered=function(t,e){var r=e.frag,i=e.part;if(!r||r.type===he){if(this.fragContextChanged(r))return this.warn("Fragment "+r.sn+(i?" p: "+i.index:"")+" of level "+r.level+" finished buffering, but was aborted. state: "+this.state),void(this.state===Vr&&(this.state=Nr));var n=i?i.stats:r.stats;this.fragLastKbps=Math.round(8*n.total/(n.buffering.end-n.loading.first)),"initSegment"!==r.sn&&(this.fragPrevious=r),this.fragBufferedComplete(r,i)}},r.onError=function(t,e){var r;if(e.fatal)this.state=Wr;else switch(e.details){case S.FRAG_GAP:case S.FRAG_PARSING_ERROR:case S.FRAG_DECRYPT_ERROR:case S.FRAG_LOAD_ERROR:case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_ERROR:case S.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(he,e);break;case S.LEVEL_LOAD_ERROR:case S.LEVEL_LOAD_TIMEOUT:case S.LEVEL_PARSING_ERROR:e.levelRetry||this.state!==qr||(null==(r=e.context)?void 0:r.type)!==oe||(this.state=Nr);break;case S.BUFFER_FULL_ERROR:if(!e.parent||"main"!==e.parent)return;this.reduceLengthAndFlushBuffer(e)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case S.INTERNAL_EXCEPTION:this.recoverWorkerError(e)}},r.checkBuffer=function(){var t=this.media,e=this.gapController;if(t&&e&&t.readyState){if(this.loadedmetadata||!Ar.getBuffered(t).length){var r=this.state!==Nr?this.fragCurrent:null;e.poll(this.lastCurrentTime,r)}this.lastCurrentTime=t.currentTime}},r.onFragLoadEmergencyAborted=function(){this.state=Nr,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()},r.onBufferFlushed=function(t,e){var r=e.type;if(r!==F||this.audioOnly&&!this.altAudio){var i=(r===O?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(i,r,he)}},r.onLevelsUpdated=function(t,e){this.levels=e.levels},r.swapAudioCodec=function(){this.audioCodecSwap=!this.audioCodecSwap},r.seekToStartPos=function(){var t=this.media;if(t){var e=t.currentTime,r=this.startPosition;if(r>=0&&e0&&(n1&&!1===t.seeking){var r=t.currentTime;if(Ar.isBuffered(t,r)?e=this.getAppendedFrag(r):Ar.isBuffered(t,r+.1)&&(e=this.getAppendedFrag(r+.1)),e){this.backtrackFragment=null;var i=this.fragPlaying,n=e.level;i&&e.sn===i.sn&&i.level===n&&e.urlId===i.urlId||(this.fragPlaying=e,this.hls.trigger(T.FRAG_CHANGED,{frag:e}),i&&i.level===n||this.hls.trigger(T.LEVEL_SWITCHED,{level:n}))}}},a(e,[{key:"nextLevel",get:function(){var t=this.nextBufferedFrag;return t?t.level:-1}},{key:"currentFrag",get:function(){var t=this.media;return t?this.fragPlaying||this.getAppendedFrag(t.currentTime):null}},{key:"currentProgramDateTime",get:function(){var t=this.media;if(t){var e=t.currentTime,r=this.currentFrag;if(r&&y(e)&&y(r.programDateTime)){var i=r.programDateTime+1e3*(e-r.start);return new Date(i)}}return null}},{key:"currentLevel",get:function(){var t=this.currentFrag;return t?t.level:-1}},{key:"nextBufferedFrag",get:function(){var t=this.currentFrag;return t?this.followingBufferedFrag(t):null}},{key:"forceStartLoad",get:function(){return this._forceStartLoad}}]),e}(Xr),hn=function(){function t(t,e,r){void 0===e&&(e=0),void 0===r&&(r=0),this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=t,this.alpha_=t?Math.exp(Math.log(.5)/t):0,this.estimate_=e,this.totalWeight_=r}var e=t.prototype;return e.sample=function(t,e){var r=Math.pow(this.alpha_,t);this.estimate_=e*(1-r)+r*this.estimate_,this.totalWeight_+=t},e.getTotalWeight=function(){return this.totalWeight_},e.getEstimate=function(){if(this.alpha_){var t=1-Math.pow(this.alpha_,this.totalWeight_);if(t)return this.estimate_/t}return this.estimate_},t}(),dn=function(){function t(t,e,r,i){void 0===i&&(i=100),this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultTTFB_=void 0,this.ttfb_=void 0,this.defaultEstimate_=r,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new hn(t),this.fast_=new hn(e),this.defaultTTFB_=i,this.ttfb_=new hn(t)}var e=t.prototype;return e.update=function(t,e){var r=this.slow_,i=this.fast_,n=this.ttfb_;r.halfLife!==t&&(this.slow_=new hn(t,r.getEstimate(),r.getTotalWeight())),i.halfLife!==e&&(this.fast_=new hn(e,i.getEstimate(),i.getTotalWeight())),n.halfLife!==t&&(this.ttfb_=new hn(t,n.getEstimate(),n.getTotalWeight()))},e.sample=function(t,e){var r=(t=Math.max(t,this.minDelayMs_))/1e3,i=8*e/r;this.fast_.sample(r,i),this.slow_.sample(r,i)},e.sampleTTFB=function(t){var e=t/1e3,r=Math.sqrt(2)*Math.exp(-Math.pow(e,2)/2);this.ttfb_.sample(r,Math.max(t,5))},e.canEstimate=function(){return this.fast_.getTotalWeight()>=this.minWeight_},e.getEstimate=function(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_},e.getEstimateTTFB=function(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_},e.destroy=function(){},t}(),cn=function(){function t(t){this.hls=void 0,this.lastLevelLoadSec=0,this.lastLoadedFragLevel=0,this._nextAutoLevel=-1,this.timer=-1,this.onCheck=this._abandonRulesCheck.bind(this),this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this.hls=t;var e=t.config;this.bwEstimator=new dn(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate),this.registerListeners()}var e=t.prototype;return e.registerListeners=function(){var t=this.hls;t.on(T.FRAG_LOADING,this.onFragLoading,this),t.on(T.FRAG_LOADED,this.onFragLoaded,this),t.on(T.FRAG_BUFFERED,this.onFragBuffered,this),t.on(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.on(T.LEVEL_LOADED,this.onLevelLoaded,this)},e.unregisterListeners=function(){var t=this.hls;t.off(T.FRAG_LOADING,this.onFragLoading,this),t.off(T.FRAG_LOADED,this.onFragLoaded,this),t.off(T.FRAG_BUFFERED,this.onFragBuffered,this),t.off(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.off(T.LEVEL_LOADED,this.onLevelLoaded,this)},e.destroy=function(){this.unregisterListeners(),this.clearTimer(),this.hls=this.onCheck=null,this.fragCurrent=this.partCurrent=null},e.onFragLoading=function(t,e){var r,i=e.frag;this.ignoreFragment(i)||(this.fragCurrent=i,this.partCurrent=null!=(r=e.part)?r:null,this.clearTimer(),this.timer=self.setInterval(this.onCheck,100))},e.onLevelSwitching=function(t,e){this.clearTimer()},e.getTimeToLoadFrag=function(t,e,r,i){return t+r/e+(i?this.lastLevelLoadSec:0)},e.onLevelLoaded=function(t,e){var r=this.hls.config,i=e.stats,n=i.total,a=i.bwEstimate;y(n)&&y(a)&&(this.lastLevelLoadSec=8*n/a),e.details.live?this.bwEstimator.update(r.abrEwmaSlowLive,r.abrEwmaFastLive):this.bwEstimator.update(r.abrEwmaSlowVoD,r.abrEwmaFastVoD)},e._abandonRulesCheck=function(){var t=this.fragCurrent,e=this.partCurrent,r=this.hls,i=r.autoLevelEnabled,n=r.media;if(t&&n){var a=performance.now(),s=e?e.stats:t.stats,o=e?e.duration:t.duration,l=a-s.loading.start;if(s.aborted||s.loaded&&s.loaded===s.total||0===t.level)return this.clearTimer(),void(this._nextAutoLevel=-1);if(i&&!n.paused&&n.playbackRate&&n.readyState){var u=r.mainForwardBufferInfo;if(null!==u){var h=this.bwEstimator.getEstimateTTFB(),d=Math.abs(n.playbackRate);if(!(l<=Math.max(h,o/(2*d)*1e3))){var c=u.len/d;if(!(c>=2*o/d)){var f=s.loading.first?s.loading.first-s.loading.start:-1,g=s.loaded&&f>-1,v=this.bwEstimator.getEstimate(),m=r.levels,p=r.minAutoLevel,E=m[t.level],S=s.total||Math.max(s.loaded,Math.round(o*E.maxBitrate/8)),L=l-f;L<1&&g&&(L=Math.min(l,8*s.loaded/v));var R=g?1e3*s.loaded/L:0,A=R?(S-s.loaded)/R:8*S/v+h/1e3;if(!(A<=c)){var k,b=R?8*R:v,I=Number.POSITIVE_INFINITY;for(k=t.level-1;k>p;k--){var w=m[k].maxBitrate;if((I=this.getTimeToLoadFrag(h/1e3,b,o*w,!m[k].details))=A||I>10*o||(r.nextLoadLevel=k,g?this.bwEstimator.sample(l-Math.min(h,f),s.loaded):this.bwEstimator.sampleTTFB(l),this.clearTimer(),D.warn("[abr] Fragment "+t.sn+(e?" part "+e.index:"")+" of level "+t.level+" is loading too slowly;\n Time to underbuffer: "+c.toFixed(3)+" s\n Estimated load time for current fragment: "+A.toFixed(3)+" s\n Estimated load time for down switch fragment: "+I.toFixed(3)+" s\n TTFB estimate: "+f+"\n Current BW estimate: "+(y(v)?(v/1024).toFixed(3):"Unknown")+" Kb/s\n New BW estimate: "+(this.bwEstimator.getEstimate()/1024).toFixed(3)+" Kb/s\n Aborting and switching to level "+k),t.loader&&(this.fragCurrent=this.partCurrent=null,t.abortRequests()),r.trigger(T.FRAG_LOAD_EMERGENCY_ABORTED,{frag:t,part:e,stats:s}))}}}}}}},e.onFragLoaded=function(t,e){var r=e.frag,i=e.part,n=i?i.stats:r.stats;if(r.type===he&&this.bwEstimator.sampleTTFB(n.loading.first-n.loading.start),!this.ignoreFragment(r)){if(this.clearTimer(),this.lastLoadedFragLevel=r.level,this._nextAutoLevel=-1,this.hls.config.abrMaxWithRealBitrate){var a=i?i.duration:r.duration,s=this.hls.levels[r.level],o=(s.loaded?s.loaded.bytes:0)+n.loaded,l=(s.loaded?s.loaded.duration:0)+a;s.loaded={bytes:o,duration:l},s.realBitrate=Math.round(8*o/l)}if(r.bitrateTest){var u={stats:n,frag:r,part:i,id:r.type};this.onFragBuffered(T.FRAG_BUFFERED,u),r.bitrateTest=!1}}},e.onFragBuffered=function(t,e){var r=e.frag,i=e.part,n=null!=i&&i.stats.loaded?i.stats:r.stats;if(!n.aborted&&!this.ignoreFragment(r)){var a=n.parsing.end-n.loading.start-Math.min(n.loading.first-n.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(a,n.loaded),n.bwEstimate=this.bwEstimator.getEstimate(),r.bitrateTest?this.bitrateTestDelay=a/1e3:this.bitrateTestDelay=0}},e.ignoreFragment=function(t){return t.type!==he||"initSegment"===t.sn},e.clearTimer=function(){self.clearInterval(this.timer)},e.getNextABRAutoLevel=function(){var t=this.fragCurrent,e=this.partCurrent,r=this.hls,i=r.maxAutoLevel,n=r.config,a=r.minAutoLevel,s=r.media,o=e?e.duration:t?t.duration:0,l=s&&0!==s.playbackRate?Math.abs(s.playbackRate):1,u=this.bwEstimator?this.bwEstimator.getEstimate():n.abrEwmaDefaultEstimate,h=r.mainForwardBufferInfo,d=(h?h.len:0)/l,c=this.findBestLevel(u,a,i,d,n.abrBandWidthFactor,n.abrBandWidthUpFactor);if(c>=0)return c;D.trace("[abr] "+(d?"rebuffering expected":"buffer is empty")+", finding optimal quality level");var f=o?Math.min(o,n.maxStarvationDelay):n.maxStarvationDelay,g=n.abrBandWidthFactor,v=n.abrBandWidthUpFactor;if(!d){var m=this.bitrateTestDelay;m&&(f=(o?Math.min(o,n.maxLoadingDelay):n.maxLoadingDelay)-m,D.trace("[abr] bitrate test took "+Math.round(1e3*m)+"ms, set first fragment max fetchDuration to "+Math.round(1e3*f)+" ms"),g=v=1)}return c=this.findBestLevel(u,a,i,d+f,g,v),Math.max(c,0)},e.findBestLevel=function(t,e,r,i,n,a){for(var s,o=this.fragCurrent,l=this.partCurrent,u=this.lastLoadedFragLevel,h=this.hls.levels,d=h[u],c=!(null==d||null==(s=d.details)||!s.live),f=null==d?void 0:d.codecSet,g=l?l.duration:o?o.duration:0,v=this.bwEstimator.getEstimateTTFB()/1e3,m=e,p=-1,T=r;T>=e;T--){var E=h[T];if(!E||f&&E.codecSet!==f)E&&(m=Math.min(T,m),p=Math.max(T,p));else{-1!==p&&D.trace("[abr] Skipped level(s) "+m+"-"+p+' with CODECS:"'+h[p].attrs.CODECS+'"; not compatible with "'+d.attrs.CODECS+'"');var S=E.details,L=(l?null==S?void 0:S.partTarget:null==S?void 0:S.averagetargetduration)||g,R=void 0;R=T<=u?n*t:a*t;var A=h[T].maxBitrate,k=this.getTimeToLoadFrag(v,R,A*L,void 0===S);if(D.trace("[abr] level:"+T+" adjustedbw-bitrate:"+Math.round(R-A)+" avgDuration:"+L.toFixed(1)+" maxFetchDuration:"+i.toFixed(1)+" fetchDuration:"+k.toFixed(1)),R>A&&(0===k||!y(k)||c&&!this.bitrateTestDelay||kMath.max(t,r)&&i[t].loadError<=i[r].loadError)return t}return-1!==t&&(r=Math.min(t,r)),r},set:function(t){this._nextAutoLevel=t}}]),t}(),fn=function(){function t(){this.chunks=[],this.dataLength=0}var e=t.prototype;return e.push=function(t){this.chunks.push(t),this.dataLength+=t.length},e.flush=function(){var t,e=this.chunks,r=this.dataLength;return e.length?(t=1===e.length?e[0]:function(t,e){for(var r=new Uint8Array(e),i=0,n=0;n0&&-1===t?(this.log("Override startPosition with lastCurrentTime @"+e.toFixed(3)),t=e,this.state=Nr):(this.loadedmetadata=!1,this.state=Kr),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()},r.doTick=function(){switch(this.state){case Nr:this.doTickIdle();break;case Kr:var e,r=this.levels,i=this.trackId,n=null==r||null==(e=r[i])?void 0:e.details;if(n){if(this.waitForCdnTuneIn(n))break;this.state=jr}break;case Gr:var a,s=performance.now(),o=this.retryDate;(!o||s>=o||null!=(a=this.media)&&a.seeking)&&(this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded(this.trackId),this.state=Nr);break;case jr:var l=this.waitingData;if(l){var u=l.frag,h=l.part,d=l.cache,c=l.complete;if(void 0!==this.initPTS[u.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=Br;var f={frag:u,part:h,payload:d.flush(),networkDetails:null};this._handleFragmentLoadProgress(f),c&&t.prototype._handleFragmentLoadComplete.call(this,f)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log("Waiting fragment cc ("+u.cc+") cancelled because video is at cc "+this.videoTrackCC),this.clearWaitingFragment();else{var g=this.getLoadPosition(),v=Ar.bufferInfo(this.mediaBuffer,g,this.config.maxBufferHole);Xe(v.end,this.config.maxFragLookUpTolerance,u)<0&&(this.log("Waiting fragment cc ("+u.cc+") @ "+u.start+" cancelled because another fragment at "+v.end+" is needed"),this.clearWaitingFragment())}}else this.state=Nr}this.onTickEnd()},r.clearWaitingFragment=function(){var t=this.waitingData;t&&(this.fragmentTracker.removeFragment(t.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=Nr)},r.resetLoadingState=function(){this.clearWaitingFragment(),t.prototype.resetLoadingState.call(this)},r.onTickEnd=function(){var t=this.media;null!=t&&t.readyState&&(this.lastCurrentTime=t.currentTime)},r.doTickIdle=function(){var t=this.hls,e=this.levels,r=this.media,i=this.trackId,n=t.config;if(null!=e&&e[i]&&(r||!this.startFragRequested&&n.startFragPrefetch)){var a=e[i],s=a.details;if(!s||s.live&&this.levelLastLoaded!==i||this.waitForCdnTuneIn(s))this.state=Kr;else{var o=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&o&&(this.bufferFlushed=!1,this.afterBufferFlushed(o,F,de));var l=this.getFwdBufferInfo(o,de);if(null!==l){var u=this.bufferedTrack,h=this.switchingTrack;if(!h&&this._streamEnded(l,s))return t.trigger(T.BUFFER_EOS,{type:"audio"}),void(this.state=Yr);var d=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,he),c=l.len,f=this.getMaxBufferLength(null==d?void 0:d.len);if(!(c>=f)||h){var g=s.fragments[0].start,v=l.end;if(h&&r){var m=this.getLoadPosition();u&&h.attrs!==u.attrs&&(v=m),s.PTSKnown&&mg||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),r.currentTime=g+.05)}var p=this.getNextFragment(v,s),y=!1;if(p&&this.isLoopLoading(p,v)&&(y=!!p.gap,p=this.getNextFragmentLoopLoading(p,s,l,he,f)),p){var E=d&&p.start>d.end+s.targetduration;if(E||(null==d||!d.len)&&l.len){var S=this.fragmentTracker.getBufferedFrag(p.start,he);if(null===S)return;if(y||(y=!!S.gap||!!E&&0===d.len),E&&!y||y&&l.nextStart&&l.nextStart=e.length)this.warn("Invalid id passed to audio-track controller");else{this.clearTimer();var r=this.currentTrack;e[this.trackId];var n=e[t],a=n.groupId,s=n.name;if(this.log("Switching to audio-track "+t+' "'+s+'" lang:'+n.lang+" group:"+a),this.trackId=t,this.currentTrack=n,this.selectDefaultTrack=!1,this.hls.trigger(T.AUDIO_TRACK_SWITCHING,i({},n)),!n.details||n.details.live){var o=this.switchParams(n.url,null==r?void 0:r.details);this.loadPlaylist(o)}}},r.selectInitialTrack=function(){var t=this.tracksInGroup,e=this.findTrackId(this.currentTrack)|this.findTrackId(null);if(-1!==e)this.setAudioTrack(e);else{var r=new Error("No track found for running audio group-ID: "+this.groupId+" track count: "+t.length);this.warn(r.message),this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:r})}},r.findTrackId=function(t){for(var e=this.tracksInGroup,r=0;r=n[o].start&&s<=n[o].end){a=n[o];break}var l=r.start+r.duration;a?a.end=l:(a={start:s,end:l},n.push(a)),this.fragmentTracker.fragBuffered(r)}}},r.onBufferFlushing=function(t,e){var r=e.startOffset,i=e.endOffset;if(0===r&&i!==Number.POSITIVE_INFINITY){var n=this.currentTrackId,a=this.levels;if(!a.length||!a[n]||!a[n].details)return;var s=i-a[n].details.targetduration;if(s<=0)return;e.endOffsetSubtitles=Math.max(0,s),this.tracksBuffered.forEach((function(t){for(var e=0;e=s.length||n!==a)&&o){this.mediaBuffer=this.mediaBufferTimeRanges;var l=0;if(i.live||null!=(r=o.details)&&r.live){var u=this.mainDetails;if(i.deltaUpdateFailed||!u)return;var h=u.fragments[0];o.details?0===(l=this.alignPlaylists(i,o.details))&&h&&Ue(i,l=h.start):i.hasProgramDateTime&&u.hasProgramDateTime?(Cr(i,u),l=i.fragments[0].start):h&&Ue(i,l=h.start)}o.details=i,this.levelLastLoaded=n,this.startFragRequested||!this.mainDetails&&i.live||this.setStartPosition(o.details,l),this.tick(),i.live&&!this.fragCurrent&&this.media&&this.state===Nr&&(qe(null,i.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),o.details=void 0))}}},r._handleFragmentLoadComplete=function(t){var e=this,r=t.frag,i=t.payload,n=r.decryptdata,a=this.hls;if(!this.fragContextChanged(r)&&i&&i.byteLength>0&&n&&n.key&&n.iv&&"AES-128"===n.method){var s=performance.now();this.decrypter.decrypt(new Uint8Array(i),n.key.buffer,n.iv.buffer).catch((function(t){throw a.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_DECRYPT_ERROR,fatal:!1,error:t,reason:t.message,frag:r}),t})).then((function(t){var e=performance.now();a.trigger(T.FRAG_DECRYPTED,{frag:r,payload:t,stats:{tstart:s,tdecrypt:e}})})).catch((function(t){e.warn(t.name+": "+t.message),e.state=Nr}))}},r.doTick=function(){if(this.media){if(this.state===Nr){var t=this.currentTrackId,e=this.levels,r=e[t];if(!e.length||!r||!r.details)return;var i=r.details,n=i.targetduration,a=this.config,s=this.getLoadPosition(),o=Ar.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],s-n,a.maxBufferHole),l=o.end,u=o.len,h=this.getFwdBufferInfo(this.media,he);if(u>this.getMaxBufferLength(null==h?void 0:h.len)+n)return;var d=i.fragments,c=d.length,f=i.edge,g=null,v=this.fragPrevious;if(l>>=0)>i-1)throw new DOMException("Failed to execute '"+e+"' on 'TimeRanges': The index provided ("+r+") is greater than the maximum bound ("+i+")");return t[r][e]};this.buffered={get length(){return t.length},end:function(r){return e("end",r,t.length)},start:function(r){return e("start",r,t.length)}}},En=function(t){function e(e){var r;return(r=t.call(this,e,"[subtitle-track-controller]")||this).media=null,r.tracks=[],r.groupId=null,r.tracksInGroup=[],r.trackId=-1,r.selectDefaultTrack=!0,r.queuedDefaultTrack=-1,r.trackChangeListener=function(){return r.onTextTracksChanged()},r.asyncPollTrackChange=function(){return r.pollTrackChange(0)},r.useTextTrackPolling=!1,r.subtitlePollingInterval=-1,r._subtitleDisplay=!0,r.registerListeners(),r}l(e,t);var r=e.prototype;return r.destroy=function(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.trackChangeListener=this.asyncPollTrackChange=null,t.prototype.destroy.call(this)},r.registerListeners=function(){var t=this.hls;t.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.LEVEL_LOADING,this.onLevelLoading,this),t.on(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.on(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.on(T.ERROR,this.onError,this)},r.unregisterListeners=function(){var t=this.hls;t.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.LEVEL_LOADING,this.onLevelLoading,this),t.off(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.off(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.off(T.ERROR,this.onError,this)},r.onMediaAttached=function(t,e){this.media=e.media,this.media&&(this.queuedDefaultTrack>-1&&(this.subtitleTrack=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):this.media.textTracks.addEventListener("change",this.asyncPollTrackChange))},r.pollTrackChange=function(t){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.trackChangeListener,t)},r.onMediaDetaching=function(){this.media&&(self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId),Sn(this.media.textTracks).forEach((function(t){ye(t)})),this.subtitleTrack=-1,this.media=null)},r.onManifestLoading=function(){this.tracks=[],this.groupId=null,this.tracksInGroup=[],this.trackId=-1,this.selectDefaultTrack=!0},r.onManifestParsed=function(t,e){this.tracks=e.subtitleTracks},r.onSubtitleTrackLoaded=function(t,e){var r=e.id,i=e.details,n=this.trackId,a=this.tracksInGroup[n];if(a){var s=a.details;a.details=e.details,this.log("subtitle track "+r+" loaded ["+i.startSN+"-"+i.endSN+"]"),r===this.trackId&&this.playlistLoaded(r,e,s)}else this.warn("Invalid subtitle track id "+r)},r.onLevelLoading=function(t,e){this.switchLevel(e.level)},r.onLevelSwitching=function(t,e){this.switchLevel(e.level)},r.switchLevel=function(t){var e=this.hls.levels[t];if(null!=e&&e.textGroupIds){var r=e.textGroupIds[e.urlId],i=this.tracksInGroup?this.tracksInGroup[this.trackId]:void 0;if(this.groupId!==r){var n=this.tracks.filter((function(t){return!r||t.groupId===r}));this.tracksInGroup=n;var a=this.findTrackId(null==i?void 0:i.name)||this.findTrackId();this.groupId=r||null;var s={subtitleTracks:n};this.log("Updating subtitle tracks, "+n.length+' track(s) found in "'+r+'" group-id'),this.hls.trigger(T.SUBTITLE_TRACKS_UPDATED,s),-1!==a&&this.setSubtitleTrack(a,i)}else this.shouldReloadPlaylist(i)&&this.setSubtitleTrack(this.trackId,i)}},r.findTrackId=function(t){for(var e=this.tracksInGroup,r=0;r=i.length)){this.clearTimer();var n=i[t];if(this.log("Switching to subtitle-track "+t+(n?' "'+n.name+'" lang:'+n.lang+" group:"+n.groupId:"")),this.trackId=t,n){var a=n.id,s=n.groupId,o=void 0===s?"":s,l=n.name,u=n.type,h=n.url;this.hls.trigger(T.SUBTITLE_TRACK_SWITCH,{id:a,groupId:o,name:l,type:u,url:h});var d=this.switchParams(n.url,null==e?void 0:e.details);this.loadPlaylist(d)}else this.hls.trigger(T.SUBTITLE_TRACK_SWITCH,{id:t})}}else this.queuedDefaultTrack=t},r.onTextTracksChanged=function(){if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),this.media&&this.hls.config.renderTextTracksNatively){for(var t=-1,e=Sn(this.media.textTracks),r=0;r-1&&this.toggleTrackModes(this.trackId)}},{key:"subtitleTracks",get:function(){return this.tracksInGroup}},{key:"subtitleTrack",get:function(){return this.trackId},set:function(t){this.selectDefaultTrack=!1;var e=this.tracksInGroup?this.tracksInGroup[this.trackId]:void 0;this.setSubtitleTrack(t,e)}}]),e}(ar);function Sn(t){for(var e=[],r=0;r "+t.src+")")},this.hls=t,this._initSourceBuffer(),this.registerListeners()}var e=t.prototype;return e.hasSourceTypes=function(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0},e.destroy=function(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null},e.registerListeners=function(){var t=this.hls;t.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.BUFFER_RESET,this.onBufferReset,this),t.on(T.BUFFER_APPENDING,this.onBufferAppending,this),t.on(T.BUFFER_CODECS,this.onBufferCodecs,this),t.on(T.BUFFER_EOS,this.onBufferEos,this),t.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.on(T.LEVEL_UPDATED,this.onLevelUpdated,this),t.on(T.FRAG_PARSED,this.onFragParsed,this),t.on(T.FRAG_CHANGED,this.onFragChanged,this)},e.unregisterListeners=function(){var t=this.hls;t.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.BUFFER_RESET,this.onBufferReset,this),t.off(T.BUFFER_APPENDING,this.onBufferAppending,this),t.off(T.BUFFER_CODECS,this.onBufferCodecs,this),t.off(T.BUFFER_EOS,this.onBufferEos,this),t.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.off(T.LEVEL_UPDATED,this.onLevelUpdated,this),t.off(T.FRAG_PARSED,this.onFragParsed,this),t.off(T.FRAG_CHANGED,this.onFragChanged,this)},e._initSourceBuffer=function(){this.sourceBuffer={},this.operationQueue=new Ln(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]},this.lastMpegAudioChunk=null},e.onManifestParsed=function(t,e){var r=2;(e.audio&&!e.video||!e.altAudio)&&(r=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=r,this.details=null,D.log(this.bufferCodecEventsExpected+" bufferCodec event(s) expected")},e.onMediaAttaching=function(t,e){var r=this.media=e.media;if(r&&Rn){var i=this.mediaSource=new Rn;i.addEventListener("sourceopen",this._onMediaSourceOpen),i.addEventListener("sourceended",this._onMediaSourceEnded),i.addEventListener("sourceclose",this._onMediaSourceClose),r.src=self.URL.createObjectURL(i),this._objectUrl=r.src,r.addEventListener("emptied",this._onMediaEmptied)}},e.onMediaDetaching=function(){var t=this.media,e=this.mediaSource,r=this._objectUrl;if(e){if(D.log("[buffer-controller]: media source detaching"),"open"===e.readyState)try{e.endOfStream()}catch(t){D.warn("[buffer-controller]: onMediaDetaching: "+t.message+" while calling endOfStream")}this.onBufferReset(),e.removeEventListener("sourceopen",this._onMediaSourceOpen),e.removeEventListener("sourceended",this._onMediaSourceEnded),e.removeEventListener("sourceclose",this._onMediaSourceClose),t&&(t.removeEventListener("emptied",this._onMediaEmptied),r&&self.URL.revokeObjectURL(r),t.src===r?(t.removeAttribute("src"),t.load()):D.warn("[buffer-controller]: media.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(T.MEDIA_DETACHED,void 0)},e.onBufferReset=function(){var t=this;this.getSourceBufferTypes().forEach((function(e){var r=t.sourceBuffer[e];try{r&&(t.removeBufferListeners(e),t.mediaSource&&t.mediaSource.removeSourceBuffer(r),t.sourceBuffer[e]=void 0)}catch(t){D.warn("[buffer-controller]: Failed to reset the "+e+" buffer",t)}})),this._initSourceBuffer()},e.onBufferCodecs=function(t,e){var r=this,i=this.getSourceBufferTypes().length;Object.keys(e).forEach((function(t){if(i){var n=r.tracks[t];if(n&&"function"==typeof n.buffer.changeType){var a=e[t],s=a.id,o=a.codec,l=a.levelCodec,u=a.container,h=a.metadata,d=(n.levelCodec||n.codec).replace(An,"$1"),c=(l||o).replace(An,"$1");if(d!==c){var f=u+";codecs="+(l||o);r.appendChangeType(t,f),D.log("[buffer-controller]: switching codec "+d+" to "+c),r.tracks[t]={buffer:n.buffer,codec:o,container:u,levelCodec:l,metadata:h,id:s}}}}else r.pendingTracks[t]=e[t]})),i||(this.bufferCodecEventsExpected=Math.max(this.bufferCodecEventsExpected-1,0),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks())},e.appendChangeType=function(t,e){var r=this,i=this.operationQueue,n={execute:function(){var n=r.sourceBuffer[t];n&&(D.log("[buffer-controller]: changing "+t+" sourceBuffer type to "+e),n.changeType(e)),i.shiftAndExecuteNext(t)},onStart:function(){},onComplete:function(){},onError:function(e){D.warn("[buffer-controller]: Failed to change "+t+" SourceBuffer type",e)}};i.append(n,t)},e.onBufferAppending=function(t,e){var r=this,i=this.hls,n=this.operationQueue,a=this.tracks,s=e.data,o=e.type,l=e.frag,u=e.part,h=e.chunkMeta,d=h.buffering[o],c=self.performance.now();d.start=c;var f=l.stats.buffering,g=u?u.stats.buffering:null;0===f.start&&(f.start=c),g&&0===g.start&&(g.start=c);var v=a.audio,m=!1;"audio"===o&&"audio/mpeg"===(null==v?void 0:v.container)&&(m=!this.lastMpegAudioChunk||1===h.id||this.lastMpegAudioChunk.sn!==h.sn,this.lastMpegAudioChunk=h);var p=l.start,y={execute:function(){if(d.executeStart=self.performance.now(),m){var t=r.sourceBuffer[o];if(t){var e=p-t.timestampOffset;Math.abs(e)>=.1&&(D.log("[buffer-controller]: Updating audio SourceBuffer timestampOffset to "+p+" (delta: "+e+") sn: "+l.sn+")"),t.timestampOffset=p)}}r.appendExecutor(s,o)},onStart:function(){},onComplete:function(){var t=self.performance.now();d.executeEnd=d.end=t,0===f.first&&(f.first=t),g&&0===g.first&&(g.first=t);var e=r.sourceBuffer,i={};for(var n in e)i[n]=Ar.getBuffered(e[n]);r.appendError=0,r.hls.trigger(T.BUFFER_APPENDED,{type:o,frag:l,part:u,chunkMeta:h,parent:l.type,timeRanges:i})},onError:function(t){D.error("[buffer-controller]: Error encountered while trying to append to the "+o+" SourceBuffer",t);var e={type:E.MEDIA_ERROR,parent:l.type,details:S.BUFFER_APPEND_ERROR,frag:l,part:u,chunkMeta:h,error:t,err:t,fatal:!1};t.code===DOMException.QUOTA_EXCEEDED_ERR?e.details=S.BUFFER_FULL_ERROR:(r.appendError++,e.details=S.BUFFER_APPEND_ERROR,r.appendError>i.config.appendErrorMaxRetry&&(D.error("[buffer-controller]: Failed "+i.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),e.fatal=!0)),i.trigger(T.ERROR,e)}};n.append(y,o)},e.onBufferFlushing=function(t,e){var r=this,i=this.operationQueue,n=function(t){return{execute:r.removeExecutor.bind(r,t,e.startOffset,e.endOffset),onStart:function(){},onComplete:function(){r.hls.trigger(T.BUFFER_FLUSHED,{type:t})},onError:function(e){D.warn("[buffer-controller]: Failed to remove from "+t+" SourceBuffer",e)}}};e.type?i.append(n(e.type),e.type):this.getSourceBufferTypes().forEach((function(t){i.append(n(t),t)}))},e.onFragParsed=function(t,e){var r=this,i=e.frag,n=e.part,a=[],s=n?n.elementaryStreams:i.elementaryStreams;s[M]?a.push("audiovideo"):(s[F]&&a.push("audio"),s[O]&&a.push("video")),0===a.length&&D.warn("Fragments must have at least one ElementaryStreamType set. type: "+i.type+" level: "+i.level+" sn: "+i.sn),this.blockBuffers((function(){var t=self.performance.now();i.stats.buffering.end=t,n&&(n.stats.buffering.end=t);var e=n?n.stats:i.stats;r.hls.trigger(T.FRAG_BUFFERED,{frag:i,part:n,stats:e,id:i.type})}),a)},e.onFragChanged=function(t,e){this.flushBackBuffer()},e.onBufferEos=function(t,e){var r=this;this.getSourceBufferTypes().reduce((function(t,i){var n=r.sourceBuffer[i];return!n||e.type&&e.type!==i||(n.ending=!0,n.ended||(n.ended=!0,D.log("[buffer-controller]: "+i+" sourceBuffer now EOS"))),t&&!(n&&!n.ended)}),!0)&&(D.log("[buffer-controller]: Queueing mediaSource.endOfStream()"),this.blockBuffers((function(){r.getSourceBufferTypes().forEach((function(t){var e=r.sourceBuffer[t];e&&(e.ending=!1)}));var t=r.mediaSource;t&&"open"===t.readyState?(D.log("[buffer-controller]: Calling mediaSource.endOfStream()"),t.endOfStream()):t&&D.info("[buffer-controller]: Could not call mediaSource.endOfStream(). mediaSource.readyState: "+t.readyState)})))},e.onLevelUpdated=function(t,e){var r=e.details;r.fragments.length&&(this.details=r,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())},e.flushBackBuffer=function(){var t=this.hls,e=this.details,r=this.media,i=this.sourceBuffer;if(r&&null!==e){var n=this.getSourceBufferTypes();if(n.length){var a=e.live&&null!==t.config.liveBackBufferLength?t.config.liveBackBufferLength:t.config.backBufferLength;if(y(a)&&!(a<0)){var s=r.currentTime,o=e.levelTargetDuration,l=Math.max(a,o),u=Math.floor(s/o)*o-l;n.forEach((function(r){var n=i[r];if(n){var a=Ar.getBuffered(n);if(a.length>0&&u>a.start(0)){if(t.trigger(T.BACK_BUFFER_REACHED,{bufferEnd:u}),e.live)t.trigger(T.LIVE_BACK_BUFFER_REACHED,{bufferEnd:u});else if(n.ended&&a.end(a.length-1)-s<2*o)return void D.info("[buffer-controller]: Cannot flush "+r+" back buffer while SourceBuffer is in ended state");t.trigger(T.BUFFER_FLUSHING,{startOffset:0,endOffset:u,type:r})}}}))}}}},e.updateMediaElementDuration=function(){if(this.details&&this.media&&this.mediaSource&&"open"===this.mediaSource.readyState){var t=this.details,e=this.hls,r=this.media,i=this.mediaSource,n=t.fragments[0].start+t.totalduration,a=r.duration,s=y(i.duration)?i.duration:0;t.live&&e.config.liveDurationInfinity?(D.log("[buffer-controller]: Media Source duration is set to Infinity"),i.duration=1/0,this.updateSeekableRange(t)):(n>s&&n>a||!y(a))&&(D.log("[buffer-controller]: Updating Media Source duration to "+n.toFixed(3)),i.duration=n)}},e.updateSeekableRange=function(t){var e=this.mediaSource,r=t.fragments;if(r.length&&t.live&&null!=e&&e.setLiveSeekableRange){var i=Math.max(0,r[0].start),n=Math.max(i,i+t.totalduration);e.setLiveSeekableRange(i,n)}},e.checkPendingTracks=function(){var t=this.bufferCodecEventsExpected,e=this.operationQueue,r=this.pendingTracks,i=Object.keys(r).length;if(i&&!t||2===i){this.createSourceBuffers(r),this.pendingTracks={};var n=this.getSourceBufferTypes();if(n.length)this.hls.trigger(T.BUFFER_CREATED,{tracks:this.tracks}),n.forEach((function(t){e.executeNext(t)}));else{var a=new Error("could not create source buffer for media codec(s)");this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:a,reason:a.message})}}},e.createSourceBuffers=function(t){var e=this.sourceBuffer,r=this.mediaSource;if(!r)throw Error("createSourceBuffers called when mediaSource was null");for(var i in t)if(!e[i]){var n=t[i];if(!n)throw Error("source buffer exists for track "+i+", however track does not");var a=n.levelCodec||n.codec,s=n.container+";codecs="+a;D.log("[buffer-controller]: creating sourceBuffer("+s+")");try{var o=e[i]=r.addSourceBuffer(s),l=i;this.addBufferListener(l,"updatestart",this._onSBUpdateStart),this.addBufferListener(l,"updateend",this._onSBUpdateEnd),this.addBufferListener(l,"error",this._onSBUpdateError),this.tracks[i]={buffer:o,codec:a,container:n.container,levelCodec:n.levelCodec,metadata:n.metadata,id:n.id}}catch(t){D.error("[buffer-controller]: error while trying to add sourceBuffer: "+t.message),this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:t,mimeType:s})}}},e._onSBUpdateStart=function(t){this.operationQueue.current(t).onStart()},e._onSBUpdateEnd=function(t){var e=this.operationQueue;e.current(t).onComplete(),e.shiftAndExecuteNext(t)},e._onSBUpdateError=function(t,e){var r=new Error(t+" SourceBuffer error");D.error("[buffer-controller]: "+r,e),this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.BUFFER_APPENDING_ERROR,error:r,fatal:!1});var i=this.operationQueue.current(t);i&&i.onError(e)},e.removeExecutor=function(t,e,r){var i=this.media,n=this.mediaSource,a=this.operationQueue,s=this.sourceBuffer[t];if(!i||!n||!s)return D.warn("[buffer-controller]: Attempting to remove from the "+t+" SourceBuffer, but it does not exist"),void a.shiftAndExecuteNext(t);var o=y(i.duration)?i.duration:1/0,l=y(n.duration)?n.duration:1/0,u=Math.max(0,e),h=Math.min(r,o,l);h>u&&!s.ending?(s.ended=!1,D.log("[buffer-controller]: Removing ["+u+","+h+"] from the "+t+" SourceBuffer"),s.remove(u,h)):a.shiftAndExecuteNext(t)},e.appendExecutor=function(t,e){var r=this.operationQueue,i=this.sourceBuffer[e];if(!i)return D.warn("[buffer-controller]: Attempting to append to the "+e+" SourceBuffer, but it does not exist"),void r.shiftAndExecuteNext(e);i.ended=!1,i.appendBuffer(t)},e.blockBuffers=function(t,e){var r=this;if(void 0===e&&(e=this.getSourceBufferTypes()),!e.length)return D.log("[buffer-controller]: Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(t);var i=this.operationQueue,n=e.map((function(t){return i.appendBlocker(t)}));Promise.all(n).then((function(){t(),e.forEach((function(t){var e=r.sourceBuffer[t];null!=e&&e.updating||i.shiftAndExecuteNext(t)}))}))},e.getSourceBufferTypes=function(){return Object.keys(this.sourceBuffer)},e.addBufferListener=function(t,e,r){var i=this.sourceBuffer[t];if(i){var n=r.bind(this,t);this.listeners[t].push({event:e,listener:n}),i.addEventListener(e,n)}},e.removeBufferListeners=function(t){var e=this.sourceBuffer[t];e&&this.listeners[t].forEach((function(t){e.removeEventListener(t.event,t.listener)}))},t}(),bn={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},Dn=function(t){var e=t;return bn.hasOwnProperty(t)&&(e=bn[t]),String.fromCharCode(e)},In=15,wn=100,Cn={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},_n={17:2,18:4,21:6,22:8,23:10,19:13,20:15},Pn={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},xn={25:2,26:4,29:6,30:8,31:10,27:13,28:15},Fn=["white","green","blue","cyan","red","yellow","magenta","black","transparent"],On=function(){function t(){this.time=null,this.verboseLevel=0}return t.prototype.log=function(t,e){if(this.verboseLevel>=t){var r="function"==typeof e?e():e;D.log(this.time+" ["+t+"] "+r)}},t}(),Mn=function(t){for(var e=[],r=0;rwn&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=wn)},e.moveCursor=function(t){var e=this.pos+t;if(t>1)for(var r=this.pos+1;r=144&&this.backSpace();var r=Dn(t);this.pos>=wn?this.logger.log(0,(function(){return"Cannot insert "+t.toString(16)+" ("+r+") at position "+e.pos+". Skipping it!"})):(this.chars[this.pos].setChar(r,this.currPenState),this.moveCursor(1))},e.clearFromPos=function(t){var e;for(e=t;e0&&(r=t?"["+e.join(" | ")+"]":e.join("\n")),r},e.getTextAndFormat=function(){return this.rows},t}(),Kn=function(){function t(t,e,r){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=t,this.outputFilter=e,this.mode=null,this.verbose=0,this.displayedMemory=new Gn(r),this.nonDisplayedMemory=new Gn(r),this.lastOutputScreen=new Gn(r),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=r}var e=t.prototype;return e.reset=function(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null},e.getHandler=function(){return this.outputFilter},e.setHandler=function(t){this.outputFilter=t},e.setPAC=function(t){this.writeScreen.setPAC(t)},e.setBkgData=function(t){this.writeScreen.setBkgData(t)},e.setMode=function(t){t!==this.mode&&(this.mode=t,this.logger.log(2,(function(){return"MODE="+t})),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=t)},e.insertChars=function(t){for(var e=this,r=0;r=46,e.italics)e.foreground="white";else{var r=Math.floor(t/2)-16;e.foreground=["white","green","blue","cyan","red","yellow","magenta"][r]}this.logger.log(2,"MIDROW: "+JSON.stringify(e)),this.writeScreen.setPen(e)},e.outputDataUpdate=function(t){void 0===t&&(t=!1);var e=this.logger.time;null!==e&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,e,this.lastOutputScreen),t&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:e):this.cueStartTime=e,this.lastOutputScreen.copy(this.displayedMemory))},e.cueSplitAtTime=function(t){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,t,this.displayedMemory),this.cueStartTime=t))},t}(),Hn=function(){function t(t,e,r){this.channels=void 0,this.currentChannel=0,this.cmdHistory=void 0,this.logger=void 0;var i=new On;this.channels=[null,new Kn(t,e,i),new Kn(t+1,r,i)],this.cmdHistory={a:null,b:null},this.logger=i}var e=t.prototype;return e.getHandler=function(t){return this.channels[t].getHandler()},e.setHandler=function(t,e){this.channels[t].setHandler(e)},e.addData=function(t,e){var r,i,n,a=!1;this.logger.time=t;for(var s=0;s ("+Mn([i,n])+")"),(r=this.parseCmd(i,n))||(r=this.parseMidrow(i,n)),r||(r=this.parsePAC(i,n)),r||(r=this.parseBackgroundAttributes(i,n)),!r&&(a=this.parseChars(i,n))){var o=this.currentChannel;o&&o>0?this.channels[o].insertChars(a):this.logger.log(2,"No channel found yet. TEXT-MODE?")}r||a||this.logger.log(2,"Couldn't parse cleaned data "+Mn([i,n])+" orig: "+Mn([e[s],e[s+1]]))}},e.parseCmd=function(t,e){var r=this.cmdHistory;if(!((20===t||28===t||21===t||29===t)&&e>=32&&e<=47||(23===t||31===t)&&e>=33&&e<=35))return!1;if(Yn(t,e,r))return Vn(null,null,r),this.logger.log(3,"Repeated command ("+Mn([t,e])+") is dropped"),!0;var i=20===t||21===t||23===t?1:2,n=this.channels[i];return 20===t||21===t||28===t||29===t?32===e?n.ccRCL():33===e?n.ccBS():34===e?n.ccAOF():35===e?n.ccAON():36===e?n.ccDER():37===e?n.ccRU(2):38===e?n.ccRU(3):39===e?n.ccRU(4):40===e?n.ccFON():41===e?n.ccRDC():42===e?n.ccTR():43===e?n.ccRTD():44===e?n.ccEDM():45===e?n.ccCR():46===e?n.ccENM():47===e&&n.ccEOC():n.ccTO(e-32),Vn(t,e,r),this.currentChannel=i,!0},e.parseMidrow=function(t,e){var r=0;if((17===t||25===t)&&e>=32&&e<=47){if((r=17===t?1:2)!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;var i=this.channels[r];return!!i&&(i.ccMIDROW(e),this.logger.log(3,"MIDROW ("+Mn([t,e])+")"),!0)}return!1},e.parsePAC=function(t,e){var r,i=this.cmdHistory;if(!((t>=17&&t<=23||t>=25&&t<=31)&&e>=64&&e<=127||(16===t||24===t)&&e>=64&&e<=95))return!1;if(Yn(t,e,i))return Vn(null,null,i),!0;var n=t<=23?1:2;r=e>=64&&e<=95?1===n?Cn[t]:Pn[t]:1===n?_n[t]:xn[t];var a=this.channels[n];return!!a&&(a.setPAC(this.interpretPAC(r,e)),Vn(t,e,i),this.currentChannel=n,!0)},e.interpretPAC=function(t,e){var r,i={color:null,italics:!1,indent:null,underline:!1,row:t};return r=e>95?e-96:e-64,i.underline=1==(1&r),r<=13?i.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(r/2)]:r<=15?(i.italics=!0,i.color="white"):i.indent=4*Math.floor((r-16)/2),i},e.parseChars=function(t,e){var r,i,n=null,a=null;if(t>=25?(r=2,a=t-8):(r=1,a=t),a>=17&&a<=19?(i=17===a?e+80:18===a?e+112:e+144,this.logger.log(2,"Special char '"+Dn(i)+"' in channel "+r),n=[i]):t>=32&&t<=127&&(n=0===e?[t]:[t,e]),n){var s=Mn(n);this.logger.log(3,"Char codes = "+s.join(",")),Vn(t,e,this.cmdHistory)}return n},e.parseBackgroundAttributes=function(t,e){var r;if(!((16===t||24===t)&&e>=32&&e<=47||(23===t||31===t)&&e>=45&&e<=47))return!1;var i={};16===t||24===t?(r=Math.floor((e-32)/2),i.background=Fn[r],e%2==1&&(i.background=i.background+"_semi")):45===e?i.background="transparent":(i.foreground="black",47===e&&(i.underline=!0));var n=t<=23?1:2;return this.channels[n].setBkgData(i),Vn(t,e,this.cmdHistory),!0},e.reset=function(){for(var t=0;tt)&&(this.startTime=t),this.endTime=e,this.screen=r,this.timelineController.createCaptionsTrack(this.trackName)},e.reset=function(){this.cueRanges=[],this.startTime=null},t}(),jn=function(){if("undefined"!=typeof self&&self.VTTCue)return self.VTTCue;var t=["","lr","rl"],e=["start","middle","end","left","right"];function r(t,e){if("string"!=typeof e)return!1;if(!Array.isArray(t))return!1;var r=e.toLowerCase();return!!~t.indexOf(r)&&r}function i(t){return r(e,t)}function n(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),i=1;i100)throw new Error("Position must be between 0 and 100.");T=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"positionAlign",n({},l,{get:function(){return E},set:function(t){var e=i(t);if(!e)throw new SyntaxError("An invalid or illegal string was specified.");E=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"size",n({},l,{get:function(){return S},set:function(t){if(t<0||t>100)throw new Error("Size must be between 0 and 100.");S=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"align",n({},l,{get:function(){return L},set:function(t){var e=i(t);if(!e)throw new SyntaxError("An invalid or illegal string was specified.");L=e,this.hasBeenReset=!0}})),o.displayState=void 0}return a.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},a}(),qn=function(){function t(){}return t.prototype.decode=function(t,e){if(!t)return"";if("string"!=typeof t)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(t))},t}();function Xn(t){function e(t,e,r,i){return 3600*(0|t)+60*(0|e)+(0|r)+parseFloat(i||0)}var r=t.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return r?parseFloat(r[2])>59?e(r[2],r[3],0,r[4]):e(r[1],r[2],r[3],r[4]):null}var zn=function(){function t(){this.values=Object.create(null)}var e=t.prototype;return e.set=function(t,e){this.get(t)||""===e||(this.values[t]=e)},e.get=function(t,e,r){return r?this.has(t)?this.values[t]:e[r]:this.has(t)?this.values[t]:e},e.has=function(t){return t in this.values},e.alt=function(t,e,r){for(var i=0;i=0&&r<=100)return this.set(t,r),!0}return!1},t}();function Qn(t,e,r,i){var n=i?t.split(i):[t];for(var a in n)if("string"==typeof n[a]){var s=n[a].split(r);2===s.length&&e(s[0],s[1])}}var $n=new jn(0,0,""),Jn="middle"===$n.align?"middle":"center";function Zn(t,e,r){var i=t;function n(){var e=Xn(t);if(null===e)throw new Error("Malformed timestamp: "+i);return t=t.replace(/^[^\sa-zA-Z-]+/,""),e}function a(){t=t.replace(/^\s+/,"")}if(a(),e.startTime=n(),a(),"--\x3e"!==t.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+i);t=t.slice(3),a(),e.endTime=n(),a(),function(t,e){var i=new zn;Qn(t,(function(t,e){var n;switch(t){case"region":for(var a=r.length-1;a>=0;a--)if(r[a].id===e){i.set(t,r[a].region);break}break;case"vertical":i.alt(t,e,["rl","lr"]);break;case"line":n=e.split(","),i.integer(t,n[0]),i.percent(t,n[0])&&i.set("snapToLines",!1),i.alt(t,n[0],["auto"]),2===n.length&&i.alt("lineAlign",n[1],["start",Jn,"end"]);break;case"position":n=e.split(","),i.percent(t,n[0]),2===n.length&&i.alt("positionAlign",n[1],["start",Jn,"end","line-left","line-right","auto"]);break;case"size":i.percent(t,e);break;case"align":i.alt(t,e,["start",Jn,"end","left","right"])}}),/:/,/\s/),e.region=i.get("region",null),e.vertical=i.get("vertical","");var n=i.get("line","auto");"auto"===n&&-1===$n.line&&(n=-1),e.line=n,e.lineAlign=i.get("lineAlign","start"),e.snapToLines=i.get("snapToLines",!0),e.size=i.get("size",100),e.align=i.get("align",Jn);var a=i.get("position","auto");"auto"===a&&50===$n.position&&(a="start"===e.align||"left"===e.align?0:"end"===e.align||"right"===e.align?100:50),e.position=a}(t,e)}function ta(t){return t.replace(//gi,"\n")}var ea=function(){function t(){this.state="INITIAL",this.buffer="",this.decoder=new qn,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}var e=t.prototype;return e.parse=function(t){var e=this;function r(){var t=e.buffer,r=0;for(t=ta(t);r>>0).toString()};function aa(t,e,r){return na(t.toString())+na(e.toString())+na(r)}function sa(t,e,r,i,n,a,s){var o,l,u,h=new ea,d=vt(new Uint8Array(t)).trim().replace(ra,"\n").split("\n"),c=[],f=(o=e.baseTime,void 0===(l=e.timescale)&&(l=1),Oi(o,9e4,1/l)),g="00:00.000",v=0,m=0,p=!0;h.oncue=function(t){var e=r[i],a=r.ccOffset,s=(v-f)/9e4;null!=e&&e.new&&(void 0!==m?a=r.ccOffset=e.start:function(t,e,r){var i=t[e],n=t[i.prevCC];if(!n||!n.new&&i.new)return t.ccOffset=t.presentationOffset=i.start,void(i.new=!1);for(;null!=(a=n)&&a.new;){var a;t.ccOffset+=i.start-n.start,i.new=!1,n=t[(i=n).prevCC]}t.presentationOffset=r}(r,i,s)),s&&(a=s-r.presentationOffset);var o=t.endTime-t.startTime,l=Gi(9e4*(t.startTime+a-m),9e4*n)/9e4;t.startTime=Math.max(l,0),t.endTime=Math.max(l+o,0);var u=t.text.trim();t.text=decodeURIComponent(encodeURIComponent(u)),t.id||(t.id=aa(t.startTime,t.endTime,u)),t.endTime>0&&c.push(t)},h.onparsingerror=function(t){u=t},h.onflush=function(){u?s(u):a(c)},d.forEach((function(t){if(p){if(ia(t,"X-TIMESTAMP-MAP=")){p=!1,t.slice(16).split(",").forEach((function(t){ia(t,"LOCAL:")?g=t.slice(6):ia(t,"MPEGTS:")&&(v=parseInt(t.slice(7)))}));try{m=function(t){var e=parseInt(t.slice(-3)),r=parseInt(t.slice(-6,-4)),i=parseInt(t.slice(-9,-7)),n=t.length>9?parseInt(t.substring(0,t.indexOf(":"))):0;if(!(y(e)&&y(r)&&y(i)&&y(n)))throw Error("Malformed X-TIMESTAMP-MAP: Local:"+t);return e+=1e3*r,(e+=6e4*i)+36e5*n}(g)/1e3}catch(t){u=t}return}""===t&&(p=!1)}h.parse(t+"\n")})),h.flush()}var oa="stpp.ttml.im1t",la=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,ua=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,ha={left:"start",center:"center",right:"end",start:"start",end:"end"};function da(t,e,r,i){var n=bt(new Uint8Array(t),["mdat"]);if(0!==n.length){var a,s,l,u,h=n.map((function(t){return vt(t)})),d=(a=e.baseTime,s=1,void 0===(l=e.timescale)&&(l=1),void 0===u&&(u=!1),Oi(a,s,1/l,u));try{h.forEach((function(t){return r(function(t,e){var r=(new DOMParser).parseFromString(t,"text/xml").getElementsByTagName("tt")[0];if(!r)throw new Error("Invalid ttml");var i={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(i).reduce((function(t,e){return t[e]=r.getAttribute("ttp:"+e)||i[e],t}),{}),a="preserve"!==r.getAttribute("xml:space"),s=fa(ca(r,"styling","style")),l=fa(ca(r,"layout","region")),u=ca(r,"body","[begin]");return[].map.call(u,(function(t){var r=ga(t,a);if(!r||!t.hasAttribute("begin"))return null;var i=pa(t.getAttribute("begin"),n),u=pa(t.getAttribute("dur"),n),h=pa(t.getAttribute("end"),n);if(null===i)throw ma(t);if(null===h){if(null===u)throw ma(t);h=i+u}var d=new jn(i-e,h-e,r);d.id=aa(d.startTime,d.endTime,d.text);var c=function(t,e,r){var i="http://www.w3.org/ns/ttml#styling",n=null,a=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],s=null!=t&&t.hasAttribute("style")?t.getAttribute("style"):null;return s&&r.hasOwnProperty(s)&&(n=r[s]),a.reduce((function(r,a){var s=va(e,i,a)||va(t,i,a)||va(n,i,a);return s&&(r[a]=s),r}),{})}(l[t.getAttribute("region")],s[t.getAttribute("style")],s),f=c.textAlign;if(f){var g=ha[f];g&&(d.lineAlign=g),d.align=f}return o(d,c),d})).filter((function(t){return null!==t}))}(t,d))}))}catch(t){i(t)}}else i(new Error("Could not parse IMSC1 mdat"))}function ca(t,e,r){var i=t.getElementsByTagName(e)[0];return i?[].slice.call(i.querySelectorAll(r)):[]}function fa(t){return t.reduce((function(t,e){var r=e.getAttribute("xml:id");return r&&(t[r]=e),t}),{})}function ga(t,e){return[].slice.call(t.childNodes).reduce((function(t,r,i){var n;return"br"===r.nodeName&&i?t+"\n":null!=(n=r.childNodes)&&n.length?ga(r,e):e?t+r.textContent.trim().replace(/\s+/g," "):t+r.textContent}),"")}function va(t,e,r){return t&&t.hasAttributeNS(e,r)?t.getAttributeNS(e,r):null}function ma(t){return new Error("Could not parse ttml timestamp "+t)}function pa(t,e){if(!t)return null;var r=Xn(t);return null===r&&(la.test(t)?r=function(t,e){var r=la.exec(t),i=(0|r[4])+(0|r[5])/e.subFrameRate;return 3600*(0|r[1])+60*(0|r[2])+(0|r[3])+i/e.frameRate}(t,e):ua.test(t)&&(r=function(t,e){var r=ua.exec(t),i=Number(r[1]);switch(r[2]){case"h":return 3600*i;case"m":return 60*i;case"ms":return 1e3*i;case"f":return i/e.frameRate;case"t":return i/e.tickRate}return i}(t,e))),r}var ya=function(){function t(t){if(this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this.captionsProperties=void 0,this.hls=t,this.config=t.config,this.Cues=t.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},this.config.enableCEA708Captions){var e=new Wn(this,"textTrack1"),r=new Wn(this,"textTrack2"),i=new Wn(this,"textTrack3"),n=new Wn(this,"textTrack4");this.cea608Parser1=new Hn(1,e,r),this.cea608Parser2=new Hn(3,i,n)}t.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.on(T.FRAG_LOADING,this.onFragLoading,this),t.on(T.FRAG_LOADED,this.onFragLoaded,this),t.on(T.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),t.on(T.FRAG_DECRYPTED,this.onFragDecrypted,this),t.on(T.INIT_PTS_FOUND,this.onInitPtsFound,this),t.on(T.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),t.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this)}var e=t.prototype;return e.destroy=function(){var t=this.hls;t.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.off(T.FRAG_LOADING,this.onFragLoading,this),t.off(T.FRAG_LOADED,this.onFragLoaded,this),t.off(T.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),t.off(T.FRAG_DECRYPTED,this.onFragDecrypted,this),t.off(T.INIT_PTS_FOUND,this.onInitPtsFound,this),t.off(T.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),t.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=this.cea608Parser1=this.cea608Parser2=null},e.addCues=function(t,e,r,i,n){for(var a,s,o,l,u=!1,h=n.length;h--;){var d=n[h],c=(a=d[0],s=d[1],o=e,l=r,Math.min(s,l)-Math.max(a,o));if(c>=0&&(d[0]=Math.min(d[0],e),d[1]=Math.max(d[1],r),u=!0,c/(r-e)>.5))return}if(u||n.push([e,r]),this.config.renderTextTracksNatively){var f=this.captionsTracks[t];this.Cues.newCue(f,e,r,i)}else{var g=this.Cues.newCue(null,e,r,i);this.hls.trigger(T.CUES_PARSED,{type:"captions",cues:g,track:t})}},e.onInitPtsFound=function(t,e){var r=this,i=e.frag,n=e.id,a=e.initPTS,s=e.timescale,o=this.unparsedVttFrags;"main"===n&&(this.initPTS[i.cc]={baseTime:a,timescale:s}),o.length&&(this.unparsedVttFrags=[],o.forEach((function(t){r.onFragLoaded(T.FRAG_LOADED,t)})))},e.getExistingTrack=function(t){var e=this.media;if(e)for(var r=0;r0&&this.mediaWidth>0){var t=this.hls.levels;if(t.length){var e=this.hls;e.autoLevelCapping=this.getMaxLevel(t.length-1),e.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=e.autoLevelCapping}}},e.getMaxLevel=function(e){var r=this,i=this.hls.levels;if(!i.length)return-1;var n=i.filter((function(t,i){return r.isLevelAllowed(t)&&i<=e}));return this.clientRect=null,t.getMaxLevelByMediaSize(n,this.mediaWidth,this.mediaHeight)},e.startCapping=function(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,this.hls.firstLevel=this.getMaxLevel(this.firstLevel),self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())},e.stopCapping=function(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)},e.getDimensions=function(){if(this.clientRect)return this.clientRect;var t=this.media,e={width:0,height:0};if(t){var r=t.getBoundingClientRect();e.width=r.width,e.height=r.height,e.width||e.height||(e.width=r.right-r.left||t.width||0,e.height=r.bottom-r.top||t.height||0)}return this.clientRect=e,e},e.isLevelAllowed=function(t){return!this.restrictedLevels.some((function(e){return t.bitrate===e.bitrate&&t.width===e.width&&t.height===e.height}))},t.getMaxLevelByMediaSize=function(t,e,r){if(null==t||!t.length)return-1;for(var i,n,a=t.length-1,s=0;s=e||o.height>=r)&&(i=o,!(n=t[s+1])||i.width!==n.width||i.height!==n.height)){a=s;break}}return a},a(t,[{key:"mediaWidth",get:function(){return this.getDimensions().width*this.contentScaleFactor}},{key:"mediaHeight",get:function(){return this.getDimensions().height*this.contentScaleFactor}},{key:"contentScaleFactor",get:function(){var t=1;if(!this.hls.config.ignoreDevicePixelRatio)try{t=self.devicePixelRatio}catch(t){}return t}}]),t}(),Sa=function(){function t(t){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=t,this.registerListeners()}var e=t.prototype;return e.setStreamController=function(t){this.streamController=t},e.registerListeners=function(){this.hls.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this)},e.unregisterListeners=function(){this.hls.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this)},e.destroy=function(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null},e.onMediaAttaching=function(t,e){var r=this.hls.config;if(r.capLevelOnFPSDrop){var i=e.media instanceof self.HTMLVideoElement?e.media:null;this.media=i,i&&"function"==typeof i.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),r.fpsDroppedMonitoringPeriod)}},e.checkFPS=function(t,e,r){var i=performance.now();if(e){if(this.lastTime){var n=i-this.lastTime,a=r-this.lastDroppedFrames,s=e-this.lastDecodedFrames,o=1e3*a/n,l=this.hls;if(l.trigger(T.FPS_DROP,{currentDropped:a,currentDecoded:s,totalDroppedFrames:r}),o>0&&a>l.config.fpsDroppedMonitoringThreshold*s){var u=l.currentLevel;D.warn("drop FPS ratio greater than max allowed value for currentLevel: "+u),u>0&&(-1===l.autoLevelCapping||l.autoLevelCapping>=u)&&(u-=1,l.trigger(T.FPS_DROP_LEVEL_CAPPING,{level:u,droppedLevel:l.currentLevel}),l.autoLevelCapping=u,this.streamController.nextLevelSwitch())}}this.lastTime=i,this.lastDroppedFrames=r,this.lastDecodedFrames=e}},e.checkFPSInterval=function(){var t=this.media;if(t)if(this.isVideoPlaybackQualityAvailable){var e=t.getVideoPlaybackQuality();this.checkFPS(t,e.totalVideoFrames,e.droppedVideoFrames)}else this.checkFPS(t,t.webkitDecodedFrameCount,t.webkitDroppedFrameCount)},t}(),La="[eme]",Ra=function(){function t(e){this.hls=void 0,this.config=void 0,this.media=null,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.setMediaKeysQueue=t.CDMCleanupPromise?[t.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=D.debug.bind(D,La),this.log=D.log.bind(D,La),this.warn=D.warn.bind(D,La),this.error=D.error.bind(D,La),this.hls=e,this.config=e.config,this.registerListeners()}var e=t.prototype;return e.destroy=function(){this.unregisterListeners(),this.onMediaDetached();var t=this.config;t.requestMediaKeySystemAccessFunc=null,t.licenseXhrSetup=t.licenseResponseCallback=void 0,t.drmSystems=t.drmSystemOptions={},this.hls=this.onMediaEncrypted=this.onWaitingForKey=this.keyIdToKeySessionPromise=null,this.config=null},e.registerListeners=function(){this.hls.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(T.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(T.MANIFEST_LOADED,this.onManifestLoaded,this)},e.unregisterListeners=function(){this.hls.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(T.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(T.MANIFEST_LOADED,this.onManifestLoaded,this)},e.getLicenseServerUrl=function(t){var e=this.config,r=e.drmSystems,i=e.widevineLicenseUrl,n=r[t];if(n)return n.licenseUrl;if(t===Y.WIDEVINE&&i)return i;throw new Error('no license server URL configured for key-system "'+t+'"')},e.getServerCertificateUrl=function(t){var e=this.config.drmSystems[t];if(e)return e.serverCertificateUrl;this.log('No Server Certificate in config.drmSystems["'+t+'"]')},e.attemptKeySystemAccess=function(t){var e=this,r=this.hls.levels,i=function(t,e,r){return!!t&&r.indexOf(t)===e},n=r.map((function(t){return t.audioCodec})).filter(i),a=r.map((function(t){return t.videoCodec})).filter(i);return n.length+a.length===0&&a.push("avc1.42e01e"),new Promise((function(r,i){!function t(s){var o=s.shift();e.getMediaKeysPromise(o,n,a).then((function(t){return r({keySystem:o,mediaKeys:t})})).catch((function(e){s.length?t(s):i(e instanceof Aa?e:new Aa({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_ACCESS,error:e,fatal:!0},e.message))}))}(t)}))},e.requestMediaKeySystemAccess=function(t,e){var r=this.config.requestMediaKeySystemAccessFunc;if("function"!=typeof r){var i="Configured requestMediaKeySystemAccess is not a function "+r;return null===Z&&"http:"===self.location.protocol&&(i="navigator.requestMediaKeySystemAccess is not available over insecure protocol "+location.protocol),Promise.reject(new Error(i))}return r(t,e)},e.getMediaKeysPromise=function(t,e,r){var i=this,n=function(t,e,r,i){var n;switch(t){case Y.FAIRPLAY:n=["cenc","sinf"];break;case Y.WIDEVINE:case Y.PLAYREADY:n=["cenc"];break;case Y.CLEARKEY:n=["cenc","keyids"];break;default:throw new Error("Unknown key-system: "+t)}return function(t,e,r,i){return[{initDataTypes:t,persistentState:i.persistentState||"not-allowed",distinctiveIdentifier:i.distinctiveIdentifier||"not-allowed",sessionTypes:i.sessionTypes||[i.sessionType||"temporary"],audioCapabilities:e.map((function(t){return{contentType:'audio/mp4; codecs="'+t+'"',robustness:i.audioRobustness||"",encryptionScheme:i.audioEncryptionScheme||null}})),videoCapabilities:r.map((function(t){return{contentType:'video/mp4; codecs="'+t+'"',robustness:i.videoRobustness||"",encryptionScheme:i.videoEncryptionScheme||null}}))}]}(n,e,r,i)}(t,e,r,this.config.drmSystemOptions),a=this.keySystemAccessPromises[t],s=null==a?void 0:a.keySystemAccess;if(!s){this.log('Requesting encrypted media "'+t+'" key-system access with config: '+JSON.stringify(n)),s=this.requestMediaKeySystemAccess(t,n);var o=this.keySystemAccessPromises[t]={keySystemAccess:s};return s.catch((function(e){i.log('Failed to obtain access to key-system "'+t+'": '+e)})),s.then((function(e){i.log('Access for key-system "'+e.keySystem+'" obtained');var r=i.fetchServerCertificate(t);return i.log('Create media-keys for "'+t+'"'),o.mediaKeys=e.createMediaKeys().then((function(e){return i.log('Media-keys created for "'+t+'"'),r.then((function(r){return r?i.setMediaKeysServerCertificate(e,t,r):e}))})),o.mediaKeys.catch((function(e){i.error('Failed to create media-keys for "'+t+'"}: '+e)})),o.mediaKeys}))}return s.then((function(){return a.mediaKeys}))},e.createMediaKeySessionContext=function(t){var e=t.decryptdata,r=t.keySystem,i=t.mediaKeys;this.log('Creating key-system session "'+r+'" keyId: '+pt(e.keyId||[]));var n=i.createSession(),a={decryptdata:e,keySystem:r,mediaKeys:i,mediaKeysSession:n,keyStatus:"status-pending"};return this.mediaKeySessions.push(a),a},e.renewKeySession=function(t){var e=t.decryptdata;if(e.pssh){var r=this.createMediaKeySessionContext(t),i=this.getKeyIdString(e);this.keyIdToKeySessionPromise[i]=this.generateRequestWithPreferredKeySession(r,"cenc",e.pssh,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(t)},e.getKeyIdString=function(t){if(!t)throw new Error("Could not read keyId of undefined decryptdata");if(null===t.keyId)throw new Error("keyId is null");return pt(t.keyId)},e.updateKeySession=function(t,e){var r,i=t.mediaKeysSession;return this.log('Updating key-session "'+i.sessionId+'" for keyID '+pt((null==(r=t.decryptdata)?void 0:r.keyId)||[])+"\n } (data length: "+(e?e.byteLength:e)+")"),i.update(e)},e.selectKeySystemFormat=function(t){var e=Object.keys(t.levelkeys||{});return this.keyFormatPromise||(this.log("Selecting key-system from fragment (sn: "+t.sn+" "+t.type+": "+t.level+") key formats "+e.join(", ")),this.keyFormatPromise=this.getKeyFormatPromise(e)),this.keyFormatPromise},e.getKeyFormatPromise=function(t){var e=this;return new Promise((function(r,i){var n=J(e.config),a=t.map(z).filter((function(t){return!!t&&-1!==n.indexOf(t)}));return e.getKeySystemSelectionPromise(a).then((function(t){var e=t.keySystem,n=$(e);n?r(n):i(new Error('Unable to find format for key-system "'+e+'"'))})).catch(i)}))},e.loadKey=function(t){var e=this,r=t.keyInfo.decryptdata,i=this.getKeyIdString(r),n="(keyId: "+i+' format: "'+r.keyFormat+'" method: '+r.method+" uri: "+r.uri+")";this.log("Starting session for key "+n);var a=this.keyIdToKeySessionPromise[i];return a||(a=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(r).then((function(i){var a=i.keySystem,s=i.mediaKeys;return e.throwIfDestroyed(),e.log("Handle encrypted media sn: "+t.frag.sn+" "+t.frag.type+": "+t.frag.level+" using key "+n),e.attemptSetMediaKeys(a,s).then((function(){e.throwIfDestroyed();var t=e.createMediaKeySessionContext({keySystem:a,mediaKeys:s,decryptdata:r});return e.generateRequestWithPreferredKeySession(t,"cenc",r.pssh,"playlist-key")}))}))).catch((function(t){return e.handleError(t)})),a},e.throwIfDestroyed=function(t){if(!this.hls)throw new Error("invalid state")},e.handleError=function(t){this.hls&&(this.error(t.message),t instanceof Aa?this.hls.trigger(T.ERROR,t.data):this.hls.trigger(T.ERROR,{type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_KEYS,error:t,fatal:!0}))},e.getKeySystemForKeyPromise=function(t){var e=this.getKeyIdString(t),r=this.keyIdToKeySessionPromise[e];if(!r){var i=z(t.keyFormat),n=i?[i]:J(this.config);return this.attemptKeySystemAccess(n)}return r},e.getKeySystemSelectionPromise=function(t){if(t.length||(t=J(this.config)),0===t.length)throw new Aa({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},"Missing key-system license configuration options "+JSON.stringify({drmSystems:this.config.drmSystems}));return this.attemptKeySystemAccess(t)},e._onMediaEncrypted=function(t){var e=this,r=t.initDataType,i=t.initData;if(this.debug('"'+t.type+'" event: init data type: "'+r+'"'),null!==i){var n,a;if("sinf"===r&&this.config.drmSystems[Y.FAIRPLAY]){var s=St(new Uint8Array(i));try{var o=K(JSON.parse(s).sinf),l=wt(new Uint8Array(o));if(!l)return;n=l.subarray(8,24),a=Y.FAIRPLAY}catch(t){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{var u=function(t){if(!(t instanceof ArrayBuffer)||t.byteLength<32)return null;var e={version:0,systemId:"",kids:null,data:null},r=new DataView(t),i=r.getUint32(0);if(t.byteLength!==i&&i>44)return null;if(1886614376!==r.getUint32(4))return null;if(e.version=r.getUint32(8)>>>24,e.version>1)return null;e.systemId=pt(new Uint8Array(t,12,16));var n=r.getUint32(28);if(0===e.version){if(i-32d||o.status>=400&&o.status<500)a(new Aa({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:o,response:{url:s,data:void 0,code:o.status,text:o.statusText}},"License Request XHR failed ("+s+"). Status: "+o.status+" ("+o.statusText+")"));else{var c=d-r._requestLicenseFailureCount+1;r.warn("Retrying license request, "+c+" attempts left"),r.requestLicense(t,e).then(n,a)}}},t.licenseXhr&&t.licenseXhr.readyState!==XMLHttpRequest.DONE&&t.licenseXhr.abort(),t.licenseXhr=o,r.setupLicenseXHR(o,s,t,e).then((function(t){var e=t.xhr,r=t.licenseChallenge;e.send(r)}))}))},e.onMediaAttached=function(t,e){if(this.config.emeEnabled){var r=e.media;this.media=r,r.addEventListener("encrypted",this.onMediaEncrypted),r.addEventListener("waitingforkey",this.onWaitingForKey)}},e.onMediaDetached=function(){var e=this,r=this.media,i=this.mediaKeySessions;r&&(r.removeEventListener("encrypted",this.onMediaEncrypted),r.removeEventListener("waitingforkey",this.onWaitingForKey),this.media=null),this._requestLicenseFailureCount=0,this.setMediaKeysQueue=[],this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},Ut.clearKeyUriToKeyIdMap();var n=i.length;t.CDMCleanupPromise=Promise.all(i.map((function(t){return e.removeSession(t)})).concat(null==r?void 0:r.setMediaKeys(null).catch((function(t){e.log("Could not clear media keys: "+t+". media.src: "+(null==r?void 0:r.src))})))).then((function(){n&&(e.log("finished closing key sessions and clearing media keys"),i.length=0)})).catch((function(t){e.log("Could not close sessions and clear media keys: "+t+". media.src: "+(null==r?void 0:r.src))}))},e.onManifestLoaded=function(t,e){var r=e.sessionKeys;if(r&&this.config.emeEnabled&&!this.keyFormatPromise){var i=r.reduce((function(t,e){return-1===t.indexOf(e.keyFormat)&&t.push(e.keyFormat),t}),[]);this.log("Selecting key-system from session-keys "+i.join(", ")),this.keyFormatPromise=this.getKeyFormatPromise(i)}},e.removeSession=function(t){var e=this,r=t.mediaKeysSession,i=t.licenseXhr;if(r){this.log("Remove licenses and keys and close session "+r.sessionId),r.onmessage=null,r.onkeystatuseschange=null,i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),t.mediaKeysSession=t.decryptdata=t.licenseXhr=void 0;var n=this.mediaKeySessions.indexOf(t);return n>-1&&this.mediaKeySessions.splice(n,1),r.remove().catch((function(t){e.log("Could not remove session: "+t)})).then((function(){return r.close()})).catch((function(t){e.log("Could not close session: "+t)}))}},t}();Ra.CDMCleanupPromise=void 0;var Aa=function(t){function e(e,r){var i;return(i=t.call(this,r)||this).data=void 0,e.error||(e.error=new Error(r)),i.data=e,e.err=e.error,i}return l(e,t),e}(f(Error)),ka="m",ba="a",Da="v",Ia="av",wa="i",Ca="tt",_a=function(){function t(e){var r=this;this.hls=void 0,this.config=void 0,this.media=void 0,this.sid=void 0,this.cid=void 0,this.useHeaders=!1,this.initialized=!1,this.starved=!1,this.buffering=!0,this.audioBuffer=void 0,this.videoBuffer=void 0,this.onWaiting=function(){r.initialized&&(r.starved=!0),r.buffering=!0},this.onPlaying=function(){r.initialized||(r.initialized=!0),r.buffering=!1},this.applyPlaylistData=function(t){try{r.apply(t,{ot:ka,su:!r.initialized})}catch(t){D.warn("Could not generate manifest CMCD data.",t)}},this.applyFragmentData=function(t){try{var e=t.frag,i=r.hls.levels[e.level],n=r.getObjectType(e),a={d:1e3*e.duration,ot:n};n!==Da&&n!==ba&&n!=Ia||(a.br=i.bitrate/1e3,a.tb=r.getTopBandwidth(n)/1e3,a.bl=r.getBufferLength(n)),r.apply(t,a)}catch(t){D.warn("Could not generate segment CMCD data.",t)}},this.hls=e;var i=this.config=e.config,n=i.cmcd;null!=n&&(i.pLoader=this.createPlaylistLoader(),i.fLoader=this.createFragmentLoader(),this.sid=n.sessionId||t.uuid(),this.cid=n.contentId,this.useHeaders=!0===n.useHeaders,this.registerListeners())}var e=t.prototype;return e.registerListeners=function(){var t=this.hls;t.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(T.MEDIA_DETACHED,this.onMediaDetached,this),t.on(T.BUFFER_CREATED,this.onBufferCreated,this)},e.unregisterListeners=function(){var t=this.hls;t.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(T.MEDIA_DETACHED,this.onMediaDetached,this),t.off(T.BUFFER_CREATED,this.onBufferCreated,this)},e.destroy=function(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null},e.onMediaAttached=function(t,e){this.media=e.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)},e.onMediaDetached=function(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)},e.onBufferCreated=function(t,e){var r,i;this.audioBuffer=null==(r=e.tracks.audio)?void 0:r.buffer,this.videoBuffer=null==(i=e.tracks.video)?void 0:i.buffer},e.createData=function(){var t;return{v:1,sf:"h",sid:this.sid,cid:this.cid,pr:null==(t=this.media)?void 0:t.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}},e.apply=function(e,r){void 0===r&&(r={}),o(r,this.createData());var i=r.ot===wa||r.ot===Da||r.ot===Ia;if(this.starved&&i&&(r.bs=!0,r.su=!0,this.starved=!1),null==r.su&&(r.su=this.buffering),this.useHeaders){var n=t.toHeaders(r);if(!Object.keys(n).length)return;e.headers||(e.headers={}),o(e.headers,n)}else{var a=t.toQuery(r);if(!a)return;e.url=t.appendQueryToUri(e.url,a)}},e.getObjectType=function(t){var e=t.type;return"subtitle"===e?Ca:"initSegment"===t.sn?wa:"audio"===e?ba:"main"===e?this.hls.audioTracks.length?Da:Ia:void 0},e.getTopBandwidth=function(t){var e,r=0,i=this.hls;if(t===ba)e=i.audioTracks;else{var n=i.maxAutoLevel,a=n>-1?n+1:i.levels.length;e=i.levels.slice(0,a)}for(var s,o=v(e);!(s=o()).done;){var l=s.value;l.bitrate>r&&(r=l.bitrate)}return r>0?r:NaN},e.getBufferLength=function(t){var e=this.hls.media,r=t===ba?this.audioBuffer:this.videoBuffer;return r&&e?1e3*Ar.bufferInfo(r,e.currentTime,this.config.maxBufferHole).len:NaN},e.createPlaylistLoader=function(){var t=this.config.pLoader,e=this.applyPlaylistData,r=t||this.config.loader;return function(){function t(t){this.loader=void 0,this.loader=new r(t)}var i=t.prototype;return i.destroy=function(){this.loader.destroy()},i.abort=function(){this.loader.abort()},i.load=function(t,r,i){e(t),this.loader.load(t,r,i)},a(t,[{key:"stats",get:function(){return this.loader.stats}},{key:"context",get:function(){return this.loader.context}}]),t}()},e.createFragmentLoader=function(){var t=this.config.fLoader,e=this.applyFragmentData,r=t||this.config.loader;return function(){function t(t){this.loader=void 0,this.loader=new r(t)}var i=t.prototype;return i.destroy=function(){this.loader.destroy()},i.abort=function(){this.loader.abort()},i.load=function(t,r,i){e(t),this.loader.load(t,r,i)},a(t,[{key:"stats",get:function(){return this.loader.stats}},{key:"context",get:function(){return this.loader.context}}]),t}()},t.uuid=function(){var t=URL.createObjectURL(new Blob),e=t.toString();return URL.revokeObjectURL(t),e.slice(e.lastIndexOf("/")+1)},t.serialize=function(t){for(var e,r=[],i=function(t){return!Number.isNaN(t)&&null!=t&&""!==t&&!1!==t},n=function(t){return Math.round(t)},a=function(t){return 100*n(t/100)},s={br:n,d:n,bl:a,dl:a,mtp:a,nor:function(t){return encodeURIComponent(t)},rtp:a,tb:n},o=v(Object.keys(t||{}).sort());!(e=o()).done;){var l=e.value,u=t[l];if(i(u)&&!("v"===l&&1===u||"pr"==l&&1===u)){var h=s[l];h&&(u=h(u));var d=typeof u,c=void 0;c="ot"===l||"sf"===l||"st"===l?l+"="+u:"boolean"===d?l:"number"===d?l+"="+u:l+"="+JSON.stringify(u),r.push(c)}}return r.join(",")},t.toHeaders=function(e){for(var r={},i=["Object","Request","Session","Status"],n=[{},{},{},{}],a={br:0,d:0,ot:0,tb:0,bl:1,dl:1,mtp:1,nor:1,nrr:1,su:1,cid:2,pr:2,sf:2,sid:2,st:2,v:2,bs:3,rtp:3},s=0,o=Object.keys(e);s1&&(this.updatePathwayPriority(i),r.resolved=this.pathwayId!==n)}},e.filterParsedLevels=function(t){this.levels=t;var e=this.getLevelsForPathway(this.pathwayId);if(0===e.length){var r=t[0].pathwayId;this.log("No levels found in Pathway "+this.pathwayId+'. Setting initial Pathway to "'+r+'"'),e=this.getLevelsForPathway(r),this.pathwayId=r}return e.length!==t.length?(this.log("Found "+e.length+"/"+t.length+' levels in Pathway "'+this.pathwayId+'"'),e):t},e.getLevelsForPathway=function(t){return null===this.levels?[]:this.levels.filter((function(e){return t===e.pathwayId}))},e.updatePathwayPriority=function(t){var e;this.pathwayPriority=t;var r=this.penalizedPathways,i=performance.now();Object.keys(r).forEach((function(t){i-r[t]>3e5&&delete r[t]}));for(var n=0;n0){this.log('Setting Pathway to "'+a+'"'),this.pathwayId=a,this.hls.trigger(T.LEVELS_UPDATED,{levels:e});var l=this.hls.levels[s];o&&l&&this.levels&&(l.attrs["STABLE-VARIANT-ID"]!==o.attrs["STABLE-VARIANT-ID"]&&l.bitrate!==o.bitrate&&this.log("Unstable Pathways change from bitrate "+o.bitrate+" to "+l.bitrate),this.hls.nextLoadLevel=s);break}}}},e.clonePathways=function(t){var e=this,r=this.levels;if(r){var i={},n={};t.forEach((function(t){var a=t.ID,s=t["BASE-ID"],l=t["URI-REPLACEMENT"];if(!r.some((function(t){return t.pathwayId===a}))){var u=e.getLevelsForPathway(s).map((function(t){var e=o({},t);e.details=void 0,e.url=Fa(t.uri,t.attrs["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",l);var r=new C(t.attrs);r["PATHWAY-ID"]=a;var s=r.AUDIO&&r.AUDIO+"_clone_"+a,u=r.SUBTITLES&&r.SUBTITLES+"_clone_"+a;s&&(i[r.AUDIO]=s,r.AUDIO=s),u&&(n[r.SUBTITLES]=u,r.SUBTITLES=u),e.attrs=r;var h=new xe(e);return or(h,"audio",s),or(h,"text",u),h}));r.push.apply(r,u),xa(e.audioTracks,i,l,a),xa(e.subtitleTracks,n,l,a)}}))}},e.loadSteeringManifest=function(t){var e,r=this,i=this.hls.config,n=i.loader;this.loader&&this.loader.destroy(),this.loader=new n(i);try{e=new self.URL(t)}catch(e){return this.enabled=!1,void this.log("Failed to parse Steering Manifest URI: "+t)}if("data:"!==e.protocol){var a=0|(this.hls.bandwidthEstimate||i.abrEwmaDefaultEstimate);e.searchParams.set("_HLS_pathway",this.pathwayId),e.searchParams.set("_HLS_throughput",""+a)}var s={responseType:"json",url:e.href},o=i.steeringManifestLoadPolicy.default,l=o.errorRetry||o.timeoutRetry||{},u={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:l.maxNumRetry||0,retryDelay:l.retryDelayMs||0,maxRetryDelay:l.maxRetryDelayMs||0},h={onSuccess:function(t,i,n,a){r.log('Loaded steering manifest: "'+e+'"');var s=t.data;if(1===s.VERSION){r.updated=performance.now(),r.timeToLoad=s.TTL;var o=s["RELOAD-URI"],l=s["PATHWAY-CLONES"],u=s["PATHWAY-PRIORITY"];if(o)try{r.uri=new self.URL(o,e).href}catch(t){return r.enabled=!1,void r.log("Failed to parse Steering Manifest RELOAD-URI: "+o)}r.scheduleRefresh(r.uri||n.url),l&&r.clonePathways(l),u&&r.updatePathwayPriority(u)}else r.log("Steering VERSION "+s.VERSION+" not supported!")},onError:function(t,e,i,n){if(r.log("Error loading steering manifest: "+t.code+" "+t.text+" ("+e.url+")"),r.stopLoad(),410===t.code)return r.enabled=!1,void r.log("Steering manifest "+e.url+" no longer available");var a=1e3*r.timeToLoad;if(429!==t.code)r.scheduleRefresh(r.uri||e.url,a);else{var s=r.loader;if("function"==typeof(null==s?void 0:s.getResponseHeader)){var o=s.getResponseHeader("Retry-After");o&&(a=1e3*parseFloat(o))}r.log("Steering manifest "+e.url+" rate limited")}},onTimeout:function(t,e,i){r.log("Timeout loading steering manifest ("+e.url+")"),r.scheduleRefresh(r.uri||e.url)}};this.log("Requesting steering manifest: "+e),this.loader.load(s,u,h)},e.scheduleRefresh=function(t,e){var r=this;void 0===e&&(e=1e3*this.timeToLoad),self.clearTimeout(this.reloadTimer),this.reloadTimer=self.setTimeout((function(){r.loadSteeringManifest(t)}),e)},t}();function xa(t,e,r,i){t&&Object.keys(e).forEach((function(n){var a=t.filter((function(t){return t.groupId===n})).map((function(t){var a=o({},t);return a.details=void 0,a.attrs=new C(a.attrs),a.url=a.attrs.URI=Fa(t.url,t.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",r),a.groupId=a.attrs["GROUP-ID"]=e[n],a.attrs["PATHWAY-ID"]=i,a}));t.push.apply(t,a)}))}function Fa(t,e,r,i){var n,a=i.HOST,s=i.PARAMS,o=i[r];e&&(n=null==o?void 0:o[e])&&(t=n);var l=new self.URL(t);return a&&!n&&(l.host=a),s&&Object.keys(s).sort().forEach((function(t){t&&l.searchParams.set(t,s[t])})),l.href}var Oa=/^age:\s*[\d.]+\s*$/im,Ma=function(){function t(t){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=void 0,this.loader=null,this.stats=void 0,this.xhrSetup=t&&t.xhrSetup||null,this.stats=new x,this.retryDelay=0}var e=t.prototype;return e.destroy=function(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null},e.abortInternal=function(){var t=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),t&&(t.onreadystatechange=null,t.onprogress=null,4!==t.readyState&&(this.stats.aborted=!0,t.abort()))},e.abort=function(){var t;this.abortInternal(),null!=(t=this.callbacks)&&t.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)},e.load=function(t,e,r){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=t,this.config=e,this.callbacks=r,this.loadInternal()},e.loadInternal=function(){var t=this,e=this.config,r=this.context;if(e){var i=this.loader=new self.XMLHttpRequest,n=this.stats;n.loading.first=0,n.loaded=0;var a=this.xhrSetup;a?Promise.resolve().then((function(){if(!t.stats.aborted)return a(i,r.url)})).catch((function(t){return i.open("GET",r.url,!0),a(i,r.url)})).then((function(){t.stats.aborted||t.openAndSendXhr(i,r,e)})).catch((function(e){t.callbacks.onError({code:i.status,text:e.message},r,i,n)})):this.openAndSendXhr(i,r,e)}},e.openAndSendXhr=function(t,e,r){t.readyState||t.open("GET",e.url,!0);var i=this.context.headers,n=r.loadPolicy,a=n.maxTimeToFirstByteMs,s=n.maxLoadTimeMs;if(i)for(var o in i)t.setRequestHeader(o,i[o]);e.rangeEnd&&t.setRequestHeader("Range","bytes="+e.rangeStart+"-"+(e.rangeEnd-1)),t.onreadystatechange=this.readystatechange.bind(this),t.onprogress=this.loadprogress.bind(this),t.responseType=e.responseType,self.clearTimeout(this.requestTimeout),r.timeout=a&&y(a)?a:s,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),r.timeout),t.send()},e.readystatechange=function(){var t=this.context,e=this.loader,r=this.stats;if(t&&e){var i=e.readyState,n=this.config;if(!r.aborted&&i>=2&&(0===r.loading.first&&(r.loading.first=Math.max(self.performance.now(),r.loading.start),n.timeout!==n.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),n.timeout=n.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),n.loadPolicy.maxLoadTimeMs-(r.loading.first-r.loading.start)))),4===i)){self.clearTimeout(this.requestTimeout),e.onreadystatechange=null,e.onprogress=null;var a=e.status,s="text"!==e.responseType;if(a>=200&&a<300&&(s&&e.response||null!==e.responseText)){r.loading.end=Math.max(self.performance.now(),r.loading.first);var o=s?e.response:e.responseText,l="arraybuffer"===e.responseType?o.byteLength:o.length;if(r.loaded=r.total=l,r.bwEstimate=8e3*r.total/(r.loading.end-r.loading.first),!this.callbacks)return;var u=this.callbacks.onProgress;if(u&&u(r,t,o,e),!this.callbacks)return;var h={url:e.responseURL,data:o,code:a};this.callbacks.onSuccess(h,r,t,e)}else{var d=n.loadPolicy.errorRetry;We(d,r.retry,!1,a)?this.retry(d):(D.error(a+" while loading "+t.url),this.callbacks.onError({code:a,text:e.statusText},t,e,r))}}}},e.loadtimeout=function(){var t,e=null==(t=this.config)?void 0:t.loadPolicy.timeoutRetry;if(We(e,this.stats.retry,!0))this.retry(e);else{D.warn("timeout while loading "+this.context.url);var r=this.callbacks;r&&(this.abortInternal(),r.onTimeout(this.stats,this.context,this.loader))}},e.retry=function(t){var e=this.context,r=this.stats;this.retryDelay=Ve(t,r.retry),r.retry++,D.warn((status?"HTTP Status "+status:"Timeout")+" while loading "+e.url+", retrying "+r.retry+"/"+t.maxNumRetry+" in "+this.retryDelay+"ms"),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)},e.loadprogress=function(t){var e=this.stats;e.loaded=t.loaded,t.lengthComputable&&(e.total=t.total)},e.getCacheAge=function(){var t=null;if(this.loader&&Oa.test(this.loader.getAllResponseHeaders())){var e=this.loader.getResponseHeader("age");t=e?parseFloat(e):null}return t},e.getResponseHeader=function(t){return this.loader&&new RegExp("^"+t+":\\s*[\\d.]+\\s*$","im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(t):null},t}(),Na=/(\d+)-(\d+)\/(\d+)/,Ua=function(){function t(t){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=void 0,this.response=void 0,this.controller=void 0,this.context=void 0,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=t.fetchSetup||Ba,this.controller=new self.AbortController,this.stats=new x}var e=t.prototype;return e.destroy=function(){this.loader=this.callbacks=null,this.abortInternal()},e.abortInternal=function(){var t=this.response;null!=t&&t.ok||(this.stats.aborted=!0,this.controller.abort())},e.abort=function(){var t;this.abortInternal(),null!=(t=this.callbacks)&&t.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)},e.load=function(t,e,r){var i=this,n=this.stats;if(n.loading.start)throw new Error("Loader can only be used once.");n.loading.start=self.performance.now();var a=function(t,e){var r={method:"GET",mode:"cors",credentials:"same-origin",signal:e,headers:new self.Headers(o({},t.headers))};return t.rangeEnd&&r.headers.set("Range","bytes="+t.rangeStart+"-"+String(t.rangeEnd-1)),r}(t,this.controller.signal),s=r.onProgress,l="arraybuffer"===t.responseType,u=l?"byteLength":"length",h=e.loadPolicy,d=h.maxTimeToFirstByteMs,c=h.maxLoadTimeMs;this.context=t,this.config=e,this.callbacks=r,this.request=this.fetchSetup(t,a),self.clearTimeout(this.requestTimeout),e.timeout=d&&y(d)?d:c,this.requestTimeout=self.setTimeout((function(){i.abortInternal(),r.onTimeout(n,t,i.response)}),e.timeout),self.fetch(this.request).then((function(a){i.response=i.loader=a;var o=Math.max(self.performance.now(),n.loading.start);if(self.clearTimeout(i.requestTimeout),e.timeout=c,i.requestTimeout=self.setTimeout((function(){i.abortInternal(),r.onTimeout(n,t,i.response)}),c-(o-n.loading.start)),!a.ok){var u=a.status,h=a.statusText;throw new Ga(h||"fetch, bad network response",u,a)}return n.loading.first=o,n.total=function(t){var e=t.get("Content-Range");if(e){var r=function(t){var e=Na.exec(t);if(e)return parseInt(e[2])-parseInt(e[1])+1}(e);if(y(r))return r}var i=t.get("Content-Length");if(i)return parseInt(i)}(a.headers)||n.total,s&&y(e.highWaterMark)?i.loadProgressively(a,n,t,e.highWaterMark,s):l?a.arrayBuffer():"json"===t.responseType?a.json():a.text()})).then((function(a){var o=i.response;self.clearTimeout(i.requestTimeout),n.loading.end=Math.max(self.performance.now(),n.loading.first);var l=a[u];l&&(n.loaded=n.total=l);var h={url:o.url,data:a,code:o.status};s&&!y(e.highWaterMark)&&s(n,t,a,o),r.onSuccess(h,n,t,o)})).catch((function(e){if(self.clearTimeout(i.requestTimeout),!n.aborted){var a=e&&e.code||0,s=e?e.message:null;r.onError({code:a,text:s},t,e?e.details:null,n)}}))},e.getCacheAge=function(){var t=null;if(this.response){var e=this.response.headers.get("age");t=e?parseFloat(e):null}return t},e.getResponseHeader=function(t){return this.response?this.response.headers.get(t):null},e.loadProgressively=function(t,e,r,i,n){void 0===i&&(i=0);var a=new fn,s=t.body.getReader();return function o(){return s.read().then((function(s){if(s.done)return a.dataLength&&n(e,r,a.flush(),t),Promise.resolve(new ArrayBuffer(0));var l=s.value,u=l.length;return e.loaded+=u,u=i&&n(e,r,a.flush(),t)):n(e,r,l,t),o()})).catch((function(){return Promise.reject()}))}()},t}();function Ba(t,e){return new self.Request(t.url,e)}var Ga=function(t){function e(e,r,i){var n;return(n=t.call(this,e)||this).code=void 0,n.details=void 0,n.code=r,n.details=i,n}return l(e,t),e}(f(Error)),Ka=/\s/,Ha=i(i({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,maxBufferSize:6e7,maxBufferHole:.1,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:Ma,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:cn,bufferController:kn,capLevelController:Ea,errorController:nr,fpsController:Sa,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:Z,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3},{cueHandler:{newCue:function(t,e,r,i){for(var n,a,s,o,l,u=[],h=self.VTTCue||self.TextTrackCue,d=0;d=16?o--:o++;var g=ta(l.trim()),v=aa(e,r,g);null!=t&&null!=(c=t.cues)&&c.getCueById(v)||((a=new h(e,r,g)).id=v,a.line=d+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*o/32)),u.push(a))}return t&&u.length&&(u.sort((function(t,e){return"auto"===t.line||"auto"===e.line?0:t.line>8&&e.line>8?e.line-t.line:t.line-e.line})),u.forEach((function(e){return pe(t,e)}))),u}},enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:yn,subtitleTrackController:En,timelineController:ya,audioStreamController:gn,audioTrackController:vn,emeController:Ra,cmcdController:_a,contentSteeringController:Pa});function Va(t){return t&&"object"==typeof t?Array.isArray(t)?t.map(Va):Object.keys(t).reduce((function(e,r){return e[r]=Va(t[r]),e}),{}):t}function Ya(t){var e=t.loader;e!==Ua&&e!==Ma?(D.log("[config]: Custom loader detected, cannot enable progressive streaming"),t.progressive=!1):function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(t){}return!1}()&&(t.loader=Ua,t.progressive=!0,t.enableSoftwareAES=!0,D.log("[config]: Progressive streaming enabled, using FetchLoader"))}var Wa=function(){function t(e){void 0===e&&(e={}),this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this._emitter=new en,this._autoLevelCapping=void 0,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this.url=null,b(e.debug||!1,"Hls instance");var r=this.config=function(t,e){if((e.liveSyncDurationCount||e.liveMaxLatencyDurationCount)&&(e.liveSyncDuration||e.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==e.liveMaxLatencyDurationCount&&(void 0===e.liveSyncDurationCount||e.liveMaxLatencyDurationCount<=e.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==e.liveMaxLatencyDuration&&(void 0===e.liveSyncDuration||e.liveMaxLatencyDuration<=e.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');var r=Va(t),n=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((function(t){var i=("level"===t?"playlist":t)+"LoadPolicy",a=void 0===e[i],s=[];n.forEach((function(n){var o=t+"Loading"+n,l=e[o];if(void 0!==l&&a){s.push(o);var u=r[i].default;switch(e[i]={default:u},n){case"TimeOut":u.maxLoadTimeMs=l,u.maxTimeToFirstByteMs=l;break;case"MaxRetry":u.errorRetry.maxNumRetry=l,u.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":u.errorRetry.retryDelayMs=l,u.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":u.errorRetry.maxRetryDelayMs=l,u.timeoutRetry.maxRetryDelayMs=l}}})),s.length&&D.warn('hls.js config: "'+s.join('", "')+'" setting(s) are deprecated, use "'+i+'": '+JSON.stringify(e[i]))})),i(i({},r),e)}(t.DefaultConfig,e);this.userConfig=e,this._autoLevelCapping=-1,r.progressive&&Ya(r);var n=r.abrController,a=r.bufferController,s=r.capLevelController,o=r.errorController,l=r.fpsController,u=new o(this),h=this.abrController=new n(this),d=this.bufferController=new a(this),c=this.capLevelController=new s(this),f=new l(this),g=new ve(this),v=new be(this),m=r.contentSteeringController,p=m?new m(this):null,y=this.levelController=new sr(this,p),E=new fr(this),S=new Sr(this.config),L=this.streamController=new un(this,E,S);c.setStreamController(L),f.setStreamController(L);var R=[g,y,L];p&&R.splice(1,0,p),this.networkControllers=R;var A=[h,d,c,f,v,E];this.audioTrackController=this.createController(r.audioTrackController,R);var k=r.audioStreamController;k&&R.push(new k(this,E,S)),this.subtitleTrackController=this.createController(r.subtitleTrackController,R);var I=r.subtitleStreamController;I&&R.push(new I(this,E,S)),this.createController(r.timelineController,A),S.emeController=this.emeController=this.createController(r.emeController,A),this.cmcdController=this.createController(r.cmcdController,A),this.latencyController=this.createController(De,A),this.coreComponents=A,R.push(u);var w=u.onErrorOut;"function"==typeof w&&this.on(T.ERROR,w,u)}t.isSupported=function(){return function(){var t=zr();if(!t)return!1;var e=Qr(),r=t&&"function"==typeof t.isTypeSupported&&t.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'),i=!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove;return!!r&&!!i}()};var e=t.prototype;return e.createController=function(t,e){if(t){var r=new t(this);return e&&e.push(r),r}return null},e.on=function(t,e,r){void 0===r&&(r=this),this._emitter.on(t,e,r)},e.once=function(t,e,r){void 0===r&&(r=this),this._emitter.once(t,e,r)},e.removeAllListeners=function(t){this._emitter.removeAllListeners(t)},e.off=function(t,e,r,i){void 0===r&&(r=this),this._emitter.off(t,e,r,i)},e.listeners=function(t){return this._emitter.listeners(t)},e.emit=function(t,e,r){return this._emitter.emit(t,e,r)},e.trigger=function(t,e){if(this.config.debug)return this.emit(t,t,e);try{return this.emit(t,t,e)}catch(e){D.error("An internal error happened while handling event "+t+'. Error message: "'+e.message+'". Here is a stacktrace:',e),this.trigger(T.ERROR,{type:E.OTHER_ERROR,details:S.INTERNAL_EXCEPTION,fatal:!1,event:t,error:e})}return!1},e.listenerCount=function(t){return this._emitter.listenerCount(t)},e.destroy=function(){D.log("destroy"),this.trigger(T.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((function(t){return t.destroy()})),this.networkControllers.length=0,this.coreComponents.forEach((function(t){return t.destroy()})),this.coreComponents.length=0;var t=this.config;t.xhrSetup=t.fetchSetup=void 0,this.userConfig=null},e.attachMedia=function(t){D.log("attachMedia"),this._media=t,this.trigger(T.MEDIA_ATTACHING,{media:t})},e.detachMedia=function(){D.log("detachMedia"),this.trigger(T.MEDIA_DETACHING,void 0),this._media=null},e.loadSource=function(t){this.stopLoad();var e=this.media,r=this.url,i=this.url=p.buildAbsoluteURL(self.location.href,t,{alwaysNormalize:!0});D.log("loadSource:"+i),e&&r&&r!==i&&this.bufferController.hasSourceTypes()&&(this.detachMedia(),this.attachMedia(e)),this.trigger(T.MANIFEST_LOADING,{url:t})},e.startLoad=function(t){void 0===t&&(t=-1),D.log("startLoad("+t+")"),this.networkControllers.forEach((function(e){e.startLoad(t)}))},e.stopLoad=function(){D.log("stopLoad"),this.networkControllers.forEach((function(t){t.stopLoad()}))},e.swapAudioCodec=function(){D.log("swapAudioCodec"),this.streamController.swapAudioCodec()},e.recoverMediaError=function(){D.log("recoverMediaError");var t=this._media;this.detachMedia(),t&&this.attachMedia(t)},e.removeLevel=function(t,e){void 0===e&&(e=0),this.levelController.removeLevel(t,e)},a(t,[{key:"levels",get:function(){var t=this.levelController.levels;return t||[]}},{key:"currentLevel",get:function(){return this.streamController.currentLevel},set:function(t){D.log("set currentLevel:"+t),this.loadLevel=t,this.abrController.clearTimer(),this.streamController.immediateLevelSwitch()}},{key:"nextLevel",get:function(){return this.streamController.nextLevel},set:function(t){D.log("set nextLevel:"+t),this.levelController.manualLevel=t,this.streamController.nextLevelSwitch()}},{key:"loadLevel",get:function(){return this.levelController.level},set:function(t){D.log("set loadLevel:"+t),this.levelController.manualLevel=t}},{key:"nextLoadLevel",get:function(){return this.levelController.nextLoadLevel},set:function(t){this.levelController.nextLoadLevel=t}},{key:"firstLevel",get:function(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)},set:function(t){D.log("set firstLevel:"+t),this.levelController.firstLevel=t}},{key:"startLevel",get:function(){return this.levelController.startLevel},set:function(t){D.log("set startLevel:"+t),-1!==t&&(t=Math.max(t,this.minAutoLevel)),this.levelController.startLevel=t}},{key:"capLevelToPlayerSize",get:function(){return this.config.capLevelToPlayerSize},set:function(t){var e=!!t;e!==this.config.capLevelToPlayerSize&&(e?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=e)}},{key:"autoLevelCapping",get:function(){return this._autoLevelCapping},set:function(t){this._autoLevelCapping!==t&&(D.log("set autoLevelCapping:"+t),this._autoLevelCapping=t)}},{key:"bandwidthEstimate",get:function(){var t=this.abrController.bwEstimator;return t?t.getEstimate():NaN}},{key:"ttfbEstimate",get:function(){var t=this.abrController.bwEstimator;return t?t.getEstimateTTFB():NaN}},{key:"maxHdcpLevel",get:function(){return this._maxHdcpLevel},set:function(t){Ie.indexOf(t)>-1&&(this._maxHdcpLevel=t)}},{key:"autoLevelEnabled",get:function(){return-1===this.levelController.manualLevel}},{key:"manualLevel",get:function(){return this.levelController.manualLevel}},{key:"minAutoLevel",get:function(){var t=this.levels,e=this.config.minAutoBitrate;if(!t)return 0;for(var r=t.length,i=0;i=e)return i;return 0}},{key:"maxAutoLevel",get:function(){var t,e=this.levels,r=this.autoLevelCapping,i=this.maxHdcpLevel;if(t=-1===r&&e&&e.length?e.length-1:r,i)for(var n=t;n--;){var a=e[n].attrs["HDCP-LEVEL"];if(a&&a<=i)return n}return t}},{key:"nextAutoLevel",get:function(){return Math.min(Math.max(this.abrController.nextAutoLevel,this.minAutoLevel),this.maxAutoLevel)},set:function(t){this.abrController.nextAutoLevel=Math.max(this.minAutoLevel,t)}},{key:"playingDate",get:function(){return this.streamController.currentProgramDateTime}},{key:"mainForwardBufferInfo",get:function(){return this.streamController.getMainFwdBufferInfo()}},{key:"audioTracks",get:function(){var t=this.audioTrackController;return t?t.audioTracks:[]}},{key:"audioTrack",get:function(){var t=this.audioTrackController;return t?t.audioTrack:-1},set:function(t){var e=this.audioTrackController;e&&(e.audioTrack=t)}},{key:"subtitleTracks",get:function(){var t=this.subtitleTrackController;return t?t.subtitleTracks:[]}},{key:"subtitleTrack",get:function(){var t=this.subtitleTrackController;return t?t.subtitleTrack:-1},set:function(t){var e=this.subtitleTrackController;e&&(e.subtitleTrack=t)}},{key:"media",get:function(){return this._media}},{key:"subtitleDisplay",get:function(){var t=this.subtitleTrackController;return!!t&&t.subtitleDisplay},set:function(t){var e=this.subtitleTrackController;e&&(e.subtitleDisplay=t)}},{key:"lowLatencyMode",get:function(){return this.config.lowLatencyMode},set:function(t){this.config.lowLatencyMode=t}},{key:"liveSyncPosition",get:function(){return this.latencyController.liveSyncPosition}},{key:"latency",get:function(){return this.latencyController.latency}},{key:"maxLatency",get:function(){return this.latencyController.maxLatency}},{key:"targetLatency",get:function(){return this.latencyController.targetLatency}},{key:"drift",get:function(){return this.latencyController.drift}},{key:"forceStartLoad",get:function(){return this.streamController.forceStartLoad}}],[{key:"version",get:function(){return"1.4.0"}},{key:"Events",get:function(){return T}},{key:"ErrorTypes",get:function(){return E}},{key:"ErrorDetails",get:function(){return S}},{key:"DefaultConfig",get:function(){return t.defaultConfig?t.defaultConfig:Ha},set:function(e){t.defaultConfig=e}}]),t}();return Wa.defaultConfig=void 0,Wa},"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(r="undefined"!=typeof globalThis?globalThis:r||self).Hls=i()}(!1); +//# sourceMappingURL=hls.min.js.map diff --git a/server/js/core/player.js b/server/js/core/player.js index 5300b3a..13e8cf6 100644 --- a/server/js/core/player.js +++ b/server/js/core/player.js @@ -6,75 +6,275 @@ var player = { FORWARD: 3, REWIND: 4, }, + values: { + forward_rewind: 0, + }, + timers: { + forward_rewind: NaN, + }, state: -1, - plugin: null, + plugin: NaN, + video: NaN, duration: 0, }; -player.init = function () { - player.state = this.STOPPED; - player.plugin = document.getElementById("videoplayer"); - - webapis.avplay.setListener({ - onbufferingstart: player.onbufferingstart, - onbufferingprogress: player.onbufferingprogress, - onbufferingcomplete: player.onbufferingcomplete, - oncurrentplaytime: player.oncurrentplaytime, - onstreamcompleted: player.onstreamcompleted, - onevent: player.onevent, - onerror: player.onerror, - ondrmevent: player.ondrmevent, - onsubtitlechange: player.onsubtitlechange, - }); -}; - -player.setFullscreen = function () { - try { - webapis.avplay.setDisplayRect(0, 0, 1920, 1080); - } catch (e) { - console.log(e); +player.getVideo = function () { + if (!player.video) { + player.video = document.getElementById("videoplayer"); } + return player.video; +}; + +player.config = function (timeFunction, endFunction) { + player.getVideo().addEventListener("timeupdate", timeFunction); + player.getVideo().addEventListener("ended", endFunction); +}; + +player.getPlayed = function () { + return player.getVideo().currentTime; +}; + +player.getDuration = function () { + return player.getVideo().duration; }; player.play = function (url) { - webapis.avplay.open(url); - player.setFullscreen(); - - webapis.avplay.prepareAsync( - () => { - player.state = player.states.PLAYING; - player.duration = webapis.avplay.getDuration(); - webapis.avplay.play(); - }, - (error) => { - console.log("PrepareErrorCallback " + error); - } - ); - video.hideBTN(); + if (Hls.isSupported()) { + player.plugin = new Hls(); + player.plugin.loadSource(url); + player.plugin.attachMedia(player.getVideo()); + + // player.plugin.on(Hls.Events.MANIFEST_PARSED, function () { + // console.log("MANIFEST_PARSED"); + // }); + + // player.plugin.on(Hls.Events.MEDIA_ATTACHING, function () { + // console.log("MEDIA_ATTACHING"); + // }); + // player.plugin.on(Hls.Events.MEDIA_ATTACHED, function () { + // console.log("MEDIA_ATTACHED"); + // }); + // player.plugin.on(Hls.Events.MEDIA_DETACHING, function () { + // console.log("MEDIA_DETACHING"); + // }); + // player.plugin.on(Hls.Events.MEDIA_DETACHED, function () { + // console.log("MEDIA_DETACHED"); + // }); + // player.plugin.on(Hls.Events.BUFFER_RESET, function () { + // console.log("BUFFER_RESET"); + // }); + // player.plugin.on(Hls.Events.BUFFER_CODECS, function () { + // console.log("BUFFER_CODECS"); + // }); + // player.plugin.on(Hls.Events.BUFFER_CREATED, function () { + // console.log("BUFFER_CREATED"); + // }); + // player.plugin.on(Hls.Events.BUFFER_APPENDING, function () { + // console.log("BUFFER_APPENDING"); + // }); + // player.plugin.on(Hls.Events.BUFFER_APPENDED, function () { + // console.log("BUFFER_APPENDED"); + // }); + // player.plugin.on(Hls.Events.BUFFER_EOS, function () { + // console.log("BUFFER_EOS"); + // }); + // player.plugin.on(Hls.Events.BUFFER_FLUSHING, function () { + // console.log("BUFFER_FLUSHING"); + // }); + // player.plugin.on(Hls.Events.BUFFER_FLUSHED, function () { + // console.log("BUFFER_FLUSHED"); + // }); + // player.plugin.on(Hls.Events.MANIFEST_LOADING, function () { + // console.log("MANIFEST_LOADING"); + // }); + // player.plugin.on(Hls.Events.MANIFEST_LOADED, function () { + // console.log("MANIFEST_LOADED"); + // }); + // player.plugin.on(Hls.Events.LEVEL_SWITCHING, function () { + // console.log("LEVEL_SWITCHING"); + // }); + // player.plugin.on(Hls.Events.LEVEL_SWITCHED, function () { + // console.log("LEVEL_SWITCHED"); + // }); + // player.plugin.on(Hls.Events.LEVEL_LOADING, function () { + // console.log("LEVEL_LOADING"); + // }); + // player.plugin.on(Hls.Events.LEVEL_LOADED, function () { + // console.log("LEVEL_LOADED"); + // }); + // player.plugin.on(Hls.Events.LEVEL_UPDATED, function () { + // console.log("LEVEL_UPDATED"); + // }); + // player.plugin.on(Hls.Events.LEVEL_PTS_UPDATED, function () { + // console.log("LEVEL_PTS_UPDATED"); + // }); + // player.plugin.on(Hls.Events.LEVELS_UPDATED, function () { + // console.log("LEVELS_UPDATED"); + // }); + // player.plugin.on(Hls.Events.AUDIO_TRACKS_UPDATED, function () { + // console.log("AUDIO_TRACKS_UPDATED"); + // }); + // player.plugin.on(Hls.Events.AUDIO_TRACK_SWITCHING, function () { + // console.log("AUDIO_TRACK_SWITCHING"); + // }); + // player.plugin.on(Hls.Events.AUDIO_TRACK_SWITCHED, function () { + // console.log("AUDIO_TRACK_SWITCHED"); + // }); + // player.plugin.on(Hls.Events.AUDIO_TRACK_LOADING, function () { + // console.log("AUDIO_TRACK_LOADING"); + // }); + // player.plugin.on(Hls.Events.AUDIO_TRACK_LOADED, function () { + // console.log("AUDIO_TRACK_LOADED"); + // }); + // player.plugin.on(Hls.Events.SUBTITLE_TRACKS_UPDATED, function () { + // console.log("SUBTITLE_TRACKS_UPDATED"); + // }); + // player.plugin.on(Hls.Events.SUBTITLE_TRACKS_CLEARED, function () { + // console.log("SUBTITLE_TRACKS_CLEARED"); + // }); + // player.plugin.on(Hls.Events.SUBTITLE_TRACK_SWITCH, function () { + // console.log("SUBTITLE_TRACK_SWITCH"); + // }); + // player.plugin.on(Hls.Events.SUBTITLE_TRACK_LOADING, function () { + // console.log("SUBTITLE_TRACK_LOADING"); + // }); + // player.plugin.on(Hls.Events.SUBTITLE_TRACK_LOADED, function () { + // console.log("SUBTITLE_TRACK_LOADED"); + // }); + // player.plugin.on(Hls.Events.SUBTITLE_FRAG_PROCESSED, function () { + // console.log("SUBTITLE_FRAG_PROCESSED"); + // }); + // player.plugin.on(Hls.Events.CUES_PARSED, function () { + // console.log("CUES_PARSED"); + // }); + // player.plugin.on(Hls.Events.NON_NATIVE_TEXT_TRACKS_FOUND, function () { + // console.log("NON_NATIVE_TEXT_TRACKS_FOUND"); + // }); + // player.plugin.on(Hls.Events.INIT_PTS_FOUND, function () { + // console.log("INIT_PTS_FOUND"); + // }); + // player.plugin.on(Hls.Events.FRAG_LOADING, function () { + // console.log("FRAG_LOADING"); + // }); + // player.plugin.on(Hls.Events.FRAG_LOAD_EMERGENCY_ABORTED, function () { + // console.log("FRAG_LOAD_EMERGENCY_ABORTED"); + // }); + // player.plugin.on(Hls.Events.FRAG_LOADED, function () { + // console.log("FRAG_LOADED"); + // }); + // player.plugin.on(Hls.Events.FRAG_DECRYPTED, function () { + // console.log("FRAG_DECRYPTED"); + // }); + // player.plugin.on(Hls.Events.FRAG_PARSING_INIT_SEGMENT, function () { + // console.log("FRAG_PARSING_INIT_SEGMENT"); + // }); + // player.plugin.on(Hls.Events.FRAG_PARSING_USERDATA, function () { + // console.log("FRAG_PARSING_USERDATA"); + // }); + // player.plugin.on(Hls.Events.FRAG_PARSING_METADATA, function () { + // console.log("FRAG_PARSING_METADATA"); + // }); + // player.plugin.on(Hls.Events.FRAG_PARSED, function () { + // console.log("FRAG_PARSED"); + // }); + // player.plugin.on(Hls.Events.FRAG_BUFFERED, function () { + // console.log("FRAG_BUFFERED"); + // }); + // player.plugin.on(Hls.Events.FRAG_CHANGED, function () { + // console.log("FRAG_CHANGED"); + // }); + // player.plugin.on(Hls.Events.FPS_DROP, function () { + // console.log("FPS_DROP"); + // }); + // player.plugin.on(Hls.Events.FPS_DROP_LEVEL_CAPPING, function () { + // console.log("FPS_DROP_LEVEL_CAPPING"); + // }); + // player.plugin.on(Hls.Events.ERROR, function () { + // console.log("ERROR"); + // }); + // player.plugin.on(Hls.Events.DESTROYING, function () { + // console.log("DESTROYING"); + // }); + // player.plugin.on(Hls.Events.KEY_LOADING, function () { + // console.log("KEY_LOADING"); + // }); + // player.plugin.on(Hls.Events.KEY_LOADED, function () { + // console.log("KEY_LOADED"); + // }); + // player.plugin.on(Hls.Events.LIVE_BACK_BUFFER_REACHED, function () { + // console.log("LIVE_BACK_BUFFER_REACHED"); + // }); + } else if (player.getVideo().canPlayType("application/vnd.apple.mpegurl")) { + player.getVideo().src = url; + } + player.getVideo().play(); + player.state = player.states.PLAYING; }; player.pause = function () { + player.getVideo().pause(); player.state = player.states.PAUSED; - webapis.avplay.pause(); video.showBTN("pause"); }; player.resume = function () { - player.state = player.states.PLAYING; - webapis.avplay.play(); + player.getVideo().play(); video.hideBTN(); + player.state = player.states.PLAYING; +}; + +player.playPause = function () { + if (player.getVideo().paused) { + player.resume(); + } else { + player.pause(); + } +}; + +player.rewind = function (callback) { + player.pause(); + clearTimeout(player.timers.forward_rewind); + video.showBTN("rewind"); + player.values.forward_rewind -= player.getDuration() * 0.03; + callback(player.values.forward_rewind); + player.timers.forward_rewind = setTimeout(function () { + player.getVideo().currentTime = + player.values.forward_rewind + player.getPlayed() < 0 + ? 0 + : player.values.forward_rewind + player.getPlayed(); + player.values.forward_rewind = 0; + player.resume(); + }, 500); +}; + +player.forward = function (callback) { + player.state = player.states.FORWARD; + player.pause(); + clearTimeout(player.timers.forward_rewind); + video.showBTN("forward"); + player.values.forward_rewind += player.getDuration() * 0.03; + callback(player.values.forward_rewind); + player.timers.forward_rewind = setTimeout(function () { + player.getVideo().currentTime = + player.values.forward_rewind + player.getPlayed() > + player.getDuration() - player.getDuration() * 0.02 + ? player.getPlayed() + : player.values.forward_rewind + player.getPlayed(); + player.values.forward_rewind = 0; + player.resume(); + }, 500); }; player.stop = function () { if (player.state != player.states.STOPPED) { + player.plugin.stopLoad(); + player.pause(); + player.plugin.destroy(); + player.plugin = NaN; + player.video = NaN; + player.STOP_CALLBACK && player.STOP_CALLBACK(); player.state = player.states.STOPPED; - webapis.avplay.stop(); } - video.hideBTN(); -}; - -player.getDuration = function () { - return player.duration; }; player.destroy = function () { diff --git a/server/js/main.js b/server/js/main.js index e7eddd5..dd26def 100644 --- a/server/js/main.js +++ b/server/js/main.js @@ -11,7 +11,6 @@ var main = { /* on init app */ main.init = function () { loading.init(); - player.init(); session.init(); main.events.login(); }; @@ -56,6 +55,8 @@ main.destroy = function () { /* on key press */ main.keyDown = function (event) { + //('#console').html($('#console').html() + `code: ${event.keyCode}
`); + //$('#console').scrollTop(3000000); if (event.keyCode == tvKey.KEY_EXIT && main.state != exit.id) { exit.init(); } else { diff --git a/server/js/screen/home.episodes.js b/server/js/screen/home.episodes.js index d756a66..d97903f 100644 --- a/server/js/screen/home.episodes.js +++ b/server/js/screen/home.episodes.js @@ -66,7 +66,7 @@ home.episodes.load = function (season) { episodes_html += `
- +
${episode.title}
@@ -78,21 +78,21 @@ home.episodes.load = function (season) { episodes_html += `
- +
`; } $(".episodes .episodes-list").eq(0).html(episodes_html); $(".episodes .episodes-list").slick({ - lazyLoad: "ondemand", vertical: true, dots: false, arrows: false, infinite: false, slidesToShow: 5, slidesToScroll: 1, - speed: 200, + speed: 0, + waitForAnimate: false }); }, error: function (error) { diff --git a/server/js/screen/home.js b/server/js/screen/home.js index d7417af..1fbcd3c 100644 --- a/server/js/screen/home.js +++ b/server/js/screen/home.js @@ -20,7 +20,7 @@ home.init = function () { poster_items += `
-
@@ -30,7 +30,7 @@ home.init = function () { poster_items += `
- +
`; } @@ -63,14 +63,14 @@ home.init = function () { document.body.appendChild(home_element); $(`#${home.id} .rows`).slick({ - lazyLoad: "ondemand", vertical: true, dots: false, arrows: false, infinite: false, slidesToShow: 1.5, slidesToScroll: 1, - speed: 200, + speed: 0, + waitForAnimate: false }); $(`#${home.id} .rows .row-content`).not(".episode").slick({ @@ -79,7 +79,8 @@ home.init = function () { infinite: false, slidesToShow: 9, slidesToScroll: 1, - speed: 150, + speed: 0, + waitForAnimate: false }); $(`#${home.id} .rows .row-content.episode`).slick({ @@ -88,7 +89,8 @@ home.init = function () { infinite: false, slidesToShow: 4.5, slidesToScroll: 1, - speed: 150, + speed: 0, + waitForAnimate: false }); $(`#${home.id} .rows`)[0].slick.slickGoTo(0); diff --git a/server/js/screen/menu.js b/server/js/screen/menu.js index d33e4d3..756cb24 100644 --- a/server/js/screen/menu.js +++ b/server/js/screen/menu.js @@ -86,10 +86,12 @@ menu.move = function () { menu.keyDown = function (event) { switch (event.keyCode) { - case tvKey.KEY_BACK: case tvKey.KEY_RIGHT: - case 27: menu.close(); + break; + case tvKey.KEY_BACK: + case 27: + exit.init(); break; case tvKey.KEY_UP: var options = $(`#${menu.id} .option`); diff --git a/server/js/screen/video.js b/server/js/screen/video.js index ef3416a..88d45f9 100644 --- a/server/js/screen/video.js +++ b/server/js/screen/video.js @@ -45,7 +45,7 @@ video.init = function (item) { video_element.innerHTML = `
- +
${item.serie}
@@ -71,6 +71,7 @@ video.init = function (item) {
`; document.body.appendChild(video_element); + player.config(video.setPlayingTime, video.destroy); $(`#${home.id}`).hide(); video.previous = main.state; main.state = video.id; @@ -80,36 +81,40 @@ video.init = function (item) { video.destroy = function () { player.stop(); + clearTimeout(video.timers.osd.object); main.state = video.previous; document.body.removeChild(document.getElementById(video.id)); $(`#${home.id}`).show(); }; video.keyDown = function (event) { - video.showOSD(); switch (event.keyCode) { + case tvKey.KEY_STOP: case tvKey.KEY_BACK: case 27: video.destroy(); break; - case tvKey.KEY_VOL_UP: - case tvKey.KEY_PANEL_VOL_UP: - audio.setRelativeVolume(0); - break; - case tvKey.KEY_VOL_DOWN: - case tvKey.KEY_PANEL_VOL_DOWN: - audio.setRelativeVolume(1); - break; case tvKey.KEY_PLAY: player.resume(); break; case tvKey.KEY_PAUSE: player.pause(); break; - case tvKey.KEY_STOP: - player.stop(); + case tvKey.KEY_PLAY_PAUSE: + player.playPause(); + break; + case tvKey.KEY_ENTER: + case tvKey.KEY_PANEL_ENTER: + document.getElementById("osd").style.opacity == 1 && player.playPause(); + break; + case tvKey.KEY_LEFT: + player.rewind(video.setPlayingTime); + break; + case tvKey.KEY_RIGHT: + player.forward(video.setPlayingTime); break; } + video.showOSD(); }; video.showOSD = function () { @@ -139,20 +144,22 @@ video.hideBTN = function () { button.style.opacity = 0; }; -video.setPlayingTime = function (time) { +video.setPlayingTime = function () { + var time = player.getPlayed() + player.values.forward_rewind; + time = time < 0 ? 0 : time; var totalTime = player.getDuration(); var timePercent = (100 * time) / totalTime; - var totalSeconds = Math.floor((totalTime / 1000) % 60); - var totalMinutes = Math.floor((totalTime / (1000 * 60)) % 60); - var totalHours = Math.floor((totalTime / (1000 * 60 * 60)) % 24); + var totalSeconds = Math.floor(totalTime % 60); + var totalMinutes = Math.floor((totalTime % 3600) / 60); + var totalHours = Math.floor(totalTime / 3600); totalHours = totalHours < 10 ? "0" + totalHours : totalHours; totalMinutes = totalMinutes < 10 ? "0" + totalMinutes : totalMinutes; totalSeconds = totalSeconds < 10 ? "0" + totalSeconds : totalSeconds; - var timeSeconds = Math.floor((time / 1000) % 60); - var timeMinutes = Math.floor((time / (1000 * 60)) % 60); - var timeHours = Math.floor((time / (1000 * 60 * 60)) % 24); + var timeSeconds = Math.floor(time % 60); + var timeMinutes = Math.floor((time % 3600) / 60); + var timeHours = Math.floor(time / 3600); timeHours = timeHours < 10 ? "0" + timeHours : timeHours; timeMinutes = timeMinutes < 10 ? "0" + timeMinutes : timeMinutes; timeSeconds = timeSeconds < 10 ? "0" + timeSeconds : timeSeconds;