{"version":3,"file":"static/chunks/3c706662.bffffe332960f4ff.js","mappings":"ACAA,4EAA4E,GDEzC,CAAAA,KAAAC,gBAAA,CAAAD,KAAAC,gBAAA,MAAAC,IAAA,uBAAAC,MAAA,CAAAC,wBAAA,CAAAC,mBAAA,MAAAC,OAAAC,CAAAA,OAAAD,QAAA,SAAAE,2CAAA,kBAAAC,CAAA,MAAAC,EAAA,YAAAC,EAAAC,CAAA,KAAAF,CAAA,CAAAE,EAAA,QAAAF,CAAA,CAAAE,EAAA,CAAAC,OAAA,KAAAC,EAAAJ,CAAA,CAAAE,EAAA,EAAAG,EAAAH,EAAAI,EAAA,GAAAH,QAAA,WAAAJ,CAAA,CAAAG,EAAA,CAAAK,IAAA,CAAAH,EAAAD,OAAA,CAAAC,EAAAA,EAAAD,OAAA,CAAAF,GAAAG,EAAAE,CAAA,IAAAF,EAAAD,OAAA,QAAAF,EAAAO,CAAA,CAAAT,EAAAE,EAAAQ,CAAA,CAAAT,EAAAC,EAAAS,CAAA,UAAAX,CAAA,CAAAC,CAAA,CAAAE,CAAA,EAAAD,EAAAU,CAAA,CAAAZ,EAAAC,IAAAY,OAAAC,cAAA,CAAAd,EAAAC,EAAA,CAAAc,WAAA,GAAAC,IAAAb,CAAA,IAAAD,EAAAC,CAAA,UAAAH,CAAA,sBAAAiB,QAAAA,OAAAC,WAAA,EAAAL,OAAAC,cAAA,CAAAd,EAAAiB,OAAAC,WAAA,EAAAC,MAAA,WAAAN,OAAAC,cAAA,CAAAd,EAAA,cAAAmB,MAAA,MAAAjB,EAAAA,CAAA,UAAAF,CAAA,CAAAC,CAAA,OAAAA,GAAAD,CAAAA,EAAAE,EAAAF,EAAA,IAAAC,GAAA,EAAAA,GAAA,iBAAAD,GAAAA,GAAAA,EAAAoB,UAAA,QAAApB,CAAA,KAAAG,EAAAU,OAAAQ,MAAA,UAAAnB,EAAAC,CAAA,CAAAA,GAAAU,OAAAC,cAAA,CAAAX,EAAA,WAAAY,WAAA,GAAAI,MAAAnB,CAAA,KAAAC,GAAA,iBAAAD,CAAA,SAAAK,KAAAL,EAAAE,EAAAS,CAAA,CAAAR,EAAAE,EAAA,UAAAJ,CAAA,SAAAD,CAAA,CAAAC,EAAA,GAAAqB,IAAA,MAAAjB,GAAA,QAAAF,CAAA,EAAAD,EAAAD,CAAA,UAAAD,CAAA,MAAAC,EAAAD,GAAAA,EAAAoB,UAAA,mBAAApB,EAAAuB,OAAA,oBAAAvB,CAAA,SAAAE,EAAAS,CAAA,CAAAV,EAAA,IAAAA,GAAAA,CAAA,EAAAC,EAAAU,CAAA,UAAAZ,CAAA,CAAAC,CAAA,SAAAY,OAAAW,SAAA,CAAAC,cAAA,CAAAjB,IAAA,CAAAR,EAAAC,EAAA,EAAAC,EAAAwB,CAAA,IAAAxB,EAAAA,EAAAyB,CAAA,4FAAAjC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,0eAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,+uCAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,owBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,q1BAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,0nBAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,yqBAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,ukBAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,0hVAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,gwHAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,+kTAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,8lRAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,y3CAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,shmBAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,qwDAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,kgDAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,qonBAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,yqJAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,67EAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,q/FAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,qiOAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+vRAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,8mBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,0oIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,ogtCAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,k9GAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,kjGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,kr9BAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,q+bAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,66HAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,shHAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,mmOAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,i7KAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,k0PAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,m/rCAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,mmKAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,8XAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,4mNAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,iwGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,qhMAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,w+GAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,2vGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,83qCAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,gpdAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,gyfAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,i8UAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,i/UAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,oiNAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,gnWAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,m1KAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+uKAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,kt0CAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+0LAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,gmMAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,qyGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,0oHAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,84JAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,wnIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ytGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+qJAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,qtKAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,svHAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,wqQAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,w/IAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,inJAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,muIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,6lIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,8zQAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,wsJAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,o+VAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,s3OAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,i7EAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+zFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,0/EAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ihFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+hFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,uqFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+oFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,oxGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,08EAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,gmIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,2hFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,uwGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+tLAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,y9EAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,m+EAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,k7KAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,6lTAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,qqSAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,u5rFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,godAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ilJAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,o4LAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ypXAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,6y4BAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,kv3BAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,49JAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,yoFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,m0UAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,mvHAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,qyGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,umwBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,u0KAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+8GAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,698BAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,2phBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,g0OAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,m2QAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,u5dAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,8iJAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,g9+BAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,snnBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,k0nCAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,yhqBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,62VAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,4gKAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,2hIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,upJAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,msIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,qiIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,6hHAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,28GAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,omJAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,y1HAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,qnHAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,y1FAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,isHAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,2gHAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,o7MAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,q1KAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,wyFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ivHAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,w1HAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+tGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,i4JAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,y6EAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,s+EAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,0kFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,mzKAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,09gBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,y4VAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ysGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,61SAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,81aAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,4uHAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,02YAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+sXAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,8xbAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+lHAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,8vHAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,q4HAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,wpPAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,spQAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,gxQAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,6omCAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,krcAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,o3OAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,2yUAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,utLAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,sqIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,4nOAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,0oeAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,k4gBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,kzaAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,o8HAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,gqIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ulKAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,s9FAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,0nIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,8gGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,qrFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ygGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,8wHAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,izGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,izFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,qqFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,knFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,6wDAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,qzIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+xGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,6rIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,q2TAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,mpTAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,uoOAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,q7sBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,y2EAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,g5OAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,syjBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,84EAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,u7KAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,k9dAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,2uOAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ktQAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,grPAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ygGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,m9JAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,0iTAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,0hQAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,siNAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,klbAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,20nBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,86oBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,gtMAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ijUAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,y5LAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,m7SAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,yjKAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,q7IAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,qnMAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+1OAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,kyPAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,o+NAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ivGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,q+FAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ulIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,y1GAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,koGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,0wFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,28GAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,4+NAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,y0NAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+jLAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,i8FAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,wqKAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,q/EAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,y9EAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,2qFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,0tIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,slHAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,y7KAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,8gFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,mnFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,o6HAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,yhFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,u8EAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,qoFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+nHAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,s4FAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,onGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,m7FAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,8uFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,s6LAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,2jLAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,w1LAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,mzGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,y2FAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,o5GAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,q9CAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,wibAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,68tBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,ovBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,yjBAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,wvEAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,un6CAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,q6qDAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,smvDAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,iuwBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,+5DAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,8xEAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,sonCAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,msYAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,g6BAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,smBAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,6QAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,y8HAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,y/iDAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,26CAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,o/GAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,07sEAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,08CAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,qwDAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,yvjDAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,q6CAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,0nLAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,2/CAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,wwBAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,06NAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,ySAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,kjJAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,unEAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,igiCAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,0oQAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,sxrBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,63EAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ioEAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,iTAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,8zDAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,gSAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,k4BAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,4RAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,8RAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,26DAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,8YAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,q8NAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,uyIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,yvTAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,47EAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,2+DAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,0sjqDAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,ufAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,upJAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,q13BAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,omVAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,wmUAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,o3DAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,my2CAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,0hOAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,yvHAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,w+YAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,koBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,EAAAgC,KAAA,0qRAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,uvoCAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,ilKAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,+tnBAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,2OAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,4OAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,sPAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,sOAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,kNAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,8fAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,q2FAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,23FAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,wjRAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,y0YAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,igKAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,siKAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+qBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+4JAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,4PAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ylWAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,4QAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,48JAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,szJAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,uxJAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,0uRAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,m+NAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ugOAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,woNAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,o1BAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,8ycAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,21MAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,u4JAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,2PAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,4/PAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,8nBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,2xPAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,6jKAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,6kLAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,g7OAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ygNAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,k/LAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,28TAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,0QAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,uqRAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,06MAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,y+NAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,k+QAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,irXAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,mmMAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,6+FAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ygQAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,wPAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,4WAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,0nCAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,8pNAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,6pCAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,2hVAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,k4CAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,i5KAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,m5PAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,4+WAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,q1GAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ogRAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,olFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,imjBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,mgCAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ivOAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,2wJAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,8oIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,qpDAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,yxcAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,k9IAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,myUAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,wqJAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,m8MAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,8OAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,y4CAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,0jMAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,y0CAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,yoIAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,iqOAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,qhfAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,0OAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,itKAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,4g5DAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,6tEAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,6tBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,62OAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,g+LAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,o1HAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,4neAAAlC,MAAA,CAAAmC,mBAAA,CAAAjC,mBAAA,eAAAgC,KAAA,oNAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,otCAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+kCAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,u3BAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,m3BAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,kiEAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,uoMAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,wyEAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,u+FAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,o2BAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,6+BAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+iBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,gtGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,8jBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,4oBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,2tGAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,mcAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,qlFAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ijBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,kwCAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,4mBAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,w0BAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,iqJAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,++CAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,+kEAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,u4JAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,6hKAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,ijEAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,s36BAAAlC,MAAA,CAAAU,OAAA,CAAAR,mBAAA,eAAAgC,KAAA,8/MAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,wGAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,gGAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,gHAAAlC,MAAA,CAAAU,OAAA,EAAAwB,KAAA,6QAAAlC,OAAAU,OAAA,CAAAP,QAAAD,oBAAA","sources":["webpack://_N_E/./node_modules/cloudinary-video-player/dist/cld-video-player.js","webpack://_N_E/"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"cloudinary-core\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"cloudinary-core\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cloudinaryVideoPlayer\"] = factory(require(\"cloudinary-core\"));\n\telse\n\t\troot[\"cloudinaryVideoPlayer\"] = factory(root[\"cloudinary\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE_cloudinary_core__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"./index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"../node_modules/@babel/runtime/helpers/assertThisInitialized.js\":\n/*!***********************************************************************!*\\\n !*** ../node_modules/@babel/runtime/helpers/assertThisInitialized.js ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"function _assertThisInitialized(self) {\\n if (self === void 0) {\\n throw new ReferenceError(\\\"this hasn't been initialised - super() hasn't been called\\\");\\n }\\n\\n return self;\\n}\\n\\nmodule.exports = _assertThisInitialized;\\nmodule.exports[\\\"default\\\"] = module.exports, module.exports.__esModule = true;\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@babel/runtime/helpers/assertThisInitialized.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@babel/runtime/helpers/construct.js\":\n/*!***********************************************************!*\\\n !*** ../node_modules/@babel/runtime/helpers/construct.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \\\"../node_modules/@babel/runtime/helpers/setPrototypeOf.js\\\");\\n\\nvar isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ \\\"../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js\\\");\\n\\nfunction _construct(Parent, args, Class) {\\n if (isNativeReflectConstruct()) {\\n module.exports = _construct = Reflect.construct;\\n module.exports[\\\"default\\\"] = module.exports, module.exports.__esModule = true;\\n } else {\\n module.exports = _construct = function _construct(Parent, args, Class) {\\n var a = [null];\\n a.push.apply(a, args);\\n var Constructor = Function.bind.apply(Parent, a);\\n var instance = new Constructor();\\n if (Class) setPrototypeOf(instance, Class.prototype);\\n return instance;\\n };\\n\\n module.exports[\\\"default\\\"] = module.exports, module.exports.__esModule = true;\\n }\\n\\n return _construct.apply(null, arguments);\\n}\\n\\nmodule.exports = _construct;\\nmodule.exports[\\\"default\\\"] = module.exports, module.exports.__esModule = true;\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@babel/runtime/helpers/construct.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@babel/runtime/helpers/extends.js\":\n/*!*********************************************************!*\\\n !*** ../node_modules/@babel/runtime/helpers/extends.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"function _extends() {\\n module.exports = _extends = Object.assign || function (target) {\\n for (var i = 1; i < arguments.length; i++) {\\n var source = arguments[i];\\n\\n for (var key in source) {\\n if (Object.prototype.hasOwnProperty.call(source, key)) {\\n target[key] = source[key];\\n }\\n }\\n }\\n\\n return target;\\n };\\n\\n module.exports[\\\"default\\\"] = module.exports, module.exports.__esModule = true;\\n return _extends.apply(this, arguments);\\n}\\n\\nmodule.exports = _extends;\\nmodule.exports[\\\"default\\\"] = module.exports, module.exports.__esModule = true;\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@babel/runtime/helpers/extends.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@babel/runtime/helpers/inherits.js\":\n/*!**********************************************************!*\\\n !*** ../node_modules/@babel/runtime/helpers/inherits.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \\\"../node_modules/@babel/runtime/helpers/setPrototypeOf.js\\\");\\n\\nfunction _inherits(subClass, superClass) {\\n if (typeof superClass !== \\\"function\\\" && superClass !== null) {\\n throw new TypeError(\\\"Super expression must either be null or a function\\\");\\n }\\n\\n subClass.prototype = Object.create(superClass && superClass.prototype, {\\n constructor: {\\n value: subClass,\\n writable: true,\\n configurable: true\\n }\\n });\\n if (superClass) setPrototypeOf(subClass, superClass);\\n}\\n\\nmodule.exports = _inherits;\\nmodule.exports[\\\"default\\\"] = module.exports, module.exports.__esModule = true;\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@babel/runtime/helpers/inherits.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@babel/runtime/helpers/inheritsLoose.js\":\n/*!***************************************************************!*\\\n !*** ../node_modules/@babel/runtime/helpers/inheritsLoose.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \\\"../node_modules/@babel/runtime/helpers/setPrototypeOf.js\\\");\\n\\nfunction _inheritsLoose(subClass, superClass) {\\n subClass.prototype = Object.create(superClass.prototype);\\n subClass.prototype.constructor = subClass;\\n setPrototypeOf(subClass, superClass);\\n}\\n\\nmodule.exports = _inheritsLoose;\\nmodule.exports[\\\"default\\\"] = module.exports, module.exports.__esModule = true;\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@babel/runtime/helpers/inheritsLoose.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js\":\n/*!**************************************************************************!*\\\n !*** ../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js ***!\n \\**************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"function _isNativeReflectConstruct() {\\n if (typeof Reflect === \\\"undefined\\\" || !Reflect.construct) return false;\\n if (Reflect.construct.sham) return false;\\n if (typeof Proxy === \\\"function\\\") return true;\\n\\n try {\\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\\n return true;\\n } catch (e) {\\n return false;\\n }\\n}\\n\\nmodule.exports = _isNativeReflectConstruct;\\nmodule.exports[\\\"default\\\"] = module.exports, module.exports.__esModule = true;\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@babel/runtime/helpers/setPrototypeOf.js\":\n/*!****************************************************************!*\\\n !*** ../node_modules/@babel/runtime/helpers/setPrototypeOf.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"function _setPrototypeOf(o, p) {\\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\\n o.__proto__ = p;\\n return o;\\n };\\n\\n module.exports[\\\"default\\\"] = module.exports, module.exports.__esModule = true;\\n return _setPrototypeOf(o, p);\\n}\\n\\nmodule.exports = _setPrototypeOf;\\nmodule.exports[\\\"default\\\"] = module.exports, module.exports.__esModule = true;\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@babel/runtime/helpers/setPrototypeOf.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/byte-helpers.js\":\n/*!*************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/byte-helpers.js ***!\n \\*************************************************************/\n/*! exports provided: countBits, countBytes, padStart, isTypedArray, toUint8, toHexString, toBinaryString, ENDIANNESS, IS_BIG_ENDIAN, IS_LITTLE_ENDIAN, bytesToNumber, numberToBytes, bytesToString, stringToBytes, concatTypedArrays, bytesMatch, sliceBytes, reverseBytes */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"countBits\\\", function() { return countBits; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"countBytes\\\", function() { return countBytes; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"padStart\\\", function() { return padStart; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"isTypedArray\\\", function() { return isTypedArray; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"toUint8\\\", function() { return toUint8; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"toHexString\\\", function() { return toHexString; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"toBinaryString\\\", function() { return toBinaryString; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"ENDIANNESS\\\", function() { return ENDIANNESS; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"IS_BIG_ENDIAN\\\", function() { return IS_BIG_ENDIAN; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"IS_LITTLE_ENDIAN\\\", function() { return IS_LITTLE_ENDIAN; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"bytesToNumber\\\", function() { return bytesToNumber; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"numberToBytes\\\", function() { return numberToBytes; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"bytesToString\\\", function() { return bytesToString; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"stringToBytes\\\", function() { return stringToBytes; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"concatTypedArrays\\\", function() { return concatTypedArrays; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"bytesMatch\\\", function() { return bytesMatch; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"sliceBytes\\\", function() { return sliceBytes; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"reverseBytes\\\", function() { return reverseBytes; });\\n/* harmony import */ var global_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! global/window */ \\\"../node_modules/global/window.js\\\");\\n/* harmony import */ var global_window__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(global_window__WEBPACK_IMPORTED_MODULE_0__);\\n // const log2 = Math.log2 ? Math.log2 : (x) => (Math.log(x) / Math.log(2));\\n\\nvar repeat = function repeat(str, len) {\\n var acc = '';\\n\\n while (len--) {\\n acc += str;\\n }\\n\\n return acc;\\n}; // count the number of bits it would take to represent a number\\n// we used to do this with log2 but BigInt does not support builtin math\\n// Math.ceil(log2(x));\\n\\n\\nvar countBits = function countBits(x) {\\n return x.toString(2).length;\\n}; // count the number of whole bytes it would take to represent a number\\n\\nvar countBytes = function countBytes(x) {\\n return Math.ceil(countBits(x) / 8);\\n};\\nvar padStart = function padStart(b, len, str) {\\n if (str === void 0) {\\n str = ' ';\\n }\\n\\n return (repeat(str, len) + b.toString()).slice(-len);\\n};\\nvar isTypedArray = function isTypedArray(obj) {\\n return ArrayBuffer.isView(obj);\\n};\\nvar toUint8 = function toUint8(bytes) {\\n if (bytes instanceof Uint8Array) {\\n return bytes;\\n }\\n\\n if (!Array.isArray(bytes) && !isTypedArray(bytes) && !(bytes instanceof ArrayBuffer)) {\\n // any non-number or NaN leads to empty uint8array\\n // eslint-disable-next-line\\n if (typeof bytes !== 'number' || typeof bytes === 'number' && bytes !== bytes) {\\n bytes = 0;\\n } else {\\n bytes = [bytes];\\n }\\n }\\n\\n return new Uint8Array(bytes && bytes.buffer || bytes, bytes && bytes.byteOffset || 0, bytes && bytes.byteLength || 0);\\n};\\nvar toHexString = function toHexString(bytes) {\\n bytes = toUint8(bytes);\\n var str = '';\\n\\n for (var i = 0; i < bytes.length; i++) {\\n str += padStart(bytes[i].toString(16), 2, '0');\\n }\\n\\n return str;\\n};\\nvar toBinaryString = function toBinaryString(bytes) {\\n bytes = toUint8(bytes);\\n var str = '';\\n\\n for (var i = 0; i < bytes.length; i++) {\\n str += padStart(bytes[i].toString(2), 8, '0');\\n }\\n\\n return str;\\n};\\nvar BigInt = global_window__WEBPACK_IMPORTED_MODULE_0___default.a.BigInt || Number;\\nvar BYTE_TABLE = [BigInt('0x1'), BigInt('0x100'), BigInt('0x10000'), BigInt('0x1000000'), BigInt('0x100000000'), BigInt('0x10000000000'), BigInt('0x1000000000000'), BigInt('0x100000000000000'), BigInt('0x10000000000000000')];\\nvar ENDIANNESS = function () {\\n var a = new Uint16Array([0xFFCC]);\\n var b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\\n\\n if (b[0] === 0xFF) {\\n return 'big';\\n }\\n\\n if (b[0] === 0xCC) {\\n return 'little';\\n }\\n\\n return 'unknown';\\n}();\\nvar IS_BIG_ENDIAN = ENDIANNESS === 'big';\\nvar IS_LITTLE_ENDIAN = ENDIANNESS === 'little';\\nvar bytesToNumber = function bytesToNumber(bytes, _temp) {\\n var _ref = _temp === void 0 ? {} : _temp,\\n _ref$signed = _ref.signed,\\n signed = _ref$signed === void 0 ? false : _ref$signed,\\n _ref$le = _ref.le,\\n le = _ref$le === void 0 ? false : _ref$le;\\n\\n bytes = toUint8(bytes);\\n var fn = le ? 'reduce' : 'reduceRight';\\n var obj = bytes[fn] ? bytes[fn] : Array.prototype[fn];\\n var number = obj.call(bytes, function (total, byte, i) {\\n var exponent = le ? i : Math.abs(i + 1 - bytes.length);\\n return total + BigInt(byte) * BYTE_TABLE[exponent];\\n }, BigInt(0));\\n\\n if (signed) {\\n var max = BYTE_TABLE[bytes.length] / BigInt(2) - BigInt(1);\\n number = BigInt(number);\\n\\n if (number > max) {\\n number -= max;\\n number -= max;\\n number -= BigInt(2);\\n }\\n }\\n\\n return Number(number);\\n};\\nvar numberToBytes = function numberToBytes(number, _temp2) {\\n var _ref2 = _temp2 === void 0 ? {} : _temp2,\\n _ref2$le = _ref2.le,\\n le = _ref2$le === void 0 ? false : _ref2$le;\\n\\n // eslint-disable-next-line\\n if (typeof number !== 'bigint' && typeof number !== 'number' || typeof number === 'number' && number !== number) {\\n number = 0;\\n }\\n\\n number = BigInt(number);\\n var byteCount = countBytes(number);\\n var bytes = new Uint8Array(new ArrayBuffer(byteCount));\\n\\n for (var i = 0; i < byteCount; i++) {\\n var byteIndex = le ? i : Math.abs(i + 1 - bytes.length);\\n bytes[byteIndex] = Number(number / BYTE_TABLE[i] & BigInt(0xFF));\\n\\n if (number < 0) {\\n bytes[byteIndex] = Math.abs(~bytes[byteIndex]);\\n bytes[byteIndex] -= i === 0 ? 1 : 2;\\n }\\n }\\n\\n return bytes;\\n};\\nvar bytesToString = function bytesToString(bytes) {\\n if (!bytes) {\\n return '';\\n } // TODO: should toUint8 handle cases where we only have 8 bytes\\n // but report more since this is a Uint16+ Array?\\n\\n\\n bytes = Array.prototype.slice.call(bytes);\\n var string = String.fromCharCode.apply(null, toUint8(bytes));\\n\\n try {\\n return decodeURIComponent(escape(string));\\n } catch (e) {// if decodeURIComponent/escape fails, we are dealing with partial\\n // or full non string data. Just return the potentially garbled string.\\n }\\n\\n return string;\\n};\\nvar stringToBytes = function stringToBytes(string, stringIsBytes) {\\n if (typeof string !== 'string' && string && typeof string.toString === 'function') {\\n string = string.toString();\\n }\\n\\n if (typeof string !== 'string') {\\n return new Uint8Array();\\n } // If the string already is bytes, we don't have to do this\\n // otherwise we do this so that we split multi length characters\\n // into individual bytes\\n\\n\\n if (!stringIsBytes) {\\n string = unescape(encodeURIComponent(string));\\n }\\n\\n var view = new Uint8Array(string.length);\\n\\n for (var i = 0; i < string.length; i++) {\\n view[i] = string.charCodeAt(i);\\n }\\n\\n return view;\\n};\\nvar concatTypedArrays = function concatTypedArrays() {\\n for (var _len = arguments.length, buffers = new Array(_len), _key = 0; _key < _len; _key++) {\\n buffers[_key] = arguments[_key];\\n }\\n\\n buffers = buffers.filter(function (b) {\\n return b && (b.byteLength || b.length) && typeof b !== 'string';\\n });\\n\\n if (buffers.length <= 1) {\\n // for 0 length we will return empty uint8\\n // for 1 length we return the first uint8\\n return toUint8(buffers[0]);\\n }\\n\\n var totalLen = buffers.reduce(function (total, buf, i) {\\n return total + (buf.byteLength || buf.length);\\n }, 0);\\n var tempBuffer = new Uint8Array(totalLen);\\n var offset = 0;\\n buffers.forEach(function (buf) {\\n buf = toUint8(buf);\\n tempBuffer.set(buf, offset);\\n offset += buf.byteLength;\\n });\\n return tempBuffer;\\n};\\n/**\\n * Check if the bytes \\\"b\\\" are contained within bytes \\\"a\\\".\\n *\\n * @param {Uint8Array|Array} a\\n * Bytes to check in\\n *\\n * @param {Uint8Array|Array} b\\n * Bytes to check for\\n *\\n * @param {Object} options\\n * options\\n *\\n * @param {Array|Uint8Array} [offset=0]\\n * offset to use when looking at bytes in a\\n *\\n * @param {Array|Uint8Array} [mask=[]]\\n * mask to use on bytes before comparison.\\n *\\n * @return {boolean}\\n * If all bytes in b are inside of a, taking into account\\n * bit masks.\\n */\\n\\nvar bytesMatch = function bytesMatch(a, b, _temp3) {\\n var _ref3 = _temp3 === void 0 ? {} : _temp3,\\n _ref3$offset = _ref3.offset,\\n offset = _ref3$offset === void 0 ? 0 : _ref3$offset,\\n _ref3$mask = _ref3.mask,\\n mask = _ref3$mask === void 0 ? [] : _ref3$mask;\\n\\n a = toUint8(a);\\n b = toUint8(b); // ie 11 does not support uint8 every\\n\\n var fn = b.every ? b.every : Array.prototype.every;\\n return b.length && a.length - offset >= b.length && // ie 11 doesn't support every on uin8\\n fn.call(b, function (bByte, i) {\\n var aByte = mask[i] ? mask[i] & a[offset + i] : a[offset + i];\\n return bByte === aByte;\\n });\\n};\\nvar sliceBytes = function sliceBytes(src, start, end) {\\n if (Uint8Array.prototype.slice) {\\n return Uint8Array.prototype.slice.call(src, start, end);\\n }\\n\\n return new Uint8Array(Array.prototype.slice.call(src, start, end));\\n};\\nvar reverseBytes = function reverseBytes(src) {\\n if (src.reverse) {\\n return src.reverse();\\n }\\n\\n return Array.prototype.reverse.call(src);\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/byte-helpers.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/codec-helpers.js\":\n/*!**************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/codec-helpers.js ***!\n \\**************************************************************/\n/*! exports provided: getAv1Codec, getAvcCodec, getHvcCodec */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"getAv1Codec\\\", function() { return getAv1Codec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"getAvcCodec\\\", function() { return getAvcCodec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"getHvcCodec\\\", function() { return getHvcCodec; });\\n/* harmony import */ var _byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./byte-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/byte-helpers.js\\\");\\n // https://aomediacodec.github.io/av1-isobmff/#av1codecconfigurationbox-syntax\\n// https://developer.mozilla.org/en-US/docs/Web/Media/Formats/codecs_parameter#AV1\\n\\nvar getAv1Codec = function getAv1Codec(bytes) {\\n var codec = '';\\n var profile = bytes[1] >>> 3;\\n var level = bytes[1] & 0x1F;\\n var tier = bytes[2] >>> 7;\\n var highBitDepth = (bytes[2] & 0x40) >> 6;\\n var twelveBit = (bytes[2] & 0x20) >> 5;\\n var monochrome = (bytes[2] & 0x10) >> 4;\\n var chromaSubsamplingX = (bytes[2] & 0x08) >> 3;\\n var chromaSubsamplingY = (bytes[2] & 0x04) >> 2;\\n var chromaSamplePosition = bytes[2] & 0x03;\\n codec += profile + \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(level, 2, '0');\\n\\n if (tier === 0) {\\n codec += 'M';\\n } else if (tier === 1) {\\n codec += 'H';\\n }\\n\\n var bitDepth;\\n\\n if (profile === 2 && highBitDepth) {\\n bitDepth = twelveBit ? 12 : 10;\\n } else {\\n bitDepth = highBitDepth ? 10 : 8;\\n }\\n\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(bitDepth, 2, '0'); // TODO: can we parse color range??\\n\\n codec += \\\".\\\" + monochrome;\\n codec += \\\".\\\" + chromaSubsamplingX + chromaSubsamplingY + chromaSamplePosition;\\n return codec;\\n};\\nvar getAvcCodec = function getAvcCodec(bytes) {\\n var profileId = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toHexString\\\"])(bytes[1]);\\n var constraintFlags = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toHexString\\\"])(bytes[2] & 0xFC);\\n var levelId = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toHexString\\\"])(bytes[3]);\\n return \\\"\\\" + profileId + constraintFlags + levelId;\\n};\\nvar getHvcCodec = function getHvcCodec(bytes) {\\n var codec = '';\\n var profileSpace = bytes[1] >> 6;\\n var profileId = bytes[1] & 0x1F;\\n var tierFlag = (bytes[1] & 0x20) >> 5;\\n var profileCompat = bytes.subarray(2, 6);\\n var constraintIds = bytes.subarray(6, 12);\\n var levelId = bytes[12];\\n\\n if (profileSpace === 1) {\\n codec += 'A';\\n } else if (profileSpace === 2) {\\n codec += 'B';\\n } else if (profileSpace === 3) {\\n codec += 'C';\\n }\\n\\n codec += profileId + \\\".\\\"; // ffmpeg does this in big endian\\n\\n var profileCompatVal = parseInt(Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toBinaryString\\\"])(profileCompat).split('').reverse().join(''), 2); // apple does this in little endian...\\n\\n if (profileCompatVal > 255) {\\n profileCompatVal = parseInt(Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toBinaryString\\\"])(profileCompat), 2);\\n }\\n\\n codec += profileCompatVal.toString(16) + \\\".\\\";\\n\\n if (tierFlag === 0) {\\n codec += 'L';\\n } else {\\n codec += 'H';\\n }\\n\\n codec += levelId;\\n var constraints = '';\\n\\n for (var i = 0; i < constraintIds.length; i++) {\\n var v = constraintIds[i];\\n\\n if (v) {\\n if (constraints) {\\n constraints += '.';\\n }\\n\\n constraints += v.toString(16);\\n }\\n }\\n\\n if (constraints) {\\n codec += \\\".\\\" + constraints;\\n }\\n\\n return codec;\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/codec-helpers.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/codecs.js\":\n/*!*******************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/codecs.js ***!\n \\*******************************************************/\n/*! exports provided: translateLegacyCodec, translateLegacyCodecs, mapLegacyAvcCodecs, parseCodecs, codecsFromDefault, isVideoCodec, isAudioCodec, isTextCodec, getMimeForCodec, browserSupportsCodec, muxerSupportsCodec, DEFAULT_AUDIO_CODEC, DEFAULT_VIDEO_CODEC */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"translateLegacyCodec\\\", function() { return translateLegacyCodec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"translateLegacyCodecs\\\", function() { return translateLegacyCodecs; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"mapLegacyAvcCodecs\\\", function() { return mapLegacyAvcCodecs; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"parseCodecs\\\", function() { return parseCodecs; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"codecsFromDefault\\\", function() { return codecsFromDefault; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"isVideoCodec\\\", function() { return isVideoCodec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"isAudioCodec\\\", function() { return isAudioCodec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"isTextCodec\\\", function() { return isTextCodec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"getMimeForCodec\\\", function() { return getMimeForCodec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"browserSupportsCodec\\\", function() { return browserSupportsCodec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"muxerSupportsCodec\\\", function() { return muxerSupportsCodec; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"DEFAULT_AUDIO_CODEC\\\", function() { return DEFAULT_AUDIO_CODEC; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"DEFAULT_VIDEO_CODEC\\\", function() { return DEFAULT_VIDEO_CODEC; });\\n/* harmony import */ var global_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! global/window */ \\\"../node_modules/global/window.js\\\");\\n/* harmony import */ var global_window__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(global_window__WEBPACK_IMPORTED_MODULE_0__);\\n\\nvar regexs = {\\n // to determine mime types\\n mp4: /^(av0?1|avc0?[1234]|vp0?9|flac|opus|mp3|mp4a|mp4v|stpp.ttml.im1t)/,\\n webm: /^(vp0?[89]|av0?1|opus|vorbis)/,\\n ogg: /^(vp0?[89]|theora|flac|opus|vorbis)/,\\n // to determine if a codec is audio or video\\n video: /^(av0?1|avc0?[1234]|vp0?[89]|hvc1|hev1|theora|mp4v)/,\\n audio: /^(mp4a|flac|vorbis|opus|ac-[34]|ec-3|alac|mp3|speex|aac)/,\\n text: /^(stpp.ttml.im1t)/,\\n // mux.js support regex\\n muxerVideo: /^(avc0?1)/,\\n muxerAudio: /^(mp4a)/,\\n // match nothing as muxer does not support text right now.\\n // there cannot never be a character before the start of a string\\n // so this matches nothing.\\n muxerText: /a^/\\n};\\nvar mediaTypes = ['video', 'audio', 'text'];\\nvar upperMediaTypes = ['Video', 'Audio', 'Text'];\\n/**\\n * Replace the old apple-style `avc1.
.
` codec string with the standard\\n * `avc1.`\\n *\\n * @param {string} codec\\n * Codec string to translate\\n * @return {string}\\n * The translated codec string\\n */\\n\\nvar translateLegacyCodec = function translateLegacyCodec(codec) {\\n if (!codec) {\\n return codec;\\n }\\n\\n return codec.replace(/avc1\\\\.(\\\\d+)\\\\.(\\\\d+)/i, function (orig, profile, avcLevel) {\\n var profileHex = ('00' + Number(profile).toString(16)).slice(-2);\\n var avcLevelHex = ('00' + Number(avcLevel).toString(16)).slice(-2);\\n return 'avc1.' + profileHex + '00' + avcLevelHex;\\n });\\n};\\n/**\\n * Replace the old apple-style `avc1.
.
` codec strings with the standard\\n * `avc1.`\\n *\\n * @param {string[]} codecs\\n * An array of codec strings to translate\\n * @return {string[]}\\n * The translated array of codec strings\\n */\\n\\nvar translateLegacyCodecs = function translateLegacyCodecs(codecs) {\\n return codecs.map(translateLegacyCodec);\\n};\\n/**\\n * Replace codecs in the codec string with the old apple-style `avc1.
.
` to the\\n * standard `avc1.`.\\n *\\n * @param {string} codecString\\n * The codec string\\n * @return {string}\\n * The codec string with old apple-style codecs replaced\\n *\\n * @private\\n */\\n\\nvar mapLegacyAvcCodecs = function mapLegacyAvcCodecs(codecString) {\\n return codecString.replace(/avc1\\\\.(\\\\d+)\\\\.(\\\\d+)/i, function (match) {\\n return translateLegacyCodecs([match])[0];\\n });\\n};\\n/**\\n * @typedef {Object} ParsedCodecInfo\\n * @property {number} codecCount\\n * Number of codecs parsed\\n * @property {string} [videoCodec]\\n * Parsed video codec (if found)\\n * @property {string} [videoObjectTypeIndicator]\\n * Video object type indicator (if found)\\n * @property {string|null} audioProfile\\n * Audio profile\\n */\\n\\n/**\\n * Parses a codec string to retrieve the number of codecs specified, the video codec and\\n * object type indicator, and the audio profile.\\n *\\n * @param {string} [codecString]\\n * The codec string to parse\\n * @return {ParsedCodecInfo}\\n * Parsed codec info\\n */\\n\\nvar parseCodecs = function parseCodecs(codecString) {\\n if (codecString === void 0) {\\n codecString = '';\\n }\\n\\n var codecs = codecString.split(',');\\n var result = [];\\n codecs.forEach(function (codec) {\\n codec = codec.trim();\\n var codecType;\\n mediaTypes.forEach(function (name) {\\n var match = regexs[name].exec(codec.toLowerCase());\\n\\n if (!match || match.length <= 1) {\\n return;\\n }\\n\\n codecType = name; // maintain codec case\\n\\n var type = codec.substring(0, match[1].length);\\n var details = codec.replace(type, '');\\n result.push({\\n type: type,\\n details: details,\\n mediaType: name\\n });\\n });\\n\\n if (!codecType) {\\n result.push({\\n type: codec,\\n details: '',\\n mediaType: 'unknown'\\n });\\n }\\n });\\n return result;\\n};\\n/**\\n * Returns a ParsedCodecInfo object for the default alternate audio playlist if there is\\n * a default alternate audio playlist for the provided audio group.\\n *\\n * @param {Object} master\\n * The master playlist\\n * @param {string} audioGroupId\\n * ID of the audio group for which to find the default codec info\\n * @return {ParsedCodecInfo}\\n * Parsed codec info\\n */\\n\\nvar codecsFromDefault = function codecsFromDefault(master, audioGroupId) {\\n if (!master.mediaGroups.AUDIO || !audioGroupId) {\\n return null;\\n }\\n\\n var audioGroup = master.mediaGroups.AUDIO[audioGroupId];\\n\\n if (!audioGroup) {\\n return null;\\n }\\n\\n for (var name in audioGroup) {\\n var audioType = audioGroup[name];\\n\\n if (audioType.default && audioType.playlists) {\\n // codec should be the same for all playlists within the audio type\\n return parseCodecs(audioType.playlists[0].attributes.CODECS);\\n }\\n }\\n\\n return null;\\n};\\nvar isVideoCodec = function isVideoCodec(codec) {\\n if (codec === void 0) {\\n codec = '';\\n }\\n\\n return regexs.video.test(codec.trim().toLowerCase());\\n};\\nvar isAudioCodec = function isAudioCodec(codec) {\\n if (codec === void 0) {\\n codec = '';\\n }\\n\\n return regexs.audio.test(codec.trim().toLowerCase());\\n};\\nvar isTextCodec = function isTextCodec(codec) {\\n if (codec === void 0) {\\n codec = '';\\n }\\n\\n return regexs.text.test(codec.trim().toLowerCase());\\n};\\nvar getMimeForCodec = function getMimeForCodec(codecString) {\\n if (!codecString || typeof codecString !== 'string') {\\n return;\\n }\\n\\n var codecs = codecString.toLowerCase().split(',').map(function (c) {\\n return translateLegacyCodec(c.trim());\\n }); // default to video type\\n\\n var type = 'video'; // only change to audio type if the only codec we have is\\n // audio\\n\\n if (codecs.length === 1 && isAudioCodec(codecs[0])) {\\n type = 'audio';\\n } else if (codecs.length === 1 && isTextCodec(codecs[0])) {\\n // text uses application/ for now\\n type = 'application';\\n } // default the container to mp4\\n\\n\\n var container = 'mp4'; // every codec must be able to go into the container\\n // for that container to be the correct one\\n\\n if (codecs.every(function (c) {\\n return regexs.mp4.test(c);\\n })) {\\n container = 'mp4';\\n } else if (codecs.every(function (c) {\\n return regexs.webm.test(c);\\n })) {\\n container = 'webm';\\n } else if (codecs.every(function (c) {\\n return regexs.ogg.test(c);\\n })) {\\n container = 'ogg';\\n }\\n\\n return type + \\\"/\\\" + container + \\\";codecs=\\\\\\\"\\\" + codecString + \\\"\\\\\\\"\\\";\\n};\\nvar browserSupportsCodec = function browserSupportsCodec(codecString) {\\n if (codecString === void 0) {\\n codecString = '';\\n }\\n\\n return global_window__WEBPACK_IMPORTED_MODULE_0___default.a.MediaSource && global_window__WEBPACK_IMPORTED_MODULE_0___default.a.MediaSource.isTypeSupported && global_window__WEBPACK_IMPORTED_MODULE_0___default.a.MediaSource.isTypeSupported(getMimeForCodec(codecString)) || false;\\n};\\nvar muxerSupportsCodec = function muxerSupportsCodec(codecString) {\\n if (codecString === void 0) {\\n codecString = '';\\n }\\n\\n return codecString.toLowerCase().split(',').every(function (codec) {\\n codec = codec.trim(); // any match is supported.\\n\\n for (var i = 0; i < upperMediaTypes.length; i++) {\\n var type = upperMediaTypes[i];\\n\\n if (regexs[\\\"muxer\\\" + type].test(codec)) {\\n return true;\\n }\\n }\\n\\n return false;\\n });\\n};\\nvar DEFAULT_AUDIO_CODEC = 'mp4a.40.2';\\nvar DEFAULT_VIDEO_CODEC = 'avc1.4d400d';\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/codecs.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/containers.js\":\n/*!***********************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/containers.js ***!\n \\***********************************************************/\n/*! exports provided: isLikely, detectContainerForBytes, isLikelyFmp4MediaSegment */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"isLikely\\\", function() { return isLikely; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"detectContainerForBytes\\\", function() { return detectContainerForBytes; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"isLikelyFmp4MediaSegment\\\", function() { return isLikelyFmp4MediaSegment; });\\n/* harmony import */ var _byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./byte-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/byte-helpers.js\\\");\\n/* harmony import */ var _mp4_helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mp4-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/mp4-helpers.js\\\");\\n/* harmony import */ var _ebml_helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ebml-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/ebml-helpers.js\\\");\\n/* harmony import */ var _id3_helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./id3-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/id3-helpers.js\\\");\\n/* harmony import */ var _nal_helpers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./nal-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/nal-helpers.js\\\");\\n\\n\\n\\n\\n\\nvar CONSTANTS = {\\n // \\\"webm\\\" string literal in hex\\n 'webm': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x77, 0x65, 0x62, 0x6d]),\\n // \\\"matroska\\\" string literal in hex\\n 'matroska': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x6d, 0x61, 0x74, 0x72, 0x6f, 0x73, 0x6b, 0x61]),\\n // \\\"fLaC\\\" string literal in hex\\n 'flac': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x66, 0x4c, 0x61, 0x43]),\\n // \\\"OggS\\\" string literal in hex\\n 'ogg': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x4f, 0x67, 0x67, 0x53]),\\n // ac-3 sync byte, also works for ec-3 as that is simply a codec\\n // of ac-3\\n 'ac3': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x0b, 0x77]),\\n // \\\"RIFF\\\" string literal in hex used for wav and avi\\n 'riff': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x52, 0x49, 0x46, 0x46]),\\n // \\\"AVI\\\" string literal in hex\\n 'avi': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x41, 0x56, 0x49]),\\n // \\\"WAVE\\\" string literal in hex\\n 'wav': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x57, 0x41, 0x56, 0x45]),\\n // \\\"ftyp3g\\\" string literal in hex\\n '3gp': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x66, 0x74, 0x79, 0x70, 0x33, 0x67]),\\n // \\\"ftyp\\\" string literal in hex\\n 'mp4': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x66, 0x74, 0x79, 0x70]),\\n // \\\"styp\\\" string literal in hex\\n 'fmp4': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x73, 0x74, 0x79, 0x70]),\\n // \\\"ftyp\\\" string literal in hex\\n 'mov': Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x66, 0x74, 0x79, 0x70, 0x71, 0x74])\\n};\\nvar _isLikely = {\\n aac: function aac(bytes) {\\n var offset = Object(_id3_helpers_js__WEBPACK_IMPORTED_MODULE_3__[\\\"getId3Offset\\\"])(bytes);\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, [0xFF, 0x10], {\\n offset: offset,\\n mask: [0xFF, 0x16]\\n });\\n },\\n mp3: function mp3(bytes) {\\n var offset = Object(_id3_helpers_js__WEBPACK_IMPORTED_MODULE_3__[\\\"getId3Offset\\\"])(bytes);\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, [0xFF, 0x02], {\\n offset: offset,\\n mask: [0xFF, 0x06]\\n });\\n },\\n webm: function webm(bytes) {\\n var docType = Object(_ebml_helpers_js__WEBPACK_IMPORTED_MODULE_2__[\\\"findEbml\\\"])(bytes, [_ebml_helpers_js__WEBPACK_IMPORTED_MODULE_2__[\\\"EBML_TAGS\\\"].EBML, _ebml_helpers_js__WEBPACK_IMPORTED_MODULE_2__[\\\"EBML_TAGS\\\"].DocType])[0]; // check if DocType EBML tag is webm\\n\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(docType, CONSTANTS.webm);\\n },\\n mkv: function mkv(bytes) {\\n var docType = Object(_ebml_helpers_js__WEBPACK_IMPORTED_MODULE_2__[\\\"findEbml\\\"])(bytes, [_ebml_helpers_js__WEBPACK_IMPORTED_MODULE_2__[\\\"EBML_TAGS\\\"].EBML, _ebml_helpers_js__WEBPACK_IMPORTED_MODULE_2__[\\\"EBML_TAGS\\\"].DocType])[0]; // check if DocType EBML tag is matroska\\n\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(docType, CONSTANTS.matroska);\\n },\\n mp4: function mp4(bytes) {\\n return !_isLikely['3gp'](bytes) && !_isLikely.mov(bytes) && (Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.mp4, {\\n offset: 4\\n }) || Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.fmp4, {\\n offset: 4\\n }));\\n },\\n mov: function mov(bytes) {\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.mov, {\\n offset: 4\\n });\\n },\\n '3gp': function gp(bytes) {\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS['3gp'], {\\n offset: 4\\n });\\n },\\n ac3: function ac3(bytes) {\\n var offset = Object(_id3_helpers_js__WEBPACK_IMPORTED_MODULE_3__[\\\"getId3Offset\\\"])(bytes);\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.ac3, {\\n offset: offset\\n });\\n },\\n ts: function ts(bytes) {\\n if (bytes.length < 189 && bytes.length >= 1) {\\n return bytes[0] === 0x47;\\n }\\n\\n var i = 0; // check the first 376 bytes for two matching sync bytes\\n\\n while (i + 188 < bytes.length && i < 188) {\\n if (bytes[i] === 0x47 && bytes[i + 188] === 0x47) {\\n return true;\\n }\\n\\n i += 1;\\n }\\n\\n return false;\\n },\\n flac: function flac(bytes) {\\n var offset = Object(_id3_helpers_js__WEBPACK_IMPORTED_MODULE_3__[\\\"getId3Offset\\\"])(bytes);\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.flac, {\\n offset: offset\\n });\\n },\\n ogg: function ogg(bytes) {\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.ogg);\\n },\\n avi: function avi(bytes) {\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.riff) && Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.avi, {\\n offset: 8\\n });\\n },\\n wav: function wav(bytes) {\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.riff) && Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, CONSTANTS.wav, {\\n offset: 8\\n });\\n },\\n 'h264': function h264(bytes) {\\n // find seq_parameter_set_rbsp\\n return Object(_nal_helpers_js__WEBPACK_IMPORTED_MODULE_4__[\\\"findH264Nal\\\"])(bytes, 7, 3).length;\\n },\\n 'h265': function h265(bytes) {\\n // find video_parameter_set_rbsp or seq_parameter_set_rbsp\\n return Object(_nal_helpers_js__WEBPACK_IMPORTED_MODULE_4__[\\\"findH265Nal\\\"])(bytes, [32, 33], 3).length;\\n }\\n}; // get all the isLikely functions\\n// but make sure 'ts' is above h264 and h265\\n// but below everything else as it is the least specific\\n\\nvar isLikelyTypes = Object.keys(_isLikely) // remove ts, h264, h265\\n.filter(function (t) {\\n return t !== 'ts' && t !== 'h264' && t !== 'h265';\\n}) // add it back to the bottom\\n.concat(['ts', 'h264', 'h265']); // make sure we are dealing with uint8 data.\\n\\nisLikelyTypes.forEach(function (type) {\\n var isLikelyFn = _isLikely[type];\\n\\n _isLikely[type] = function (bytes) {\\n return isLikelyFn(Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes));\\n };\\n}); // export after wrapping\\n\\nvar isLikely = _isLikely; // A useful list of file signatures can be found here\\n// https://en.wikipedia.org/wiki/List_of_file_signatures\\n\\nvar detectContainerForBytes = function detectContainerForBytes(bytes) {\\n bytes = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n\\n for (var i = 0; i < isLikelyTypes.length; i++) {\\n var type = isLikelyTypes[i];\\n\\n if (isLikely[type](bytes)) {\\n return type;\\n }\\n }\\n\\n return '';\\n}; // fmp4 is not a container\\n\\nvar isLikelyFmp4MediaSegment = function isLikelyFmp4MediaSegment(bytes) {\\n return Object(_mp4_helpers_js__WEBPACK_IMPORTED_MODULE_1__[\\\"findBox\\\"])(bytes, ['moof']).length > 0;\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/containers.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js\":\n/*!**************************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js ***!\n \\**************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return decodeB64ToUint8Array; });\\n/* harmony import */ var global_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! global/window */ \\\"../node_modules/global/window.js\\\");\\n/* harmony import */ var global_window__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(global_window__WEBPACK_IMPORTED_MODULE_0__);\\n\\n\\nvar atob = function atob(s) {\\n return global_window__WEBPACK_IMPORTED_MODULE_0___default.a.atob ? global_window__WEBPACK_IMPORTED_MODULE_0___default.a.atob(s) : Buffer.from(s, 'base64').toString('binary');\\n};\\n\\nfunction decodeB64ToUint8Array(b64Text) {\\n var decodedString = atob(b64Text);\\n var array = new Uint8Array(decodedString.length);\\n\\n for (var i = 0; i < decodedString.length; i++) {\\n array[i] = decodedString.charCodeAt(i);\\n }\\n\\n return array;\\n}\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node-libs-browser/node_modules/buffer/index.js */ \\\"../node_modules/node-libs-browser/node_modules/buffer/index.js\\\").Buffer))\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/ebml-helpers.js\":\n/*!*************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/ebml-helpers.js ***!\n \\*************************************************************/\n/*! exports provided: EBML_TAGS, findEbml, decodeBlock, parseTracks, parseData */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"EBML_TAGS\\\", function() { return EBML_TAGS; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"findEbml\\\", function() { return findEbml; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"decodeBlock\\\", function() { return decodeBlock; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"parseTracks\\\", function() { return parseTracks; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"parseData\\\", function() { return parseData; });\\n/* harmony import */ var _byte_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./byte-helpers */ \\\"../node_modules/@videojs/vhs-utils/es/byte-helpers.js\\\");\\n/* harmony import */ var _codec_helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./codec-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/codec-helpers.js\\\");\\n\\n // relevant specs for this parser:\\n// https://matroska-org.github.io/libebml/specs.html\\n// https://www.matroska.org/technical/elements.html\\n// https://www.webmproject.org/docs/container/\\n\\nvar EBML_TAGS = {\\n EBML: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x1A, 0x45, 0xDF, 0xA3]),\\n DocType: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x42, 0x82]),\\n Segment: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x18, 0x53, 0x80, 0x67]),\\n SegmentInfo: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x15, 0x49, 0xA9, 0x66]),\\n Tracks: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x16, 0x54, 0xAE, 0x6B]),\\n Track: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xAE]),\\n TrackNumber: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xd7]),\\n DefaultDuration: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x23, 0xe3, 0x83]),\\n TrackEntry: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xAE]),\\n TrackType: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x83]),\\n FlagDefault: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x88]),\\n CodecID: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x86]),\\n CodecPrivate: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x63, 0xA2]),\\n VideoTrack: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xe0]),\\n AudioTrack: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xe1]),\\n // Not used yet, but will be used for live webm/mkv\\n // see https://www.matroska.org/technical/basics.html#block-structure\\n // see https://www.matroska.org/technical/basics.html#simpleblock-structure\\n Cluster: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x1F, 0x43, 0xB6, 0x75]),\\n Timestamp: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xE7]),\\n TimestampScale: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x2A, 0xD7, 0xB1]),\\n BlockGroup: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xA0]),\\n BlockDuration: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x9B]),\\n Block: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xA1]),\\n SimpleBlock: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0xA3])\\n};\\n/**\\n * This is a simple table to determine the length\\n * of things in ebml. The length is one based (starts at 1,\\n * rather than zero) and for every zero bit before a one bit\\n * we add one to length. We also need this table because in some\\n * case we have to xor all the length bits from another value.\\n */\\n\\nvar LENGTH_TABLE = [128, 64, 32, 16, 8, 4, 2, 1];\\n\\nvar getLength = function getLength(byte) {\\n var len = 1;\\n\\n for (var i = 0; i < LENGTH_TABLE.length; i++) {\\n if (byte & LENGTH_TABLE[i]) {\\n break;\\n }\\n\\n len++;\\n }\\n\\n return len;\\n}; // length in ebml is stored in the first 4 to 8 bits\\n// of the first byte. 4 for the id length and 8 for the\\n// data size length. Length is measured by converting the number to binary\\n// then 1 + the number of zeros before a 1 is encountered starting\\n// from the left.\\n\\n\\nvar getvint = function getvint(bytes, offset, removeLength, signed) {\\n if (removeLength === void 0) {\\n removeLength = true;\\n }\\n\\n if (signed === void 0) {\\n signed = false;\\n }\\n\\n var length = getLength(bytes[offset]);\\n var valueBytes = bytes.subarray(offset, offset + length); // NOTE that we do **not** subarray here because we need to copy these bytes\\n // as they will be modified below to remove the dataSizeLen bits and we do not\\n // want to modify the original data. normally we could just call slice on\\n // uint8array but ie 11 does not support that...\\n\\n if (removeLength) {\\n valueBytes = Array.prototype.slice.call(bytes, offset, offset + length);\\n valueBytes[0] ^= LENGTH_TABLE[length - 1];\\n }\\n\\n return {\\n length: length,\\n value: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(valueBytes, {\\n signed: signed\\n }),\\n bytes: valueBytes\\n };\\n};\\n\\nvar normalizePath = function normalizePath(path) {\\n if (typeof path === 'string') {\\n return path.match(/.{1,2}/g).map(function (p) {\\n return normalizePath(p);\\n });\\n }\\n\\n if (typeof path === 'number') {\\n return Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"numberToBytes\\\"])(path);\\n }\\n\\n return path;\\n};\\n\\nvar normalizePaths = function normalizePaths(paths) {\\n if (!Array.isArray(paths)) {\\n return [normalizePath(paths)];\\n }\\n\\n return paths.map(function (p) {\\n return normalizePath(p);\\n });\\n};\\n\\nvar getInfinityDataSize = function getInfinityDataSize(id, bytes, offset) {\\n if (offset >= bytes.length) {\\n return bytes.length;\\n }\\n\\n var innerid = getvint(bytes, offset, false);\\n\\n if (Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(id.bytes, innerid.bytes)) {\\n return offset;\\n }\\n\\n var dataHeader = getvint(bytes, offset + innerid.length);\\n return getInfinityDataSize(id, bytes, offset + dataHeader.length + dataHeader.value + innerid.length);\\n};\\n/**\\n * Notes on the EBLM format.\\n *\\n * EBLM uses \\\"vints\\\" tags. Every vint tag contains\\n * two parts\\n *\\n * 1. The length from the first byte. You get this by\\n * converting the byte to binary and counting the zeros\\n * before a 1. Then you add 1 to that. Examples\\n * 00011111 = length 4 because there are 3 zeros before a 1.\\n * 00100000 = length 3 because there are 2 zeros before a 1.\\n * 00000011 = length 7 because there are 6 zeros before a 1.\\n *\\n * 2. The bits used for length are removed from the first byte\\n * Then all the bytes are merged into a value. NOTE: this\\n * is not the case for id ebml tags as there id includes\\n * length bits.\\n *\\n */\\n\\n\\nvar findEbml = function findEbml(bytes, paths) {\\n paths = normalizePaths(paths);\\n bytes = Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n var results = [];\\n\\n if (!paths.length) {\\n return results;\\n }\\n\\n var i = 0;\\n\\n while (i < bytes.length) {\\n var id = getvint(bytes, i, false);\\n var dataHeader = getvint(bytes, i + id.length);\\n var dataStart = i + id.length + dataHeader.length; // dataSize is unknown or this is a live stream\\n\\n if (dataHeader.value === 0x7f) {\\n dataHeader.value = getInfinityDataSize(id, bytes, dataStart);\\n\\n if (dataHeader.value !== bytes.length) {\\n dataHeader.value -= dataStart;\\n }\\n }\\n\\n var dataEnd = dataStart + dataHeader.value > bytes.length ? bytes.length : dataStart + dataHeader.value;\\n var data = bytes.subarray(dataStart, dataEnd);\\n\\n if (Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(paths[0], id.bytes)) {\\n if (paths.length === 1) {\\n // this is the end of the paths and we've found the tag we were\\n // looking for\\n results.push(data);\\n } else {\\n // recursively search for the next tag inside of the data\\n // of this one\\n results = results.concat(findEbml(data, paths.slice(1)));\\n }\\n }\\n\\n var totalLength = id.length + dataHeader.length + data.length; // move past this tag entirely, we are not looking for it\\n\\n i += totalLength;\\n }\\n\\n return results;\\n}; // see https://www.matroska.org/technical/basics.html#block-structure\\n\\nvar decodeBlock = function decodeBlock(block, type, timestampScale, clusterTimestamp) {\\n var duration;\\n\\n if (type === 'group') {\\n duration = findEbml(block, [EBML_TAGS.BlockDuration])[0];\\n\\n if (duration) {\\n duration = Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(duration);\\n duration = 1 / timestampScale * duration * timestampScale / 1000;\\n }\\n\\n block = findEbml(block, [EBML_TAGS.Block])[0];\\n type = 'block'; // treat data as a block after this point\\n }\\n\\n var dv = new DataView(block.buffer, block.byteOffset, block.byteLength);\\n var trackNumber = getvint(block, 0);\\n var timestamp = dv.getInt16(trackNumber.length, false);\\n var flags = block[trackNumber.length + 2];\\n var data = block.subarray(trackNumber.length + 3); // pts/dts in seconds\\n\\n var ptsdts = 1 / timestampScale * (clusterTimestamp + timestamp) * timestampScale / 1000; // return the frame\\n\\n var parsed = {\\n duration: duration,\\n trackNumber: trackNumber.value,\\n keyframe: type === 'simple' && flags >> 7 === 1,\\n invisible: (flags & 0x08) >> 3 === 1,\\n lacing: (flags & 0x06) >> 1,\\n discardable: type === 'simple' && (flags & 0x01) === 1,\\n frames: [],\\n pts: ptsdts,\\n dts: ptsdts,\\n timestamp: timestamp\\n };\\n\\n if (!parsed.lacing) {\\n parsed.frames.push(data);\\n return parsed;\\n }\\n\\n var numberOfFrames = data[0] + 1;\\n var frameSizes = [];\\n var offset = 1; // Fixed\\n\\n if (parsed.lacing === 2) {\\n var sizeOfFrame = (data.length - offset) / numberOfFrames;\\n\\n for (var i = 0; i < numberOfFrames; i++) {\\n frameSizes.push(sizeOfFrame);\\n }\\n } // xiph\\n\\n\\n if (parsed.lacing === 1) {\\n for (var _i = 0; _i < numberOfFrames - 1; _i++) {\\n var size = 0;\\n\\n do {\\n size += data[offset];\\n offset++;\\n } while (data[offset - 1] === 0xFF);\\n\\n frameSizes.push(size);\\n }\\n } // ebml\\n\\n\\n if (parsed.lacing === 3) {\\n // first vint is unsinged\\n // after that vints are singed and\\n // based on a compounding size\\n var _size = 0;\\n\\n for (var _i2 = 0; _i2 < numberOfFrames - 1; _i2++) {\\n var vint = _i2 === 0 ? getvint(data, offset) : getvint(data, offset, true, true);\\n _size += vint.value;\\n frameSizes.push(_size);\\n offset += vint.length;\\n }\\n }\\n\\n frameSizes.forEach(function (size) {\\n parsed.frames.push(data.subarray(offset, offset + size));\\n offset += size;\\n });\\n return parsed;\\n}; // VP9 Codec Feature Metadata (CodecPrivate)\\n// https://www.webmproject.org/docs/container/\\n\\nvar parseVp9Private = function parseVp9Private(bytes) {\\n var i = 0;\\n var params = {};\\n\\n while (i < bytes.length) {\\n var id = bytes[i] & 0x7f;\\n var len = bytes[i + 1];\\n var val = void 0;\\n\\n if (len === 1) {\\n val = bytes[i + 2];\\n } else {\\n val = bytes.subarray(i + 2, i + 2 + len);\\n }\\n\\n if (id === 1) {\\n params.profile = val;\\n } else if (id === 2) {\\n params.level = val;\\n } else if (id === 3) {\\n params.bitDepth = val;\\n } else if (id === 4) {\\n params.chromaSubsampling = val;\\n } else {\\n params[id] = val;\\n }\\n\\n i += 2 + len;\\n }\\n\\n return params;\\n};\\n\\nvar parseTracks = function parseTracks(bytes) {\\n bytes = Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n var decodedTracks = [];\\n var tracks = findEbml(bytes, [EBML_TAGS.Segment, EBML_TAGS.Tracks, EBML_TAGS.Track]);\\n\\n if (!tracks.length) {\\n tracks = findEbml(bytes, [EBML_TAGS.Tracks, EBML_TAGS.Track]);\\n }\\n\\n if (!tracks.length) {\\n tracks = findEbml(bytes, [EBML_TAGS.Track]);\\n }\\n\\n if (!tracks.length) {\\n return decodedTracks;\\n }\\n\\n tracks.forEach(function (track) {\\n var trackType = findEbml(track, EBML_TAGS.TrackType)[0];\\n\\n if (!trackType || !trackType.length) {\\n return;\\n } // 1 is video, 2 is audio, 17 is subtitle\\n // other values are unimportant in this context\\n\\n\\n if (trackType[0] === 1) {\\n trackType = 'video';\\n } else if (trackType[0] === 2) {\\n trackType = 'audio';\\n } else if (trackType[0] === 17) {\\n trackType = 'subtitle';\\n } else {\\n return;\\n } // todo parse language\\n\\n\\n var decodedTrack = {\\n rawCodec: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToString\\\"])(findEbml(track, [EBML_TAGS.CodecID])[0]),\\n type: trackType,\\n codecPrivate: findEbml(track, [EBML_TAGS.CodecPrivate])[0],\\n number: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(findEbml(track, [EBML_TAGS.TrackNumber])[0]),\\n defaultDuration: Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(findEbml(track, [EBML_TAGS.DefaultDuration])[0]),\\n default: findEbml(track, [EBML_TAGS.FlagDefault])[0],\\n rawData: track\\n };\\n var codec = '';\\n\\n if (/V_MPEG4\\\\/ISO\\\\/AVC/.test(decodedTrack.rawCodec)) {\\n codec = \\\"avc1.\\\" + Object(_codec_helpers_js__WEBPACK_IMPORTED_MODULE_1__[\\\"getAvcCodec\\\"])(decodedTrack.codecPrivate);\\n } else if (/V_MPEGH\\\\/ISO\\\\/HEVC/.test(decodedTrack.rawCodec)) {\\n codec = \\\"hev1.\\\" + Object(_codec_helpers_js__WEBPACK_IMPORTED_MODULE_1__[\\\"getHvcCodec\\\"])(decodedTrack.codecPrivate);\\n } else if (/V_MPEG4\\\\/ISO\\\\/ASP/.test(decodedTrack.rawCodec)) {\\n if (decodedTrack.codecPrivate) {\\n codec = 'mp4v.20.' + decodedTrack.codecPrivate[4].toString();\\n } else {\\n codec = 'mp4v.20.9';\\n }\\n } else if (/^V_THEORA/.test(decodedTrack.rawCodec)) {\\n codec = 'theora';\\n } else if (/^V_VP8/.test(decodedTrack.rawCodec)) {\\n codec = 'vp8';\\n } else if (/^V_VP9/.test(decodedTrack.rawCodec)) {\\n if (decodedTrack.codecPrivate) {\\n var _parseVp9Private = parseVp9Private(decodedTrack.codecPrivate),\\n profile = _parseVp9Private.profile,\\n level = _parseVp9Private.level,\\n bitDepth = _parseVp9Private.bitDepth,\\n chromaSubsampling = _parseVp9Private.chromaSubsampling;\\n\\n codec = 'vp09.';\\n codec += Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(profile, 2, '0') + \\\".\\\";\\n codec += Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(level, 2, '0') + \\\".\\\";\\n codec += Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(bitDepth, 2, '0') + \\\".\\\";\\n codec += \\\"\\\" + Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(chromaSubsampling, 2, '0'); // Video -> Colour -> Ebml name\\n\\n var matrixCoefficients = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xB1]])[0] || [];\\n var videoFullRangeFlag = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xB9]])[0] || [];\\n var transferCharacteristics = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xBA]])[0] || [];\\n var colourPrimaries = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xBB]])[0] || []; // if we find any optional codec parameter specify them all.\\n\\n if (matrixCoefficients.length || videoFullRangeFlag.length || transferCharacteristics.length || colourPrimaries.length) {\\n codec += \\\".\\\" + Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(colourPrimaries[0], 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(transferCharacteristics[0], 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(matrixCoefficients[0], 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(videoFullRangeFlag[0], 2, '0');\\n }\\n } else {\\n codec = 'vp9';\\n }\\n } else if (/^V_AV1/.test(decodedTrack.rawCodec)) {\\n codec = \\\"av01.\\\" + Object(_codec_helpers_js__WEBPACK_IMPORTED_MODULE_1__[\\\"getAv1Codec\\\"])(decodedTrack.codecPrivate);\\n } else if (/A_ALAC/.test(decodedTrack.rawCodec)) {\\n codec = 'alac';\\n } else if (/A_MPEG\\\\/L2/.test(decodedTrack.rawCodec)) {\\n codec = 'mp2';\\n } else if (/A_MPEG\\\\/L3/.test(decodedTrack.rawCodec)) {\\n codec = 'mp3';\\n } else if (/^A_AAC/.test(decodedTrack.rawCodec)) {\\n if (decodedTrack.codecPrivate) {\\n codec = 'mp4a.40.' + (decodedTrack.codecPrivate[0] >>> 3).toString();\\n } else {\\n codec = 'mp4a.40.2';\\n }\\n } else if (/^A_AC3/.test(decodedTrack.rawCodec)) {\\n codec = 'ac-3';\\n } else if (/^A_PCM/.test(decodedTrack.rawCodec)) {\\n codec = 'pcm';\\n } else if (/^A_MS\\\\/ACM/.test(decodedTrack.rawCodec)) {\\n codec = 'speex';\\n } else if (/^A_EAC3/.test(decodedTrack.rawCodec)) {\\n codec = 'ec-3';\\n } else if (/^A_VORBIS/.test(decodedTrack.rawCodec)) {\\n codec = 'vorbis';\\n } else if (/^A_FLAC/.test(decodedTrack.rawCodec)) {\\n codec = 'flac';\\n } else if (/^A_OPUS/.test(decodedTrack.rawCodec)) {\\n codec = 'opus';\\n }\\n\\n decodedTrack.codec = codec;\\n decodedTracks.push(decodedTrack);\\n });\\n return decodedTracks.sort(function (a, b) {\\n return a.number - b.number;\\n });\\n};\\nvar parseData = function parseData(data, tracks) {\\n var allBlocks = [];\\n var segment = findEbml(data, [EBML_TAGS.Segment])[0];\\n var timestampScale = findEbml(segment, [EBML_TAGS.SegmentInfo, EBML_TAGS.TimestampScale])[0]; // in nanoseconds, defaults to 1ms\\n\\n if (timestampScale && timestampScale.length) {\\n timestampScale = Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(timestampScale);\\n } else {\\n timestampScale = 1000000;\\n }\\n\\n var clusters = findEbml(segment, [EBML_TAGS.Cluster]);\\n\\n if (!tracks) {\\n tracks = parseTracks(segment);\\n }\\n\\n clusters.forEach(function (cluster, ci) {\\n var simpleBlocks = findEbml(cluster, [EBML_TAGS.SimpleBlock]).map(function (b) {\\n return {\\n type: 'simple',\\n data: b\\n };\\n });\\n var blockGroups = findEbml(cluster, [EBML_TAGS.BlockGroup]).map(function (b) {\\n return {\\n type: 'group',\\n data: b\\n };\\n });\\n var timestamp = findEbml(cluster, [EBML_TAGS.Timestamp])[0] || 0;\\n\\n if (timestamp && timestamp.length) {\\n timestamp = Object(_byte_helpers__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(timestamp);\\n } // get all blocks then sort them into the correct order\\n\\n\\n var blocks = simpleBlocks.concat(blockGroups).sort(function (a, b) {\\n return a.data.byteOffset - b.data.byteOffset;\\n });\\n blocks.forEach(function (block, bi) {\\n var decoded = decodeBlock(block.data, block.type, timestampScale, timestamp);\\n allBlocks.push(decoded);\\n });\\n });\\n return {\\n tracks: tracks,\\n blocks: allBlocks\\n };\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/ebml-helpers.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/id3-helpers.js\":\n/*!************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/id3-helpers.js ***!\n \\************************************************************/\n/*! exports provided: getId3Size, getId3Offset */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"getId3Size\\\", function() { return getId3Size; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"getId3Offset\\\", function() { return getId3Offset; });\\n/* harmony import */ var _byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./byte-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/byte-helpers.js\\\");\\n\\nvar ID3 = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x49, 0x44, 0x33]);\\nvar getId3Size = function getId3Size(bytes, offset) {\\n if (offset === void 0) {\\n offset = 0;\\n }\\n\\n bytes = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n var flags = bytes[offset + 5];\\n var returnSize = bytes[offset + 6] << 21 | bytes[offset + 7] << 14 | bytes[offset + 8] << 7 | bytes[offset + 9];\\n var footerPresent = (flags & 16) >> 4;\\n\\n if (footerPresent) {\\n return returnSize + 20;\\n }\\n\\n return returnSize + 10;\\n};\\nvar getId3Offset = function getId3Offset(bytes, offset) {\\n if (offset === void 0) {\\n offset = 0;\\n }\\n\\n bytes = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n\\n if (bytes.length - offset < 10 || !Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes, ID3, {\\n offset: offset\\n })) {\\n return offset;\\n }\\n\\n offset += getId3Size(bytes, offset); // recursive check for id3 tags as some files\\n // have multiple ID3 tag sections even though\\n // they should not.\\n\\n return getId3Offset(bytes, offset);\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/id3-helpers.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/media-types.js\":\n/*!************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/media-types.js ***!\n \\************************************************************/\n/*! exports provided: simpleTypeFromSourceType */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"simpleTypeFromSourceType\\\", function() { return simpleTypeFromSourceType; });\\nvar MPEGURL_REGEX = /^(audio|video|application)\\\\/(x-|vnd\\\\.apple\\\\.)?mpegurl/i;\\nvar DASH_REGEX = /^application\\\\/dash\\\\+xml/i;\\n/**\\n * Returns a string that describes the type of source based on a video source object's\\n * media type.\\n *\\n * @see {@link https://dev.w3.org/html5/pf-summary/video.html#dom-source-type|Source Type}\\n *\\n * @param {string} type\\n * Video source object media type\\n * @return {('hls'|'dash'|'vhs-json'|null)}\\n * VHS source type string\\n */\\n\\nvar simpleTypeFromSourceType = function simpleTypeFromSourceType(type) {\\n if (MPEGURL_REGEX.test(type)) {\\n return 'hls';\\n }\\n\\n if (DASH_REGEX.test(type)) {\\n return 'dash';\\n } // Denotes the special case of a manifest object passed to http-streaming instead of a\\n // source URL.\\n //\\n // See https://en.wikipedia.org/wiki/Media_type for details on specifying media types.\\n //\\n // In this case, vnd stands for vendor, video.js for the organization, VHS for this\\n // project, and the +json suffix identifies the structure of the media type.\\n\\n\\n if (type === 'application/vnd.videojs.vhs+json') {\\n return 'vhs-json';\\n }\\n\\n return null;\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/media-types.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/mp4-helpers.js\":\n/*!************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/mp4-helpers.js ***!\n \\************************************************************/\n/*! exports provided: parseDescriptors, findBox, findNamedBox, buildFrameTable, addSampleDescription, parseTracks, parseMediaInfo */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"parseDescriptors\\\", function() { return parseDescriptors; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"findBox\\\", function() { return findBox; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"findNamedBox\\\", function() { return findNamedBox; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"buildFrameTable\\\", function() { return buildFrameTable; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"addSampleDescription\\\", function() { return addSampleDescription; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"parseTracks\\\", function() { return parseTracks; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"parseMediaInfo\\\", function() { return parseMediaInfo; });\\n/* harmony import */ var _byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./byte-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/byte-helpers.js\\\");\\n/* harmony import */ var _codec_helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./codec-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/codec-helpers.js\\\");\\n/* harmony import */ var _opus_helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./opus-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/opus-helpers.js\\\");\\n\\n\\n\\n\\nvar normalizePath = function normalizePath(path) {\\n if (typeof path === 'string') {\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"stringToBytes\\\"])(path);\\n }\\n\\n if (typeof path === 'number') {\\n return path;\\n }\\n\\n return path;\\n};\\n\\nvar normalizePaths = function normalizePaths(paths) {\\n if (!Array.isArray(paths)) {\\n return [normalizePath(paths)];\\n }\\n\\n return paths.map(function (p) {\\n return normalizePath(p);\\n });\\n};\\n\\nvar DESCRIPTORS;\\nvar parseDescriptors = function parseDescriptors(bytes) {\\n bytes = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n var results = [];\\n var i = 0;\\n\\n while (bytes.length > i) {\\n var tag = bytes[i];\\n var size = 0;\\n var headerSize = 0; // tag\\n\\n headerSize++;\\n var byte = bytes[headerSize]; // first byte\\n\\n headerSize++;\\n\\n while (byte & 0x80) {\\n size = (byte & 0x7F) << 7;\\n byte = bytes[headerSize];\\n headerSize++;\\n }\\n\\n size += byte & 0x7F;\\n\\n for (var z = 0; z < DESCRIPTORS.length; z++) {\\n var _DESCRIPTORS$z = DESCRIPTORS[z],\\n id = _DESCRIPTORS$z.id,\\n parser = _DESCRIPTORS$z.parser;\\n\\n if (tag === id) {\\n results.push(parser(bytes.subarray(headerSize, headerSize + size)));\\n break;\\n }\\n }\\n\\n i += size + headerSize;\\n }\\n\\n return results;\\n};\\nDESCRIPTORS = [{\\n id: 0x03,\\n parser: function parser(bytes) {\\n var desc = {\\n tag: 0x03,\\n id: bytes[0] << 8 | bytes[1],\\n flags: bytes[2],\\n size: 3,\\n dependsOnEsId: 0,\\n ocrEsId: 0,\\n descriptors: [],\\n url: ''\\n }; // depends on es id\\n\\n if (desc.flags & 0x80) {\\n desc.dependsOnEsId = bytes[desc.size] << 8 | bytes[desc.size + 1];\\n desc.size += 2;\\n } // url\\n\\n\\n if (desc.flags & 0x40) {\\n var len = bytes[desc.size];\\n desc.url = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToString\\\"])(bytes.subarray(desc.size + 1, desc.size + 1 + len));\\n desc.size += len;\\n } // ocr es id\\n\\n\\n if (desc.flags & 0x20) {\\n desc.ocrEsId = bytes[desc.size] << 8 | bytes[desc.size + 1];\\n desc.size += 2;\\n }\\n\\n desc.descriptors = parseDescriptors(bytes.subarray(desc.size)) || [];\\n return desc;\\n }\\n}, {\\n id: 0x04,\\n parser: function parser(bytes) {\\n // DecoderConfigDescriptor\\n var desc = {\\n tag: 0x04,\\n oti: bytes[0],\\n streamType: bytes[1],\\n bufferSize: bytes[2] << 16 | bytes[3] << 8 | bytes[4],\\n maxBitrate: bytes[5] << 24 | bytes[6] << 16 | bytes[7] << 8 | bytes[8],\\n avgBitrate: bytes[9] << 24 | bytes[10] << 16 | bytes[11] << 8 | bytes[12],\\n descriptors: parseDescriptors(bytes.subarray(13))\\n };\\n return desc;\\n }\\n}, {\\n id: 0x05,\\n parser: function parser(bytes) {\\n // DecoderSpecificInfo\\n return {\\n tag: 0x05,\\n bytes: bytes\\n };\\n }\\n}, {\\n id: 0x06,\\n parser: function parser(bytes) {\\n // SLConfigDescriptor\\n return {\\n tag: 0x06,\\n bytes: bytes\\n };\\n }\\n}];\\n/**\\n * find any number of boxes by name given a path to it in an iso bmff\\n * such as mp4.\\n *\\n * @param {TypedArray} bytes\\n * bytes for the iso bmff to search for boxes in\\n *\\n * @param {Uint8Array[]|string[]|string|Uint8Array} name\\n * An array of paths or a single path representing the name\\n * of boxes to search through in bytes. Paths may be\\n * uint8 (character codes) or strings.\\n *\\n * @param {boolean} [complete=false]\\n * Should we search only for complete boxes on the final path.\\n * This is very useful when you do not want to get back partial boxes\\n * in the case of streaming files.\\n *\\n * @return {Uint8Array[]}\\n * An array of the end paths that we found.\\n */\\n\\nvar findBox = function findBox(bytes, paths, complete) {\\n if (complete === void 0) {\\n complete = false;\\n }\\n\\n paths = normalizePaths(paths);\\n bytes = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n var results = [];\\n\\n if (!paths.length) {\\n // short-circuit the search for empty paths\\n return results;\\n }\\n\\n var i = 0;\\n\\n while (i < bytes.length) {\\n var size = (bytes[i] << 24 | bytes[i + 1] << 16 | bytes[i + 2] << 8 | bytes[i + 3]) >>> 0;\\n var type = bytes.subarray(i + 4, i + 8); // invalid box format.\\n\\n if (size === 0) {\\n break;\\n }\\n\\n var end = i + size;\\n\\n if (end > bytes.length) {\\n // this box is bigger than the number of bytes we have\\n // and complete is set, we cannot find any more boxes.\\n if (complete) {\\n break;\\n }\\n\\n end = bytes.length;\\n }\\n\\n var data = bytes.subarray(i + 8, end);\\n\\n if (Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(type, paths[0])) {\\n if (paths.length === 1) {\\n // this is the end of the path and we've found the box we were\\n // looking for\\n results.push(data);\\n } else {\\n // recursively search for the next box along the path\\n results.push.apply(results, findBox(data, paths.slice(1), complete));\\n }\\n }\\n\\n i = end;\\n } // we've finished searching all of bytes\\n\\n\\n return results;\\n};\\n/**\\n * Search for a single matching box by name in an iso bmff format like\\n * mp4. This function is useful for finding codec boxes which\\n * can be placed arbitrarily in sample descriptions depending\\n * on the version of the file or file type.\\n *\\n * @param {TypedArray} bytes\\n * bytes for the iso bmff to search for boxes in\\n *\\n * @param {string|Uint8Array} name\\n * The name of the box to find.\\n *\\n * @return {Uint8Array[]}\\n * a subarray of bytes representing the name boxed we found.\\n */\\n\\nvar findNamedBox = function findNamedBox(bytes, name) {\\n name = normalizePath(name);\\n\\n if (!name.length) {\\n // short-circuit the search for empty paths\\n return bytes.subarray(bytes.length);\\n }\\n\\n var i = 0;\\n\\n while (i < bytes.length) {\\n if (Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes.subarray(i, i + name.length), name)) {\\n var size = (bytes[i - 4] << 24 | bytes[i - 3] << 16 | bytes[i - 2] << 8 | bytes[i - 1]) >>> 0;\\n var end = size > 1 ? i + size : bytes.byteLength;\\n return bytes.subarray(i + 4, end);\\n }\\n\\n i++;\\n } // we've finished searching all of bytes\\n\\n\\n return bytes.subarray(bytes.length);\\n};\\n\\nvar parseSamples = function parseSamples(data, entrySize, parseEntry) {\\n if (entrySize === void 0) {\\n entrySize = 4;\\n }\\n\\n if (parseEntry === void 0) {\\n parseEntry = function parseEntry(d) {\\n return Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(d);\\n };\\n }\\n\\n var entries = [];\\n\\n if (!data || !data.length) {\\n return entries;\\n }\\n\\n var entryCount = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(data.subarray(4, 8));\\n\\n for (var i = 8; entryCount; i += entrySize, entryCount--) {\\n entries.push(parseEntry(data.subarray(i, i + entrySize)));\\n }\\n\\n return entries;\\n};\\n\\nvar buildFrameTable = function buildFrameTable(stbl, timescale) {\\n var keySamples = parseSamples(findBox(stbl, ['stss'])[0]);\\n var chunkOffsets = parseSamples(findBox(stbl, ['stco'])[0]);\\n var timeToSamples = parseSamples(findBox(stbl, ['stts'])[0], 8, function (entry) {\\n return {\\n sampleCount: Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(entry.subarray(0, 4)),\\n sampleDelta: Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(entry.subarray(4, 8))\\n };\\n });\\n var samplesToChunks = parseSamples(findBox(stbl, ['stsc'])[0], 12, function (entry) {\\n return {\\n firstChunk: Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(entry.subarray(0, 4)),\\n samplesPerChunk: Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(entry.subarray(4, 8)),\\n sampleDescriptionIndex: Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(entry.subarray(8, 12))\\n };\\n });\\n var stsz = findBox(stbl, ['stsz'])[0]; // stsz starts with a 4 byte sampleSize which we don't need\\n\\n var sampleSizes = parseSamples(stsz && stsz.length && stsz.subarray(4) || null);\\n var frames = [];\\n\\n for (var chunkIndex = 0; chunkIndex < chunkOffsets.length; chunkIndex++) {\\n var samplesInChunk = void 0;\\n\\n for (var i = 0; i < samplesToChunks.length; i++) {\\n var sampleToChunk = samplesToChunks[i];\\n var isThisOne = chunkIndex + 1 >= sampleToChunk.firstChunk && (i + 1 >= samplesToChunks.length || chunkIndex + 1 < samplesToChunks[i + 1].firstChunk);\\n\\n if (isThisOne) {\\n samplesInChunk = sampleToChunk.samplesPerChunk;\\n break;\\n }\\n }\\n\\n var chunkOffset = chunkOffsets[chunkIndex];\\n\\n for (var _i = 0; _i < samplesInChunk; _i++) {\\n var frameEnd = sampleSizes[frames.length]; // if we don't have key samples every frame is a keyframe\\n\\n var keyframe = !keySamples.length;\\n\\n if (keySamples.length && keySamples.indexOf(frames.length + 1) !== -1) {\\n keyframe = true;\\n }\\n\\n var frame = {\\n keyframe: keyframe,\\n start: chunkOffset,\\n end: chunkOffset + frameEnd\\n };\\n\\n for (var k = 0; k < timeToSamples.length; k++) {\\n var _timeToSamples$k = timeToSamples[k],\\n sampleCount = _timeToSamples$k.sampleCount,\\n sampleDelta = _timeToSamples$k.sampleDelta;\\n\\n if (frames.length <= sampleCount) {\\n // ms to ns\\n var lastTimestamp = frames.length ? frames[frames.length - 1].timestamp : 0;\\n frame.timestamp = lastTimestamp + sampleDelta / timescale * 1000;\\n frame.duration = sampleDelta;\\n break;\\n }\\n }\\n\\n frames.push(frame);\\n chunkOffset += frameEnd;\\n }\\n }\\n\\n return frames;\\n};\\nvar addSampleDescription = function addSampleDescription(track, bytes) {\\n var codec = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToString\\\"])(bytes.subarray(0, 4));\\n\\n if (track.type === 'video') {\\n track.info = track.info || {};\\n track.info.width = bytes[28] << 8 | bytes[29];\\n track.info.height = bytes[30] << 8 | bytes[31];\\n } else if (track.type === 'audio') {\\n track.info = track.info || {};\\n track.info.channels = bytes[20] << 8 | bytes[21];\\n track.info.bitDepth = bytes[22] << 8 | bytes[23];\\n track.info.sampleRate = bytes[28] << 8 | bytes[29];\\n }\\n\\n if (codec === 'avc1') {\\n var avcC = findNamedBox(bytes, 'avcC'); // AVCDecoderConfigurationRecord\\n\\n codec += \\\".\\\" + Object(_codec_helpers_js__WEBPACK_IMPORTED_MODULE_1__[\\\"getAvcCodec\\\"])(avcC);\\n track.info.avcC = avcC; // TODO: do we need to parse all this?\\n\\n /* {\\n configurationVersion: avcC[0],\\n profile: avcC[1],\\n profileCompatibility: avcC[2],\\n level: avcC[3],\\n lengthSizeMinusOne: avcC[4] & 0x3\\n };\\n let spsNalUnitCount = avcC[5] & 0x1F;\\n const spsNalUnits = track.info.avc.spsNalUnits = [];\\n // past spsNalUnitCount\\n let offset = 6;\\n while (spsNalUnitCount--) {\\n const nalLen = avcC[offset] << 8 | avcC[offset + 1];\\n spsNalUnits.push(avcC.subarray(offset + 2, offset + 2 + nalLen));\\n offset += nalLen + 2;\\n }\\n let ppsNalUnitCount = avcC[offset];\\n const ppsNalUnits = track.info.avc.ppsNalUnits = [];\\n // past ppsNalUnitCount\\n offset += 1;\\n while (ppsNalUnitCount--) {\\n const nalLen = avcC[offset] << 8 | avcC[offset + 1];\\n ppsNalUnits.push(avcC.subarray(offset + 2, offset + 2 + nalLen));\\n offset += nalLen + 2;\\n }*/\\n // HEVCDecoderConfigurationRecord\\n } else if (codec === 'hvc1' || codec === 'hev1') {\\n codec += \\\".\\\" + Object(_codec_helpers_js__WEBPACK_IMPORTED_MODULE_1__[\\\"getHvcCodec\\\"])(findNamedBox(bytes, 'hvcC'));\\n } else if (codec === 'mp4a' || codec === 'mp4v') {\\n var esds = findNamedBox(bytes, 'esds');\\n var esDescriptor = parseDescriptors(esds.subarray(4))[0];\\n var decoderConfig = esDescriptor && esDescriptor.descriptors.filter(function (_ref) {\\n var tag = _ref.tag;\\n return tag === 0x04;\\n })[0];\\n\\n if (decoderConfig) {\\n // most codecs do not have a further '.'\\n // such as 0xa5 for ac-3 and 0xa6 for e-ac-3\\n codec += '.' + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toHexString\\\"])(decoderConfig.oti);\\n\\n if (decoderConfig.oti === 0x40) {\\n codec += '.' + (decoderConfig.descriptors[0].bytes[0] >> 3).toString();\\n } else if (decoderConfig.oti === 0x20) {\\n codec += '.' + decoderConfig.descriptors[0].bytes[4].toString();\\n } else if (decoderConfig.oti === 0xdd) {\\n codec = 'vorbis';\\n }\\n } else if (track.type === 'audio') {\\n codec += '.40.2';\\n } else {\\n codec += '.20.9';\\n }\\n } else if (codec === 'av01') {\\n // AV1DecoderConfigurationRecord\\n codec += \\\".\\\" + Object(_codec_helpers_js__WEBPACK_IMPORTED_MODULE_1__[\\\"getAv1Codec\\\"])(findNamedBox(bytes, 'av1C'));\\n } else if (codec === 'vp09') {\\n // VPCodecConfigurationRecord\\n var vpcC = findNamedBox(bytes, 'vpcC'); // https://www.webmproject.org/vp9/mp4/\\n\\n var profile = vpcC[0];\\n var level = vpcC[1];\\n var bitDepth = vpcC[2] >> 4;\\n var chromaSubsampling = (vpcC[2] & 0x0F) >> 1;\\n var videoFullRangeFlag = (vpcC[2] & 0x0F) >> 3;\\n var colourPrimaries = vpcC[3];\\n var transferCharacteristics = vpcC[4];\\n var matrixCoefficients = vpcC[5];\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(profile, 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(level, 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(bitDepth, 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(chromaSubsampling, 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(colourPrimaries, 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(transferCharacteristics, 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(matrixCoefficients, 2, '0');\\n codec += \\\".\\\" + Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"padStart\\\"])(videoFullRangeFlag, 2, '0');\\n } else if (codec === 'theo') {\\n codec = 'theora';\\n } else if (codec === 'spex') {\\n codec = 'speex';\\n } else if (codec === '.mp3') {\\n codec = 'mp4a.40.34';\\n } else if (codec === 'msVo') {\\n codec = 'vorbis';\\n } else if (codec === 'Opus') {\\n codec = 'opus';\\n var dOps = findNamedBox(bytes, 'dOps');\\n track.info.opus = Object(_opus_helpers_js__WEBPACK_IMPORTED_MODULE_2__[\\\"parseOpusHead\\\"])(dOps); // TODO: should this go into the webm code??\\n // Firefox requires a codecDelay for opus playback\\n // see https://bugzilla.mozilla.org/show_bug.cgi?id=1276238\\n\\n track.info.codecDelay = 6500000;\\n } else {\\n codec = codec.toLowerCase();\\n }\\n /* eslint-enable */\\n // flac, ac-3, ec-3, opus\\n\\n\\n track.codec = codec;\\n};\\nvar parseTracks = function parseTracks(bytes, frameTable) {\\n if (frameTable === void 0) {\\n frameTable = true;\\n }\\n\\n bytes = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n var traks = findBox(bytes, ['moov', 'trak'], true);\\n var tracks = [];\\n traks.forEach(function (trak) {\\n var track = {\\n bytes: trak\\n };\\n var mdia = findBox(trak, ['mdia'])[0];\\n var hdlr = findBox(mdia, ['hdlr'])[0];\\n var trakType = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToString\\\"])(hdlr.subarray(8, 12));\\n\\n if (trakType === 'soun') {\\n track.type = 'audio';\\n } else if (trakType === 'vide') {\\n track.type = 'video';\\n } else {\\n track.type = trakType;\\n }\\n\\n var tkhd = findBox(trak, ['tkhd'])[0];\\n\\n if (tkhd) {\\n var view = new DataView(tkhd.buffer, tkhd.byteOffset, tkhd.byteLength);\\n var tkhdVersion = view.getUint8(0);\\n track.number = tkhdVersion === 0 ? view.getUint32(12) : view.getUint32(20);\\n }\\n\\n var mdhd = findBox(mdia, ['mdhd'])[0];\\n\\n if (mdhd) {\\n // mdhd is a FullBox, meaning it will have its own version as the first byte\\n var version = mdhd[0];\\n var index = version === 0 ? 12 : 20;\\n track.timescale = (mdhd[index] << 24 | mdhd[index + 1] << 16 | mdhd[index + 2] << 8 | mdhd[index + 3]) >>> 0;\\n }\\n\\n var stbl = findBox(mdia, ['minf', 'stbl'])[0];\\n var stsd = findBox(stbl, ['stsd'])[0];\\n var descriptionCount = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(stsd.subarray(4, 8));\\n var offset = 8; // add codec and codec info\\n\\n while (descriptionCount--) {\\n var len = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(stsd.subarray(offset, offset + 4));\\n var sampleDescriptor = stsd.subarray(offset + 4, offset + 4 + len);\\n addSampleDescription(track, sampleDescriptor);\\n offset += 4 + len;\\n }\\n\\n if (frameTable) {\\n track.frameTable = buildFrameTable(stbl, track.timescale);\\n } // codec has no sub parameters\\n\\n\\n tracks.push(track);\\n });\\n return tracks;\\n};\\nvar parseMediaInfo = function parseMediaInfo(bytes) {\\n var mvhd = findBox(bytes, ['moov', 'mvhd'], true)[0];\\n\\n if (!mvhd || !mvhd.length) {\\n return;\\n }\\n\\n var info = {}; // ms to ns\\n // mvhd v1 has 8 byte duration and other fields too\\n\\n if (mvhd[0] === 1) {\\n info.timestampScale = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(mvhd.subarray(20, 24));\\n info.duration = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(mvhd.subarray(24, 32));\\n } else {\\n info.timestampScale = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(mvhd.subarray(12, 16));\\n info.duration = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesToNumber\\\"])(mvhd.subarray(16, 20));\\n }\\n\\n info.bytes = mvhd;\\n return info;\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/mp4-helpers.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/nal-helpers.js\":\n/*!************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/nal-helpers.js ***!\n \\************************************************************/\n/*! exports provided: NAL_TYPE_ONE, NAL_TYPE_TWO, EMULATION_PREVENTION, discardEmulationPreventionBytes, findNal, findH264Nal, findH265Nal */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"NAL_TYPE_ONE\\\", function() { return NAL_TYPE_ONE; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"NAL_TYPE_TWO\\\", function() { return NAL_TYPE_TWO; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"EMULATION_PREVENTION\\\", function() { return EMULATION_PREVENTION; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"discardEmulationPreventionBytes\\\", function() { return discardEmulationPreventionBytes; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"findNal\\\", function() { return findNal; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"findH264Nal\\\", function() { return findH264Nal; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"findH265Nal\\\", function() { return findH265Nal; });\\n/* harmony import */ var _byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./byte-helpers.js */ \\\"../node_modules/@videojs/vhs-utils/es/byte-helpers.js\\\");\\n\\nvar NAL_TYPE_ONE = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x00, 0x00, 0x00, 0x01]);\\nvar NAL_TYPE_TWO = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x00, 0x00, 0x01]);\\nvar EMULATION_PREVENTION = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])([0x00, 0x00, 0x03]);\\n/**\\n * Expunge any \\\"Emulation Prevention\\\" bytes from a \\\"Raw Byte\\n * Sequence Payload\\\"\\n *\\n * @param data {Uint8Array} the bytes of a RBSP from a NAL\\n * unit\\n * @return {Uint8Array} the RBSP without any Emulation\\n * Prevention Bytes\\n */\\n\\nvar discardEmulationPreventionBytes = function discardEmulationPreventionBytes(bytes) {\\n var positions = [];\\n var i = 1; // Find all `Emulation Prevention Bytes`\\n\\n while (i < bytes.length - 2) {\\n if (Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes.subarray(i, i + 3), EMULATION_PREVENTION)) {\\n positions.push(i + 2);\\n i++;\\n }\\n\\n i++;\\n } // If no Emulation Prevention Bytes were found just return the original\\n // array\\n\\n\\n if (positions.length === 0) {\\n return bytes;\\n } // Create a new array to hold the NAL unit data\\n\\n\\n var newLength = bytes.length - positions.length;\\n var newData = new Uint8Array(newLength);\\n var sourceIndex = 0;\\n\\n for (i = 0; i < newLength; sourceIndex++, i++) {\\n if (sourceIndex === positions[0]) {\\n // Skip this byte\\n sourceIndex++; // Remove this position index\\n\\n positions.shift();\\n }\\n\\n newData[i] = bytes[sourceIndex];\\n }\\n\\n return newData;\\n};\\nvar findNal = function findNal(bytes, dataType, types, nalLimit) {\\n if (nalLimit === void 0) {\\n nalLimit = Infinity;\\n }\\n\\n bytes = Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"toUint8\\\"])(bytes);\\n types = [].concat(types);\\n var i = 0;\\n var nalStart;\\n var nalsFound = 0; // keep searching until:\\n // we reach the end of bytes\\n // we reach the maximum number of nals they want to seach\\n // NOTE: that we disregard nalLimit when we have found the start\\n // of the nal we want so that we can find the end of the nal we want.\\n\\n while (i < bytes.length && (nalsFound < nalLimit || nalStart)) {\\n var nalOffset = void 0;\\n\\n if (Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes.subarray(i), NAL_TYPE_ONE)) {\\n nalOffset = 4;\\n } else if (Object(_byte_helpers_js__WEBPACK_IMPORTED_MODULE_0__[\\\"bytesMatch\\\"])(bytes.subarray(i), NAL_TYPE_TWO)) {\\n nalOffset = 3;\\n } // we are unsynced,\\n // find the next nal unit\\n\\n\\n if (!nalOffset) {\\n i++;\\n continue;\\n }\\n\\n nalsFound++;\\n\\n if (nalStart) {\\n return discardEmulationPreventionBytes(bytes.subarray(nalStart, i));\\n }\\n\\n var nalType = void 0;\\n\\n if (dataType === 'h264') {\\n nalType = bytes[i + nalOffset] & 0x1f;\\n } else if (dataType === 'h265') {\\n nalType = bytes[i + nalOffset] >> 1 & 0x3f;\\n }\\n\\n if (types.indexOf(nalType) !== -1) {\\n nalStart = i + nalOffset;\\n } // nal header is 1 length for h264, and 2 for h265\\n\\n\\n i += nalOffset + (dataType === 'h264' ? 1 : 2);\\n }\\n\\n return bytes.subarray(0, 0);\\n};\\nvar findH264Nal = function findH264Nal(bytes, type, nalLimit) {\\n return findNal(bytes, 'h264', type, nalLimit);\\n};\\nvar findH265Nal = function findH265Nal(bytes, type, nalLimit) {\\n return findNal(bytes, 'h265', type, nalLimit);\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/nal-helpers.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/opus-helpers.js\":\n/*!*************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/opus-helpers.js ***!\n \\*************************************************************/\n/*! exports provided: OPUS_HEAD, parseOpusHead, setOpusHead */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"OPUS_HEAD\\\", function() { return OPUS_HEAD; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"parseOpusHead\\\", function() { return parseOpusHead; });\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"setOpusHead\\\", function() { return setOpusHead; });\\nvar OPUS_HEAD = new Uint8Array([// O, p, u, s\\n0x4f, 0x70, 0x75, 0x73, // H, e, a, d\\n0x48, 0x65, 0x61, 0x64]); // https://wiki.xiph.org/OggOpus\\n// https://vfrmaniac.fushizen.eu/contents/opus_in_isobmff.html\\n// https://opus-codec.org/docs/opusfile_api-0.7/structOpusHead.html\\n\\nvar parseOpusHead = function parseOpusHead(bytes) {\\n var view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\\n var version = view.getUint8(0); // version 0, from mp4, does not use littleEndian.\\n\\n var littleEndian = version !== 0;\\n var config = {\\n version: version,\\n channels: view.getUint8(1),\\n preSkip: view.getUint16(2, littleEndian),\\n sampleRate: view.getUint32(4, littleEndian),\\n outputGain: view.getUint16(8, littleEndian),\\n channelMappingFamily: view.getUint8(10)\\n };\\n\\n if (config.channelMappingFamily > 0 && bytes.length > 10) {\\n config.streamCount = view.getUint8(11);\\n config.twoChannelStreamCount = view.getUint8(12);\\n config.channelMapping = [];\\n\\n for (var c = 0; c < config.channels; c++) {\\n config.channelMapping.push(view.getUint8(13 + c));\\n }\\n }\\n\\n return config;\\n};\\nvar setOpusHead = function setOpusHead(config) {\\n var size = config.channelMappingFamily <= 0 ? 11 : 12 + config.channels;\\n var view = new DataView(new ArrayBuffer(size));\\n var littleEndian = config.version !== 0;\\n view.setUint8(0, config.version);\\n view.setUint8(1, config.channels);\\n view.setUint16(2, config.preSkip, littleEndian);\\n view.setUint32(4, config.sampleRate, littleEndian);\\n view.setUint16(8, config.outputGain, littleEndian);\\n view.setUint8(10, config.channelMappingFamily);\\n\\n if (config.channelMappingFamily > 0) {\\n view.setUint8(11, config.streamCount);\\n config.channelMapping.foreach(function (cm, i) {\\n view.setUint8(12 + i, cm);\\n });\\n }\\n\\n return new Uint8Array(view.buffer);\\n};\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/opus-helpers.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/es/resolve-url.js\":\n/*!************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/es/resolve-url.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! url-toolkit */ \\\"../node_modules/@videojs/vhs-utils/node_modules/url-toolkit/src/url-toolkit.js\\\");\\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(url_toolkit__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var global_window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! global/window */ \\\"../node_modules/global/window.js\\\");\\n/* harmony import */ var global_window__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(global_window__WEBPACK_IMPORTED_MODULE_1__);\\n\\n\\nvar DEFAULT_LOCATION = 'http://example.com';\\n\\nvar resolveUrl = function resolveUrl(baseUrl, relativeUrl) {\\n // return early if we don't need to resolve\\n if (/^[a-z]+:/i.test(relativeUrl)) {\\n return relativeUrl;\\n } // if baseUrl is a data URI, ignore it and resolve everything relative to window.location\\n\\n\\n if (/^data:/.test(baseUrl)) {\\n baseUrl = global_window__WEBPACK_IMPORTED_MODULE_1___default.a.location && global_window__WEBPACK_IMPORTED_MODULE_1___default.a.location.href || '';\\n } // IE11 supports URL but not the URL constructor\\n // feature detect the behavior we want\\n\\n\\n var nativeURL = typeof global_window__WEBPACK_IMPORTED_MODULE_1___default.a.URL === 'function';\\n var protocolLess = /^\\\\/\\\\//.test(baseUrl); // remove location if window.location isn't available (i.e. we're in node)\\n // and if baseUrl isn't an absolute url\\n\\n var removeLocation = !global_window__WEBPACK_IMPORTED_MODULE_1___default.a.location && !/\\\\/\\\\//i.test(baseUrl); // if the base URL is relative then combine with the current location\\n\\n if (nativeURL) {\\n baseUrl = new global_window__WEBPACK_IMPORTED_MODULE_1___default.a.URL(baseUrl, global_window__WEBPACK_IMPORTED_MODULE_1___default.a.location || DEFAULT_LOCATION);\\n } else if (!/\\\\/\\\\//i.test(baseUrl)) {\\n baseUrl = url_toolkit__WEBPACK_IMPORTED_MODULE_0___default.a.buildAbsoluteURL(global_window__WEBPACK_IMPORTED_MODULE_1___default.a.location && global_window__WEBPACK_IMPORTED_MODULE_1___default.a.location.href || '', baseUrl);\\n }\\n\\n if (nativeURL) {\\n var newUrl = new URL(relativeUrl, baseUrl); // if we're a protocol-less url, remove the protocol\\n // and if we're location-less, remove the location\\n // otherwise, return the url unmodified\\n\\n if (removeLocation) {\\n return newUrl.href.slice(DEFAULT_LOCATION.length);\\n } else if (protocolLess) {\\n return newUrl.href.slice(newUrl.protocol.length);\\n }\\n\\n return newUrl.href;\\n }\\n\\n return url_toolkit__WEBPACK_IMPORTED_MODULE_0___default.a.buildAbsoluteURL(baseUrl, relativeUrl);\\n};\\n\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (resolveUrl);\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/es/resolve-url.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/vhs-utils/node_modules/url-toolkit/src/url-toolkit.js\":\n/*!**************************************************************************************!*\\\n !*** ../node_modules/@videojs/vhs-utils/node_modules/url-toolkit/src/url-toolkit.js ***!\n \\**************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"// see https://tools.ietf.org/html/rfc1808\\n\\n(function (root) {\\n var URL_REGEX = /^((?:[a-zA-Z0-9+\\\\-.]+:)?)(\\\\/\\\\/[^\\\\/?#]*)?((?:[^\\\\/?#]*\\\\/)*[^;?#]*)?(;[^?#]*)?(\\\\?[^#]*)?(#.*)?$/;\\n var FIRST_SEGMENT_REGEX = /^([^\\\\/?#]*)(.*)$/;\\n var SLASH_DOT_REGEX = /(?:\\\\/|^)\\\\.(?=\\\\/)/g;\\n var SLASH_DOT_DOT_REGEX = /(?:\\\\/|^)\\\\.\\\\.\\\\/(?!\\\\.\\\\.\\\\/)[^\\\\/]*(?=\\\\/)/g;\\n\\n var URLToolkit = {\\n // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //\\n // E.g\\n // With opts.alwaysNormalize = false (default, spec compliant)\\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g\\n // With opts.alwaysNormalize = true (not spec compliant)\\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/g\\n buildAbsoluteURL: function (baseURL, relativeURL, opts) {\\n opts = opts || {};\\n // remove any remaining space and CRLF\\n baseURL = baseURL.trim();\\n relativeURL = relativeURL.trim();\\n if (!relativeURL) {\\n // 2a) If the embedded URL is entirely empty, it inherits the\\n // entire base URL (i.e., is set equal to the base URL)\\n // and we are done.\\n if (!opts.alwaysNormalize) {\\n return baseURL;\\n }\\n var basePartsForNormalise = URLToolkit.parseURL(baseURL);\\n if (!basePartsForNormalise) {\\n throw new Error('Error trying to parse base URL.');\\n }\\n basePartsForNormalise.path = URLToolkit.normalizePath(\\n basePartsForNormalise.path\\n );\\n return URLToolkit.buildURLFromParts(basePartsForNormalise);\\n }\\n var relativeParts = URLToolkit.parseURL(relativeURL);\\n if (!relativeParts) {\\n throw new Error('Error trying to parse relative URL.');\\n }\\n if (relativeParts.scheme) {\\n // 2b) If the embedded URL starts with a scheme name, it is\\n // interpreted as an absolute URL and we are done.\\n if (!opts.alwaysNormalize) {\\n return relativeURL;\\n }\\n relativeParts.path = URLToolkit.normalizePath(relativeParts.path);\\n return URLToolkit.buildURLFromParts(relativeParts);\\n }\\n var baseParts = URLToolkit.parseURL(baseURL);\\n if (!baseParts) {\\n throw new Error('Error trying to parse base URL.');\\n }\\n if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') {\\n // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc\\n // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a'\\n var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);\\n baseParts.netLoc = pathParts[1];\\n baseParts.path = pathParts[2];\\n }\\n if (baseParts.netLoc && !baseParts.path) {\\n baseParts.path = '/';\\n }\\n var builtParts = {\\n // 2c) Otherwise, the embedded URL inherits the scheme of\\n // the base URL.\\n scheme: baseParts.scheme,\\n netLoc: relativeParts.netLoc,\\n path: null,\\n params: relativeParts.params,\\n query: relativeParts.query,\\n fragment: relativeParts.fragment,\\n };\\n if (!relativeParts.netLoc) {\\n // 3) If the embedded URL's is non-empty, we skip to\\n // Step 7. Otherwise, the embedded URL inherits the \\n // (if any) of the base URL.\\n builtParts.netLoc = baseParts.netLoc;\\n // 4) If the embedded URL path is preceded by a slash \\\"/\\\", the\\n // path is not relative and we skip to Step 7.\\n if (relativeParts.path[0] !== '/') {\\n if (!relativeParts.path) {\\n // 5) If the embedded URL path is empty (and not preceded by a\\n // slash), then the embedded URL inherits the base URL path\\n builtParts.path = baseParts.path;\\n // 5a) if the embedded URL's is non-empty, we skip to\\n // step 7; otherwise, it inherits the of the base\\n // URL (if any) and\\n if (!relativeParts.params) {\\n builtParts.params = baseParts.params;\\n // 5b) if the embedded URL's is non-empty, we skip to\\n // step 7; otherwise, it inherits the of the base\\n // URL (if any) and we skip to step 7.\\n if (!relativeParts.query) {\\n builtParts.query = baseParts.query;\\n }\\n }\\n } else {\\n // 6) The last segment of the base URL's path (anything\\n // following the rightmost slash \\\"/\\\", or the entire path if no\\n // slash is present) is removed and the embedded URL's path is\\n // appended in its place.\\n var baseURLPath = baseParts.path;\\n var newPath =\\n baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) +\\n relativeParts.path;\\n builtParts.path = URLToolkit.normalizePath(newPath);\\n }\\n }\\n }\\n if (builtParts.path === null) {\\n builtParts.path = opts.alwaysNormalize\\n ? URLToolkit.normalizePath(relativeParts.path)\\n : relativeParts.path;\\n }\\n return URLToolkit.buildURLFromParts(builtParts);\\n },\\n parseURL: function (url) {\\n var parts = URL_REGEX.exec(url);\\n if (!parts) {\\n return null;\\n }\\n return {\\n scheme: parts[1] || '',\\n netLoc: parts[2] || '',\\n path: parts[3] || '',\\n params: parts[4] || '',\\n query: parts[5] || '',\\n fragment: parts[6] || '',\\n };\\n },\\n normalizePath: function (path) {\\n // The following operations are\\n // then applied, in order, to the new path:\\n // 6a) All occurrences of \\\"./\\\", where \\\".\\\" is a complete path\\n // segment, are removed.\\n // 6b) If the path ends with \\\".\\\" as a complete path segment,\\n // that \\\".\\\" is removed.\\n path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, '');\\n // 6c) All occurrences of \\\"/../\\\", where is a\\n // complete path segment not equal to \\\"..\\\", are removed.\\n // Removal of these path segments is performed iteratively,\\n // removing the leftmost matching pattern on each iteration,\\n // until no matching pattern remains.\\n // 6d) If the path ends with \\\"/..\\\", where is a\\n // complete path segment not equal to \\\"..\\\", that\\n // \\\"/..\\\" is removed.\\n while (\\n path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length\\n ) {}\\n return path.split('').reverse().join('');\\n },\\n buildURLFromParts: function (parts) {\\n return (\\n parts.scheme +\\n parts.netLoc +\\n parts.path +\\n parts.params +\\n parts.query +\\n parts.fragment\\n );\\n },\\n };\\n\\n if (true)\\n module.exports = URLToolkit;\\n else {}\\n})(this);\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/vhs-utils/node_modules/url-toolkit/src/url-toolkit.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/xhr/index.js\":\n/*!*********************************************!*\\\n !*** ../node_modules/@videojs/xhr/index.js ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar window = __webpack_require__(/*! global/window */ \\\"../node_modules/global/window.js\\\")\\nvar _extends = __webpack_require__(/*! @babel/runtime/helpers/extends */ \\\"../node_modules/@videojs/xhr/node_modules/@babel/runtime/helpers/extends.js\\\");\\nvar isFunction = __webpack_require__(/*! is-function */ \\\"../node_modules/is-function/index.js\\\");\\n\\n/**\\n * @license\\n * slighly modified parse-headers 2.0.2 \\n * Copyright (c) 2014 David Björklund\\n * Available under the MIT license\\n * \\n */\\n\\nvar parseHeaders = function(headers) {\\n var result = {};\\n\\n if (!headers) {\\n return result;\\n }\\n\\n headers.trim().split('\\\\n').forEach(function(row) {\\n var index = row.indexOf(':');\\n var key = row.slice(0, index).trim().toLowerCase();\\n var value = row.slice(index + 1).trim();\\n\\n if (typeof(result[key]) === 'undefined') {\\n result[key] = value\\n } else if (Array.isArray(result[key])) {\\n result[key].push(value)\\n } else {\\n result[key] = [ result[key], value ]\\n }\\n });\\n\\n return result;\\n};\\n\\nmodule.exports = createXHR\\n// Allow use of default import syntax in TypeScript\\nmodule.exports.default = createXHR;\\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop\\ncreateXHR.XDomainRequest = \\\"withCredentials\\\" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window.XDomainRequest\\n\\nforEachArray([\\\"get\\\", \\\"put\\\", \\\"post\\\", \\\"patch\\\", \\\"head\\\", \\\"delete\\\"], function(method) {\\n createXHR[method === \\\"delete\\\" ? \\\"del\\\" : method] = function(uri, options, callback) {\\n options = initParams(uri, options, callback)\\n options.method = method.toUpperCase()\\n return _createXHR(options)\\n }\\n})\\n\\nfunction forEachArray(array, iterator) {\\n for (var i = 0; i < array.length; i++) {\\n iterator(array[i])\\n }\\n}\\n\\nfunction isEmpty(obj){\\n for(var i in obj){\\n if(obj.hasOwnProperty(i)) return false\\n }\\n return true\\n}\\n\\nfunction initParams(uri, options, callback) {\\n var params = uri\\n\\n if (isFunction(options)) {\\n callback = options\\n if (typeof uri === \\\"string\\\") {\\n params = {uri:uri}\\n }\\n } else {\\n params = _extends({}, options, {uri: uri})\\n }\\n\\n params.callback = callback\\n return params\\n}\\n\\nfunction createXHR(uri, options, callback) {\\n options = initParams(uri, options, callback)\\n return _createXHR(options)\\n}\\n\\nfunction _createXHR(options) {\\n if(typeof options.callback === \\\"undefined\\\"){\\n throw new Error(\\\"callback argument missing\\\")\\n }\\n\\n var called = false\\n var callback = function cbOnce(err, response, body){\\n if(!called){\\n called = true\\n options.callback(err, response, body)\\n }\\n }\\n\\n function readystatechange() {\\n if (xhr.readyState === 4) {\\n setTimeout(loadFunc, 0)\\n }\\n }\\n\\n function getBody() {\\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\\n var body = undefined\\n\\n if (xhr.response) {\\n body = xhr.response\\n } else {\\n body = xhr.responseText || getXml(xhr)\\n }\\n\\n if (isJson) {\\n try {\\n body = JSON.parse(body)\\n } catch (e) {}\\n }\\n\\n return body\\n }\\n\\n function errorFunc(evt) {\\n clearTimeout(timeoutTimer)\\n if(!(evt instanceof Error)){\\n evt = new Error(\\\"\\\" + (evt || \\\"Unknown XMLHttpRequest Error\\\") )\\n }\\n evt.statusCode = 0\\n return callback(evt, failureResponse)\\n }\\n\\n // will load the data & process the response in a special response object\\n function loadFunc() {\\n if (aborted) return\\n var status\\n clearTimeout(timeoutTimer)\\n if(options.useXDR && xhr.status===undefined) {\\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\\n status = 200\\n } else {\\n status = (xhr.status === 1223 ? 204 : xhr.status)\\n }\\n var response = failureResponse\\n var err = null\\n\\n if (status !== 0){\\n response = {\\n body: getBody(),\\n statusCode: status,\\n method: method,\\n headers: {},\\n url: uri,\\n rawRequest: xhr\\n }\\n if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE\\n response.headers = parseHeaders(xhr.getAllResponseHeaders())\\n }\\n } else {\\n err = new Error(\\\"Internal XMLHttpRequest Error\\\")\\n }\\n return callback(err, response, response.body)\\n }\\n\\n var xhr = options.xhr || null\\n\\n if (!xhr) {\\n if (options.cors || options.useXDR) {\\n xhr = new createXHR.XDomainRequest()\\n }else{\\n xhr = new createXHR.XMLHttpRequest()\\n }\\n }\\n\\n var key\\n var aborted\\n var uri = xhr.url = options.uri || options.url\\n var method = xhr.method = options.method || \\\"GET\\\"\\n var body = options.body || options.data\\n var headers = xhr.headers = options.headers || {}\\n var sync = !!options.sync\\n var isJson = false\\n var timeoutTimer\\n var failureResponse = {\\n body: undefined,\\n headers: {},\\n statusCode: 0,\\n method: method,\\n url: uri,\\n rawRequest: xhr\\n }\\n\\n if (\\\"json\\\" in options && options.json !== false) {\\n isJson = true\\n headers[\\\"accept\\\"] || headers[\\\"Accept\\\"] || (headers[\\\"Accept\\\"] = \\\"application/json\\\") //Don't override existing accept header declared by user\\n if (method !== \\\"GET\\\" && method !== \\\"HEAD\\\") {\\n headers[\\\"content-type\\\"] || headers[\\\"Content-Type\\\"] || (headers[\\\"Content-Type\\\"] = \\\"application/json\\\") //Don't override existing accept header declared by user\\n body = JSON.stringify(options.json === true ? body : options.json)\\n }\\n }\\n\\n xhr.onreadystatechange = readystatechange\\n xhr.onload = loadFunc\\n xhr.onerror = errorFunc\\n // IE9 must have onprogress be set to a unique function.\\n xhr.onprogress = function () {\\n // IE must die\\n }\\n xhr.onabort = function(){\\n aborted = true;\\n }\\n xhr.ontimeout = errorFunc\\n xhr.open(method, uri, !sync, options.username, options.password)\\n //has to be after open\\n if(!sync) {\\n xhr.withCredentials = !!options.withCredentials\\n }\\n // Cannot set timeout with sync request\\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\\n if (!sync && options.timeout > 0 ) {\\n timeoutTimer = setTimeout(function(){\\n if (aborted) return\\n aborted = true//IE9 may still call readystatechange\\n xhr.abort(\\\"timeout\\\")\\n var e = new Error(\\\"XMLHttpRequest timeout\\\")\\n e.code = \\\"ETIMEDOUT\\\"\\n errorFunc(e)\\n }, options.timeout )\\n }\\n\\n if (xhr.setRequestHeader) {\\n for(key in headers){\\n if(headers.hasOwnProperty(key)){\\n xhr.setRequestHeader(key, headers[key])\\n }\\n }\\n } else if (options.headers && !isEmpty(options.headers)) {\\n throw new Error(\\\"Headers cannot be set on an XDomainRequest object\\\")\\n }\\n\\n if (\\\"responseType\\\" in options) {\\n xhr.responseType = options.responseType\\n }\\n\\n if (\\\"beforeSend\\\" in options &&\\n typeof options.beforeSend === \\\"function\\\"\\n ) {\\n options.beforeSend(xhr)\\n }\\n\\n // Microsoft Edge browser sends \\\"undefined\\\" when send is called with undefined value.\\n // XMLHttpRequest spec says to pass null as body to indicate no body\\n // See https://github.com/naugtur/xhr/issues/100.\\n xhr.send(body || null)\\n\\n return xhr\\n\\n\\n}\\n\\nfunction getXml(xhr) {\\n // xhr.responseXML will throw Exception \\\"InvalidStateError\\\" or \\\"DOMException\\\"\\n // See https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML.\\n try {\\n if (xhr.responseType === \\\"document\\\") {\\n return xhr.responseXML\\n }\\n var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === \\\"parsererror\\\"\\n if (xhr.responseType === \\\"\\\" && !firefoxBugTakenEffect) {\\n return xhr.responseXML\\n }\\n } catch (e) {}\\n\\n return null\\n}\\n\\nfunction noop() {}\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/xhr/index.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/@videojs/xhr/node_modules/@babel/runtime/helpers/extends.js\":\n/*!***********************************************************************************!*\\\n !*** ../node_modules/@videojs/xhr/node_modules/@babel/runtime/helpers/extends.js ***!\n \\***********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"function _extends() {\\n module.exports = _extends = Object.assign || function (target) {\\n for (var i = 1; i < arguments.length; i++) {\\n var source = arguments[i];\\n\\n for (var key in source) {\\n if (Object.prototype.hasOwnProperty.call(source, key)) {\\n target[key] = source[key];\\n }\\n }\\n }\\n\\n return target;\\n };\\n\\n return _extends.apply(this, arguments);\\n}\\n\\nmodule.exports = _extends;\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/@videojs/xhr/node_modules/@babel/runtime/helpers/extends.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/base64-js/index.js\":\n/*!******************************************!*\\\n !*** ../node_modules/base64-js/index.js ***!\n \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nexports.byteLength = byteLength\\nexports.toByteArray = toByteArray\\nexports.fromByteArray = fromByteArray\\n\\nvar lookup = []\\nvar revLookup = []\\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\\n\\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\\nfor (var i = 0, len = code.length; i < len; ++i) {\\n lookup[i] = code[i]\\n revLookup[code.charCodeAt(i)] = i\\n}\\n\\n// Support decoding URL-safe base64 strings, as Node.js does.\\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\\nrevLookup['-'.charCodeAt(0)] = 62\\nrevLookup['_'.charCodeAt(0)] = 63\\n\\nfunction getLens (b64) {\\n var len = b64.length\\n\\n if (len % 4 > 0) {\\n throw new Error('Invalid string. Length must be a multiple of 4')\\n }\\n\\n // Trim off extra bytes after placeholder bytes are found\\n // See: https://github.com/beatgammit/base64-js/issues/42\\n var validLen = b64.indexOf('=')\\n if (validLen === -1) validLen = len\\n\\n var placeHoldersLen = validLen === len\\n ? 0\\n : 4 - (validLen % 4)\\n\\n return [validLen, placeHoldersLen]\\n}\\n\\n// base64 is 4/3 + up to two characters of the original data\\nfunction byteLength (b64) {\\n var lens = getLens(b64)\\n var validLen = lens[0]\\n var placeHoldersLen = lens[1]\\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\\n}\\n\\nfunction _byteLength (b64, validLen, placeHoldersLen) {\\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\\n}\\n\\nfunction toByteArray (b64) {\\n var tmp\\n var lens = getLens(b64)\\n var validLen = lens[0]\\n var placeHoldersLen = lens[1]\\n\\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\\n\\n var curByte = 0\\n\\n // if there are placeholders, only get up to the last complete 4 chars\\n var len = placeHoldersLen > 0\\n ? validLen - 4\\n : validLen\\n\\n var i\\n for (i = 0; i < len; i += 4) {\\n tmp =\\n (revLookup[b64.charCodeAt(i)] << 18) |\\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\\n revLookup[b64.charCodeAt(i + 3)]\\n arr[curByte++] = (tmp >> 16) & 0xFF\\n arr[curByte++] = (tmp >> 8) & 0xFF\\n arr[curByte++] = tmp & 0xFF\\n }\\n\\n if (placeHoldersLen === 2) {\\n tmp =\\n (revLookup[b64.charCodeAt(i)] << 2) |\\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\\n arr[curByte++] = tmp & 0xFF\\n }\\n\\n if (placeHoldersLen === 1) {\\n tmp =\\n (revLookup[b64.charCodeAt(i)] << 10) |\\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\\n arr[curByte++] = (tmp >> 8) & 0xFF\\n arr[curByte++] = tmp & 0xFF\\n }\\n\\n return arr\\n}\\n\\nfunction tripletToBase64 (num) {\\n return lookup[num >> 18 & 0x3F] +\\n lookup[num >> 12 & 0x3F] +\\n lookup[num >> 6 & 0x3F] +\\n lookup[num & 0x3F]\\n}\\n\\nfunction encodeChunk (uint8, start, end) {\\n var tmp\\n var output = []\\n for (var i = start; i < end; i += 3) {\\n tmp =\\n ((uint8[i] << 16) & 0xFF0000) +\\n ((uint8[i + 1] << 8) & 0xFF00) +\\n (uint8[i + 2] & 0xFF)\\n output.push(tripletToBase64(tmp))\\n }\\n return output.join('')\\n}\\n\\nfunction fromByteArray (uint8) {\\n var tmp\\n var len = uint8.length\\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\\n var parts = []\\n var maxChunkLength = 16383 // must be multiple of 3\\n\\n // go through the array every three bytes, we'll deal with trailing stuff later\\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\\n parts.push(encodeChunk(\\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\\n ))\\n }\\n\\n // pad the end with zeros, but make sure to not forget the extra bytes\\n if (extraBytes === 1) {\\n tmp = uint8[len - 1]\\n parts.push(\\n lookup[tmp >> 2] +\\n lookup[(tmp << 4) & 0x3F] +\\n '=='\\n )\\n } else if (extraBytes === 2) {\\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\\n parts.push(\\n lookup[tmp >> 10] +\\n lookup[(tmp >> 4) & 0x3F] +\\n lookup[(tmp << 2) & 0x3F] +\\n '='\\n )\\n }\\n\\n return parts.join('')\\n}\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/base64-js/index.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/codem-isoboxer/dist/iso_boxer.js\":\n/*!********************************************************!*\\\n !*** ../node_modules/codem-isoboxer/dist/iso_boxer.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"/*! codem-isoboxer v0.3.6 https://github.com/madebyhiro/codem-isoboxer/blob/master/LICENSE.txt */\\nvar ISOBoxer = {};\\n\\nISOBoxer.parseBuffer = function(arrayBuffer) {\\n return new ISOFile(arrayBuffer).parse();\\n};\\n\\nISOBoxer.addBoxProcessor = function(type, parser) {\\n if (typeof type !== 'string' || typeof parser !== 'function') {\\n return;\\n }\\n ISOBox.prototype._boxProcessors[type] = parser;\\n};\\n\\nISOBoxer.createFile = function() {\\n return new ISOFile();\\n};\\n\\n// See ISOBoxer.append() for 'pos' parameter syntax\\nISOBoxer.createBox = function(type, parent, pos) {\\n var newBox = ISOBox.create(type);\\n if (parent) {\\n parent.append(newBox, pos);\\n }\\n return newBox;\\n};\\n\\n// See ISOBoxer.append() for 'pos' parameter syntax\\nISOBoxer.createFullBox = function(type, parent, pos) {\\n var newBox = ISOBoxer.createBox(type, parent, pos);\\n newBox.version = 0;\\n newBox.flags = 0;\\n return newBox;\\n};\\n\\nISOBoxer.Utils = {};\\nISOBoxer.Utils.dataViewToString = function(dataView, encoding) {\\n var impliedEncoding = encoding || 'utf-8';\\n if (typeof TextDecoder !== 'undefined') {\\n return new TextDecoder(impliedEncoding).decode(dataView);\\n }\\n var a = [];\\n var i = 0;\\n\\n if (impliedEncoding === 'utf-8') {\\n /* The following algorithm is essentially a rewrite of the UTF8.decode at\\n http://bannister.us/weblog/2007/simple-base64-encodedecode-javascript/\\n */\\n\\n while (i < dataView.byteLength) {\\n var c = dataView.getUint8(i++);\\n if (c < 0x80) {\\n // 1-byte character (7 bits)\\n } else if (c < 0xe0) {\\n // 2-byte character (11 bits)\\n c = (c & 0x1f) << 6;\\n c |= (dataView.getUint8(i++) & 0x3f);\\n } else if (c < 0xf0) {\\n // 3-byte character (16 bits)\\n c = (c & 0xf) << 12;\\n c |= (dataView.getUint8(i++) & 0x3f) << 6;\\n c |= (dataView.getUint8(i++) & 0x3f);\\n } else {\\n // 4-byte character (21 bits)\\n c = (c & 0x7) << 18;\\n c |= (dataView.getUint8(i++) & 0x3f) << 12;\\n c |= (dataView.getUint8(i++) & 0x3f) << 6;\\n c |= (dataView.getUint8(i++) & 0x3f);\\n }\\n a.push(String.fromCharCode(c));\\n }\\n } else { // Just map byte-by-byte (probably wrong)\\n while (i < dataView.byteLength) {\\n a.push(String.fromCharCode(dataView.getUint8(i++)));\\n }\\n }\\n return a.join('');\\n};\\n\\nISOBoxer.Utils.utf8ToByteArray = function(string) {\\n // Only UTF-8 encoding is supported by TextEncoder\\n var u, i;\\n if (typeof TextEncoder !== 'undefined') {\\n u = new TextEncoder().encode(string);\\n } else {\\n u = [];\\n for (i = 0; i < string.length; ++i) {\\n var c = string.charCodeAt(i);\\n if (c < 0x80) {\\n u.push(c);\\n } else if (c < 0x800) {\\n u.push(0xC0 | (c >> 6));\\n u.push(0x80 | (63 & c));\\n } else if (c < 0x10000) {\\n u.push(0xE0 | (c >> 12));\\n u.push(0x80 | (63 & (c >> 6)));\\n u.push(0x80 | (63 & c));\\n } else {\\n u.push(0xF0 | (c >> 18));\\n u.push(0x80 | (63 & (c >> 12)));\\n u.push(0x80 | (63 & (c >> 6)));\\n u.push(0x80 | (63 & c));\\n }\\n }\\n }\\n return u;\\n};\\n\\n// Method to append a box in the list of child boxes\\n// The 'pos' parameter can be either:\\n// - (number) a position index at which to insert the new box\\n// - (string) the type of the box after which to insert the new box\\n// - (object) the box after which to insert the new box\\nISOBoxer.Utils.appendBox = function(parent, box, pos) {\\n box._offset = parent._cursor.offset;\\n box._root = (parent._root ? parent._root : parent);\\n box._raw = parent._raw;\\n box._parent = parent;\\n\\n if (pos === -1) {\\n // The new box is a sub-box of the parent but not added in boxes array,\\n // for example when the new box is set as an entry (see dref and stsd for example)\\n return;\\n }\\n\\n if (pos === undefined || pos === null) {\\n parent.boxes.push(box);\\n return;\\n }\\n\\n var index = -1,\\n type;\\n\\n if (typeof pos === \\\"number\\\") {\\n index = pos;\\n } else {\\n if (typeof pos === \\\"string\\\") {\\n type = pos;\\n } else if (typeof pos === \\\"object\\\" && pos.type) {\\n type = pos.type;\\n } else {\\n parent.boxes.push(box);\\n return;\\n }\\n\\n for (var i = 0; i < parent.boxes.length; i++) {\\n if (type === parent.boxes[i].type) {\\n index = i + 1;\\n break;\\n }\\n }\\n }\\n parent.boxes.splice(index, 0, box);\\n};\\n\\nif (true) {\\n exports.parseBuffer = ISOBoxer.parseBuffer;\\n exports.addBoxProcessor = ISOBoxer.addBoxProcessor;\\n exports.createFile = ISOBoxer.createFile;\\n exports.createBox = ISOBoxer.createBox;\\n exports.createFullBox = ISOBoxer.createFullBox;\\n exports.Utils = ISOBoxer.Utils;\\n}\\n\\nISOBoxer.Cursor = function(initialOffset) {\\n this.offset = (typeof initialOffset == 'undefined' ? 0 : initialOffset);\\n};\\n\\nvar ISOFile = function(arrayBuffer) {\\n this._cursor = new ISOBoxer.Cursor();\\n this.boxes = [];\\n if (arrayBuffer) {\\n this._raw = new DataView(arrayBuffer);\\n }\\n};\\n\\nISOFile.prototype.fetch = function(type) {\\n var result = this.fetchAll(type, true);\\n return (result.length ? result[0] : null);\\n};\\n\\nISOFile.prototype.fetchAll = function(type, returnEarly) {\\n var result = [];\\n ISOFile._sweep.call(this, type, result, returnEarly);\\n return result;\\n};\\n\\nISOFile.prototype.parse = function() {\\n this._cursor.offset = 0;\\n this.boxes = [];\\n while (this._cursor.offset < this._raw.byteLength) {\\n var box = ISOBox.parse(this);\\n\\n // Box could not be parsed\\n if (typeof box.type === 'undefined') break;\\n\\n this.boxes.push(box);\\n }\\n return this;\\n};\\n\\nISOFile._sweep = function(type, result, returnEarly) {\\n if (this.type && this.type == type) result.push(this);\\n for (var box in this.boxes) {\\n if (result.length && returnEarly) return;\\n ISOFile._sweep.call(this.boxes[box], type, result, returnEarly);\\n }\\n};\\n\\nISOFile.prototype.write = function() {\\n\\n var length = 0,\\n i;\\n\\n for (i = 0; i < this.boxes.length; i++) {\\n length += this.boxes[i].getLength(false);\\n }\\n\\n var bytes = new Uint8Array(length);\\n this._rawo = new DataView(bytes.buffer);\\n this.bytes = bytes;\\n this._cursor.offset = 0;\\n\\n for (i = 0; i < this.boxes.length; i++) {\\n this.boxes[i].write();\\n }\\n\\n return bytes.buffer;\\n};\\n\\nISOFile.prototype.append = function(box, pos) {\\n ISOBoxer.Utils.appendBox(this, box, pos);\\n};\\nvar ISOBox = function() {\\n this._cursor = new ISOBoxer.Cursor();\\n};\\n\\nISOBox.parse = function(parent) {\\n var newBox = new ISOBox();\\n newBox._offset = parent._cursor.offset;\\n newBox._root = (parent._root ? parent._root : parent);\\n newBox._raw = parent._raw;\\n newBox._parent = parent;\\n newBox._parseBox();\\n parent._cursor.offset = newBox._raw.byteOffset + newBox._raw.byteLength;\\n return newBox;\\n};\\n\\nISOBox.create = function(type) {\\n var newBox = new ISOBox();\\n newBox.type = type;\\n newBox.boxes = [];\\n return newBox;\\n};\\n\\nISOBox.prototype._boxContainers = ['dinf', 'edts', 'mdia', 'meco', 'mfra', 'minf', 'moof', 'moov', 'mvex', 'stbl', 'strk', 'traf', 'trak', 'tref', 'udta', 'vttc', 'sinf', 'schi', 'encv', 'enca'];\\n\\nISOBox.prototype._boxProcessors = {};\\n\\n///////////////////////////////////////////////////////////////////////////////////////////////////\\n// Generic read/write functions\\n\\nISOBox.prototype._procField = function (name, type, size) {\\n if (this._parsing) {\\n this[name] = this._readField(type, size);\\n }\\n else {\\n this._writeField(type, size, this[name]);\\n }\\n};\\n\\nISOBox.prototype._procFieldArray = function (name, length, type, size) {\\n var i;\\n if (this._parsing) {\\n this[name] = [];\\n for (i = 0; i < length; i++) {\\n this[name][i] = this._readField(type, size);\\n }\\n }\\n else {\\n for (i = 0; i < this[name].length; i++) {\\n this._writeField(type, size, this[name][i]);\\n }\\n }\\n};\\n\\nISOBox.prototype._procFullBox = function() {\\n this._procField('version', 'uint', 8);\\n this._procField('flags', 'uint', 24);\\n};\\n\\nISOBox.prototype._procEntries = function(name, length, fn) {\\n var i;\\n if (this._parsing) {\\n this[name] = [];\\n for (i = 0; i < length; i++) {\\n this[name].push({});\\n fn.call(this, this[name][i]);\\n }\\n }\\n else {\\n for (i = 0; i < length; i++) {\\n fn.call(this, this[name][i]);\\n }\\n }\\n};\\n\\nISOBox.prototype._procSubEntries = function(entry, name, length, fn) {\\n var i;\\n if (this._parsing) {\\n entry[name] = [];\\n for (i = 0; i < length; i++) {\\n entry[name].push({});\\n fn.call(this, entry[name][i]);\\n }\\n }\\n else {\\n for (i = 0; i < length; i++) {\\n fn.call(this, entry[name][i]);\\n }\\n }\\n};\\n\\nISOBox.prototype._procEntryField = function (entry, name, type, size) {\\n if (this._parsing) {\\n entry[name] = this._readField(type, size);\\n }\\n else {\\n this._writeField(type, size, entry[name]);\\n }\\n};\\n\\nISOBox.prototype._procSubBoxes = function(name, length) {\\n var i;\\n if (this._parsing) {\\n this[name] = [];\\n for (i = 0; i < length; i++) {\\n this[name].push(ISOBox.parse(this));\\n }\\n }\\n else {\\n for (i = 0; i < length; i++) {\\n if (this._rawo) {\\n this[name][i].write();\\n } else {\\n this.size += this[name][i].getLength();\\n }\\n }\\n }\\n};\\n\\n///////////////////////////////////////////////////////////////////////////////////////////////////\\n// Read/parse functions\\n\\nISOBox.prototype._readField = function(type, size) {\\n switch (type) {\\n case 'uint':\\n return this._readUint(size);\\n case 'int':\\n return this._readInt(size);\\n case 'template':\\n return this._readTemplate(size);\\n case 'string':\\n return (size === -1) ? this._readTerminatedString() : this._readString(size);\\n case 'data':\\n return this._readData(size);\\n case 'utf8':\\n return this._readUTF8String();\\n default:\\n return -1;\\n }\\n};\\n\\nISOBox.prototype._readInt = function(size) {\\n var result = null,\\n offset = this._cursor.offset - this._raw.byteOffset;\\n switch(size) {\\n case 8:\\n result = this._raw.getInt8(offset);\\n break;\\n case 16:\\n result = this._raw.getInt16(offset);\\n break;\\n case 32:\\n result = this._raw.getInt32(offset);\\n break;\\n case 64:\\n // Warning: JavaScript cannot handle 64-bit integers natively.\\n // This will give unexpected results for integers >= 2^53\\n var s1 = this._raw.getInt32(offset);\\n var s2 = this._raw.getInt32(offset + 4);\\n result = (s1 * Math.pow(2,32)) + s2;\\n break;\\n }\\n this._cursor.offset += (size >> 3);\\n return result;\\n};\\n\\nISOBox.prototype._readUint = function(size) {\\n var result = null,\\n offset = this._cursor.offset - this._raw.byteOffset,\\n s1, s2;\\n switch(size) {\\n case 8:\\n result = this._raw.getUint8(offset);\\n break;\\n case 16:\\n result = this._raw.getUint16(offset);\\n break;\\n case 24:\\n s1 = this._raw.getUint16(offset);\\n s2 = this._raw.getUint8(offset + 2);\\n result = (s1 << 8) + s2;\\n break;\\n case 32:\\n result = this._raw.getUint32(offset);\\n break;\\n case 64:\\n // Warning: JavaScript cannot handle 64-bit integers natively.\\n // This will give unexpected results for integers >= 2^53\\n s1 = this._raw.getUint32(offset);\\n s2 = this._raw.getUint32(offset + 4);\\n result = (s1 * Math.pow(2,32)) + s2;\\n break;\\n }\\n this._cursor.offset += (size >> 3);\\n return result;\\n};\\n\\nISOBox.prototype._readString = function(length) {\\n var str = '';\\n for (var c = 0; c < length; c++) {\\n var char = this._readUint(8);\\n str += String.fromCharCode(char);\\n }\\n return str;\\n};\\n\\nISOBox.prototype._readTemplate = function(size) {\\n var pre = this._readUint(size / 2);\\n var post = this._readUint(size / 2);\\n return pre + (post / Math.pow(2, size / 2));\\n};\\n\\nISOBox.prototype._readTerminatedString = function() {\\n var str = '';\\n while (this._cursor.offset - this._offset < this._raw.byteLength) {\\n var char = this._readUint(8);\\n if (char === 0) break;\\n str += String.fromCharCode(char);\\n }\\n return str;\\n};\\n\\nISOBox.prototype._readData = function(size) {\\n var length = (size > 0) ? size : (this._raw.byteLength - (this._cursor.offset - this._offset));\\n if (length > 0) {\\n var data = new Uint8Array(this._raw.buffer, this._cursor.offset, length);\\n\\n this._cursor.offset += length;\\n return data;\\n }\\n else {\\n return null;\\n }\\n};\\n\\nISOBox.prototype._readUTF8String = function() {\\n var length = this._raw.byteLength - (this._cursor.offset - this._offset);\\n var data = null;\\n if (length > 0) {\\n data = new DataView(this._raw.buffer, this._cursor.offset, length);\\n this._cursor.offset += length;\\n }\\n \\n return data ? ISOBoxer.Utils.dataViewToString(data) : data;\\n};\\n\\nISOBox.prototype._parseBox = function() {\\n this._parsing = true;\\n this._cursor.offset = this._offset;\\n\\n // return immediately if there are not enough bytes to read the header\\n if (this._offset + 8 > this._raw.buffer.byteLength) {\\n this._root._incomplete = true;\\n return;\\n }\\n\\n this._procField('size', 'uint', 32);\\n this._procField('type', 'string', 4);\\n\\n if (this.size === 1) { this._procField('largesize', 'uint', 64); }\\n if (this.type === 'uuid') { this._procFieldArray('usertype', 16, 'uint', 8); }\\n\\n switch(this.size) {\\n case 0:\\n this._raw = new DataView(this._raw.buffer, this._offset, (this._raw.byteLength - this._cursor.offset + 8));\\n break;\\n case 1:\\n if (this._offset + this.size > this._raw.buffer.byteLength) {\\n this._incomplete = true;\\n this._root._incomplete = true;\\n } else {\\n this._raw = new DataView(this._raw.buffer, this._offset, this.largesize);\\n }\\n break;\\n default:\\n if (this._offset + this.size > this._raw.buffer.byteLength) {\\n this._incomplete = true;\\n this._root._incomplete = true;\\n } else {\\n this._raw = new DataView(this._raw.buffer, this._offset, this.size);\\n }\\n }\\n\\n // additional parsing\\n if (!this._incomplete) {\\n if (this._boxProcessors[this.type]) {\\n this._boxProcessors[this.type].call(this);\\n }\\n if (this._boxContainers.indexOf(this.type) !== -1) {\\n this._parseContainerBox();\\n } else{\\n // Unknown box => read and store box content\\n this._data = this._readData();\\n }\\n }\\n};\\n\\nISOBox.prototype._parseFullBox = function() {\\n this.version = this._readUint(8);\\n this.flags = this._readUint(24);\\n};\\n\\nISOBox.prototype._parseContainerBox = function() {\\n this.boxes = [];\\n while (this._cursor.offset - this._raw.byteOffset < this._raw.byteLength) {\\n this.boxes.push(ISOBox.parse(this));\\n }\\n};\\n\\n///////////////////////////////////////////////////////////////////////////////////////////////////\\n// Write functions\\n\\nISOBox.prototype.append = function(box, pos) {\\n ISOBoxer.Utils.appendBox(this, box, pos);\\n};\\n\\nISOBox.prototype.getLength = function() {\\n this._parsing = false;\\n this._rawo = null;\\n\\n this.size = 0;\\n this._procField('size', 'uint', 32);\\n this._procField('type', 'string', 4);\\n\\n if (this.size === 1) { this._procField('largesize', 'uint', 64); }\\n if (this.type === 'uuid') { this._procFieldArray('usertype', 16, 'uint', 8); }\\n\\n if (this._boxProcessors[this.type]) {\\n this._boxProcessors[this.type].call(this);\\n }\\n\\n if (this._boxContainers.indexOf(this.type) !== -1) {\\n for (var i = 0; i < this.boxes.length; i++) {\\n this.size += this.boxes[i].getLength();\\n }\\n } \\n\\n if (this._data) {\\n this._writeData(this._data);\\n }\\n\\n return this.size;\\n};\\n\\nISOBox.prototype.write = function() {\\n this._parsing = false;\\n this._cursor.offset = this._parent._cursor.offset;\\n\\n switch(this.size) {\\n case 0:\\n this._rawo = new DataView(this._parent._rawo.buffer, this._cursor.offset, (this.parent._rawo.byteLength - this._cursor.offset));\\n break;\\n case 1:\\n this._rawo = new DataView(this._parent._rawo.buffer, this._cursor.offset, this.largesize);\\n break;\\n default:\\n this._rawo = new DataView(this._parent._rawo.buffer, this._cursor.offset, this.size);\\n }\\n\\n this._procField('size', 'uint', 32);\\n this._procField('type', 'string', 4);\\n\\n if (this.size === 1) { this._procField('largesize', 'uint', 64); }\\n if (this.type === 'uuid') { this._procFieldArray('usertype', 16, 'uint', 8); }\\n\\n if (this._boxProcessors[this.type]) {\\n this._boxProcessors[this.type].call(this);\\n }\\n\\n if (this._boxContainers.indexOf(this.type) !== -1) {\\n for (var i = 0; i < this.boxes.length; i++) {\\n this.boxes[i].write();\\n }\\n } \\n\\n if (this._data) {\\n this._writeData(this._data);\\n }\\n\\n this._parent._cursor.offset += this.size;\\n\\n return this.size;\\n};\\n\\nISOBox.prototype._writeInt = function(size, value) {\\n if (this._rawo) {\\n var offset = this._cursor.offset - this._rawo.byteOffset;\\n switch(size) {\\n case 8:\\n this._rawo.setInt8(offset, value);\\n break;\\n case 16:\\n this._rawo.setInt16(offset, value);\\n break;\\n case 32:\\n this._rawo.setInt32(offset, value);\\n break;\\n case 64:\\n // Warning: JavaScript cannot handle 64-bit integers natively.\\n // This will give unexpected results for integers >= 2^53\\n var s1 = Math.floor(value / Math.pow(2,32));\\n var s2 = value - (s1 * Math.pow(2,32));\\n this._rawo.setUint32(offset, s1);\\n this._rawo.setUint32(offset + 4, s2);\\n break;\\n }\\n this._cursor.offset += (size >> 3);\\n } else {\\n this.size += (size >> 3);\\n }\\n};\\n\\nISOBox.prototype._writeUint = function(size, value) {\\n\\n if (this._rawo) {\\n var offset = this._cursor.offset - this._rawo.byteOffset,\\n s1, s2;\\n switch(size) {\\n case 8:\\n this._rawo.setUint8(offset, value);\\n break;\\n case 16:\\n this._rawo.setUint16(offset, value);\\n break;\\n case 24:\\n s1 = (value & 0xFFFF00) >> 8;\\n s2 = (value & 0x0000FF);\\n this._rawo.setUint16(offset, s1);\\n this._rawo.setUint8(offset + 2, s2);\\n break;\\n case 32:\\n this._rawo.setUint32(offset, value);\\n break;\\n case 64:\\n // Warning: JavaScript cannot handle 64-bit integers natively.\\n // This will give unexpected results for integers >= 2^53\\n s1 = Math.floor(value / Math.pow(2,32));\\n s2 = value - (s1 * Math.pow(2,32));\\n this._rawo.setUint32(offset, s1);\\n this._rawo.setUint32(offset + 4, s2);\\n break;\\n }\\n this._cursor.offset += (size >> 3);\\n } else {\\n this.size += (size >> 3);\\n }\\n};\\n\\nISOBox.prototype._writeString = function(size, str) {\\n for (var c = 0; c < size; c++) {\\n this._writeUint(8, str.charCodeAt(c));\\n }\\n};\\n\\nISOBox.prototype._writeTerminatedString = function(str) {\\n if (str.length === 0) {\\n return;\\n }\\n for (var c = 0; c < str.length; c++) {\\n this._writeUint(8, str.charCodeAt(c));\\n }\\n this._writeUint(8, 0);\\n};\\n\\nISOBox.prototype._writeTemplate = function(size, value) {\\n var pre = Math.floor(value);\\n var post = (value - pre) * Math.pow(2, size / 2);\\n this._writeUint(size / 2, pre);\\n this._writeUint(size / 2, post);\\n};\\n\\nISOBox.prototype._writeData = function(data) {\\n var i;\\n //data to copy\\n if (data) {\\n if (this._rawo) {\\n //Array and Uint8Array has also to be managed\\n if (data instanceof Array) {\\n var offset = this._cursor.offset - this._rawo.byteOffset;\\n for (var i = 0; i < data.length; i++) {\\n this._rawo.setInt8(offset + i, data[i]);\\n }\\n this._cursor.offset += data.length;\\n } \\n\\n if (data instanceof Uint8Array) {\\n this._root.bytes.set(data, this._cursor.offset);\\n this._cursor.offset += data.length;\\n }\\n\\n } else {\\n //nothing to copy only size to compute\\n this.size += data.length;\\n }\\n }\\n};\\n\\nISOBox.prototype._writeUTF8String = function(string) {\\n var u = ISOBoxer.Utils.utf8ToByteArray(string);\\n if (this._rawo) {\\n var dataView = new DataView(this._rawo.buffer, this._cursor.offset, u.length);\\n for (var i = 0; i < u.length; i++) {\\n dataView.setUint8(i, u[i]);\\n }\\n } else {\\n this.size += u.length;\\n }\\n};\\n\\nISOBox.prototype._writeField = function(type, size, value) {\\n switch (type) {\\n case 'uint':\\n this._writeUint(size, value);\\n break;\\n case 'int':\\n this._writeInt(size, value);\\n break;\\n case 'template':\\n this._writeTemplate(size, value);\\n break;\\n case 'string':\\n if (size == -1) {\\n this._writeTerminatedString(value);\\n } else {\\n this._writeString(size, value);\\n }\\n break;\\n case 'data':\\n this._writeData(value);\\n break;\\n case 'utf8':\\n this._writeUTF8String(value);\\n break;\\n default:\\n break;\\n }\\n};\\n\\n// ISO/IEC 14496-15:2014 - avc1 box\\nISOBox.prototype._boxProcessors['avc1'] = ISOBox.prototype._boxProcessors['encv'] = function() {\\n // SampleEntry fields\\n this._procFieldArray('reserved1', 6, 'uint', 8);\\n this._procField('data_reference_index', 'uint', 16);\\n // VisualSampleEntry fields\\n this._procField('pre_defined1', 'uint', 16);\\n this._procField('reserved2', 'uint', 16);\\n this._procFieldArray('pre_defined2', 3, 'uint', 32);\\n this._procField('width', 'uint', 16);\\n this._procField('height', 'uint', 16);\\n this._procField('horizresolution', 'template', 32);\\n this._procField('vertresolution', 'template', 32);\\n this._procField('reserved3', 'uint', 32);\\n this._procField('frame_count', 'uint', 16);\\n this._procFieldArray('compressorname', 32,'uint', 8);\\n this._procField('depth', 'uint', 16);\\n this._procField('pre_defined3', 'int', 16);\\n // AVCSampleEntry fields\\n this._procField('config', 'data', -1);\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.7.2 Data Reference Box\\nISOBox.prototype._boxProcessors['dref'] = function() {\\n this._procFullBox();\\n this._procField('entry_count', 'uint', 32);\\n this._procSubBoxes('entries', this.entry_count);\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.6.6 Edit List Box\\nISOBox.prototype._boxProcessors['elst'] = function() {\\n this._procFullBox();\\n this._procField('entry_count', 'uint', 32);\\n this._procEntries('entries', this.entry_count, function(entry) {\\n this._procEntryField(entry, 'segment_duration', 'uint', (this.version === 1) ? 64 : 32);\\n this._procEntryField(entry, 'media_time', 'int', (this.version === 1) ? 64 : 32);\\n this._procEntryField(entry, 'media_rate_integer', 'int', 16);\\n this._procEntryField(entry, 'media_rate_fraction', 'int', 16);\\n });\\n};\\n\\n// ISO/IEC 23009-1:2014 - 5.10.3.3 Event Message Box\\nISOBox.prototype._boxProcessors['emsg'] = function() {\\n this._procFullBox();\\n if (this.version == 1) {\\n this._procField('timescale', 'uint', 32);\\n this._procField('presentation_time', 'uint', 64);\\n this._procField('event_duration', 'uint', 32);\\n this._procField('id', 'uint', 32);\\n this._procField('scheme_id_uri', 'string', -1);\\n this._procField('value', 'string', -1);\\n } else {\\n this._procField('scheme_id_uri', 'string', -1);\\n this._procField('value', 'string', -1);\\n this._procField('timescale', 'uint', 32);\\n this._procField('presentation_time_delta', 'uint', 32);\\n this._procField('event_duration', 'uint', 32);\\n this._procField('id', 'uint', 32);\\n }\\n this._procField('message_data', 'data', -1);\\n};\\n// ISO/IEC 14496-12:2012 - 8.1.2 Free Space Box\\nISOBox.prototype._boxProcessors['free'] = ISOBox.prototype._boxProcessors['skip'] = function() {\\n this._procField('data', 'data', -1);\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.12.2 Original Format Box\\nISOBox.prototype._boxProcessors['frma'] = function() {\\n this._procField('data_format', 'uint', 32);\\n};\\n// ISO/IEC 14496-12:2012 - 4.3 File Type Box / 8.16.2 Segment Type Box\\nISOBox.prototype._boxProcessors['ftyp'] =\\nISOBox.prototype._boxProcessors['styp'] = function() {\\n this._procField('major_brand', 'string', 4);\\n this._procField('minor_version', 'uint', 32);\\n var nbCompatibleBrands = -1;\\n if (this._parsing) {\\n nbCompatibleBrands = (this._raw.byteLength - (this._cursor.offset - this._raw.byteOffset)) / 4;\\n }\\n this._procFieldArray('compatible_brands', nbCompatibleBrands, 'string', 4);\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.4.3 Handler Reference Box\\nISOBox.prototype._boxProcessors['hdlr'] = function() {\\n this._procFullBox();\\n this._procField('pre_defined', 'uint', 32);\\n this._procField('handler_type', 'string', 4);\\n this._procFieldArray('reserved', 3, 'uint', 32);\\n this._procField('name', 'string', -1);\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.1.1 Media Data Box\\nISOBox.prototype._boxProcessors['mdat'] = function() {\\n this._procField('data', 'data', -1);\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.4.2 Media Header Box\\nISOBox.prototype._boxProcessors['mdhd'] = function() {\\n this._procFullBox();\\n this._procField('creation_time', 'uint', (this.version == 1) ? 64 : 32);\\n this._procField('modification_time', 'uint', (this.version == 1) ? 64 : 32);\\n this._procField('timescale', 'uint', 32);\\n this._procField('duration', 'uint', (this.version == 1) ? 64 : 32);\\n if (!this._parsing && typeof this.language === 'string') {\\n // In case of writing and language has been set as a string, then convert it into char codes array\\n this.language = ((this.language.charCodeAt(0) - 0x60) << 10) |\\n ((this.language.charCodeAt(1) - 0x60) << 5) |\\n ((this.language.charCodeAt(2) - 0x60));\\n }\\n this._procField('language', 'uint', 16);\\n if (this._parsing) {\\n this.language = String.fromCharCode(((this.language >> 10) & 0x1F) + 0x60,\\n ((this.language >> 5) & 0x1F) + 0x60,\\n (this.language & 0x1F) + 0x60);\\n }\\n this._procField('pre_defined', 'uint', 16);\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.8.2 Movie Extends Header Box\\nISOBox.prototype._boxProcessors['mehd'] = function() {\\n this._procFullBox();\\n this._procField('fragment_duration', 'uint', (this.version == 1) ? 64 : 32);\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.8.5 Movie Fragment Header Box\\nISOBox.prototype._boxProcessors['mfhd'] = function() {\\n this._procFullBox();\\n this._procField('sequence_number', 'uint', 32);\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.8.11 Movie Fragment Random Access Box\\nISOBox.prototype._boxProcessors['mfro'] = function() {\\n this._procFullBox();\\n this._procField('mfra_size', 'uint', 32); // Called mfra_size to distinguish from the normal \\\"size\\\" attribute of a box\\n};\\n\\n\\n// ISO/IEC 14496-12:2012 - 8.5.2.2 mp4a box (use AudioSampleEntry definition and naming)\\nISOBox.prototype._boxProcessors['mp4a'] = ISOBox.prototype._boxProcessors['enca'] = function() {\\n // SampleEntry fields\\n this._procFieldArray('reserved1', 6, 'uint', 8);\\n this._procField('data_reference_index', 'uint', 16);\\n // AudioSampleEntry fields\\n this._procFieldArray('reserved2', 2, 'uint', 32);\\n this._procField('channelcount', 'uint', 16);\\n this._procField('samplesize', 'uint', 16);\\n this._procField('pre_defined', 'uint', 16);\\n this._procField('reserved3', 'uint', 16);\\n this._procField('samplerate', 'template', 32);\\n // ESDescriptor fields\\n this._procField('esds', 'data', -1);\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.2.2 Movie Header Box\\nISOBox.prototype._boxProcessors['mvhd'] = function() {\\n this._procFullBox();\\n this._procField('creation_time', 'uint', (this.version == 1) ? 64 : 32);\\n this._procField('modification_time', 'uint', (this.version == 1) ? 64 : 32);\\n this._procField('timescale', 'uint', 32);\\n this._procField('duration', 'uint', (this.version == 1) ? 64 : 32);\\n this._procField('rate', 'template', 32);\\n this._procField('volume', 'template', 16);\\n this._procField('reserved1', 'uint', 16);\\n this._procFieldArray('reserved2', 2, 'uint', 32);\\n this._procFieldArray('matrix', 9, 'template', 32);\\n this._procFieldArray('pre_defined', 6,'uint', 32);\\n this._procField('next_track_ID', 'uint', 32);\\n};\\n\\n// ISO/IEC 14496-30:2014 - WebVTT Cue Payload Box.\\nISOBox.prototype._boxProcessors['payl'] = function() {\\n this._procField('cue_text', 'utf8');\\n};\\n\\n//ISO/IEC 23001-7:2011 - 8.1 Protection System Specific Header Box\\nISOBox.prototype._boxProcessors['pssh'] = function() {\\n this._procFullBox();\\n \\n this._procFieldArray('SystemID', 16, 'uint', 8);\\n this._procField('DataSize', 'uint', 32);\\n this._procFieldArray('Data', this.DataSize, 'uint', 8);\\n};\\n// ISO/IEC 14496-12:2012 - 8.12.5 Scheme Type Box\\nISOBox.prototype._boxProcessors['schm'] = function() {\\n this._procFullBox();\\n \\n this._procField('scheme_type', 'uint', 32);\\n this._procField('scheme_version', 'uint', 32);\\n\\n if (this.flags & 0x000001) {\\n this._procField('scheme_uri', 'string', -1);\\n }\\n};\\n// ISO/IEC 14496-12:2012 - 8.6.4.1 sdtp box \\nISOBox.prototype._boxProcessors['sdtp'] = function() {\\n this._procFullBox();\\n\\n var sample_count = -1;\\n if (this._parsing) {\\n sample_count = (this._raw.byteLength - (this._cursor.offset - this._raw.byteOffset));\\n }\\n\\n this._procFieldArray('sample_dependency_table', sample_count, 'uint', 8);\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.16.3 Segment Index Box\\nISOBox.prototype._boxProcessors['sidx'] = function() {\\n this._procFullBox();\\n this._procField('reference_ID', 'uint', 32);\\n this._procField('timescale', 'uint', 32);\\n this._procField('earliest_presentation_time', 'uint', (this.version == 1) ? 64 : 32);\\n this._procField('first_offset', 'uint', (this.version == 1) ? 64 : 32);\\n this._procField('reserved', 'uint', 16);\\n this._procField('reference_count', 'uint', 16);\\n this._procEntries('references', this.reference_count, function(entry) {\\n if (!this._parsing) {\\n entry.reference = (entry.reference_type & 0x00000001) << 31;\\n entry.reference |= (entry.referenced_size & 0x7FFFFFFF);\\n entry.sap = (entry.starts_with_SAP & 0x00000001) << 31;\\n entry.sap |= (entry.SAP_type & 0x00000003) << 28;\\n entry.sap |= (entry.SAP_delta_time & 0x0FFFFFFF);\\n }\\n this._procEntryField(entry, 'reference', 'uint', 32);\\n this._procEntryField(entry, 'subsegment_duration', 'uint', 32);\\n this._procEntryField(entry, 'sap', 'uint', 32);\\n if (this._parsing) {\\n entry.reference_type = (entry.reference >> 31) & 0x00000001;\\n entry.referenced_size = entry.reference & 0x7FFFFFFF;\\n entry.starts_with_SAP = (entry.sap >> 31) & 0x00000001;\\n entry.SAP_type = (entry.sap >> 28) & 0x00000007;\\n entry.SAP_delta_time = (entry.sap & 0x0FFFFFFF);\\n }\\n });\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.4.5.3 Sound Media Header Box\\nISOBox.prototype._boxProcessors['smhd'] = function() {\\n this._procFullBox();\\n this._procField('balance', 'uint', 16);\\n this._procField('reserved', 'uint', 16);\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.16.4 Subsegment Index Box\\nISOBox.prototype._boxProcessors['ssix'] = function() {\\n this._procFullBox();\\n this._procField('subsegment_count', 'uint', 32);\\n this._procEntries('subsegments', this.subsegment_count, function(subsegment) {\\n this._procEntryField(subsegment, 'ranges_count', 'uint', 32);\\n this._procSubEntries(subsegment, 'ranges', subsegment.ranges_count, function(range) {\\n this._procEntryField(range, 'level', 'uint', 8);\\n this._procEntryField(range, 'range_size', 'uint', 24);\\n });\\n });\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.5.2 Sample Description Box\\nISOBox.prototype._boxProcessors['stsd'] = function() {\\n this._procFullBox();\\n this._procField('entry_count', 'uint', 32);\\n this._procSubBoxes('entries', this.entry_count);\\n};\\n\\n// ISO/IEC 14496-12:2015 - 8.7.7 Sub-Sample Information Box\\nISOBox.prototype._boxProcessors['subs'] = function () {\\n this._procFullBox();\\n this._procField('entry_count', 'uint', 32);\\n this._procEntries('entries', this.entry_count, function(entry) {\\n this._procEntryField(entry, 'sample_delta', 'uint', 32);\\n this._procEntryField(entry, 'subsample_count', 'uint', 16);\\n this._procSubEntries(entry, 'subsamples', entry.subsample_count, function(subsample) {\\n this._procEntryField(subsample, 'subsample_size', 'uint', (this.version === 1) ? 32 : 16);\\n this._procEntryField(subsample, 'subsample_priority', 'uint', 8);\\n this._procEntryField(subsample, 'discardable', 'uint', 8);\\n this._procEntryField(subsample, 'codec_specific_parameters', 'uint', 32);\\n });\\n });\\n};\\n\\n//ISO/IEC 23001-7:2011 - 8.2 Track Encryption Box\\nISOBox.prototype._boxProcessors['tenc'] = function() {\\n this._procFullBox();\\n\\n this._procField('default_IsEncrypted', 'uint', 24);\\n this._procField('default_IV_size', 'uint', 8);\\n this._procFieldArray('default_KID', 16, 'uint', 8);\\n };\\n\\n// ISO/IEC 14496-12:2012 - 8.8.12 Track Fragmnent Decode Time\\nISOBox.prototype._boxProcessors['tfdt'] = function() {\\n this._procFullBox();\\n this._procField('baseMediaDecodeTime', 'uint', (this.version == 1) ? 64 : 32);\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.8.7 Track Fragment Header Box\\nISOBox.prototype._boxProcessors['tfhd'] = function() {\\n this._procFullBox();\\n this._procField('track_ID', 'uint', 32);\\n if (this.flags & 0x01) this._procField('base_data_offset', 'uint', 64);\\n if (this.flags & 0x02) this._procField('sample_description_offset', 'uint', 32);\\n if (this.flags & 0x08) this._procField('default_sample_duration', 'uint', 32);\\n if (this.flags & 0x10) this._procField('default_sample_size', 'uint', 32);\\n if (this.flags & 0x20) this._procField('default_sample_flags', 'uint', 32);\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.8.10 Track Fragment Random Access Box\\nISOBox.prototype._boxProcessors['tfra'] = function() {\\n this._procFullBox();\\n this._procField('track_ID', 'uint', 32);\\n if (!this._parsing) {\\n this.reserved = 0;\\n this.reserved |= (this.length_size_of_traf_num & 0x00000030) << 4;\\n this.reserved |= (this.length_size_of_trun_num & 0x0000000C) << 2;\\n this.reserved |= (this.length_size_of_sample_num & 0x00000003);\\n }\\n this._procField('reserved', 'uint', 32);\\n if (this._parsing) {\\n this.length_size_of_traf_num = (this.reserved & 0x00000030) >> 4;\\n this.length_size_of_trun_num = (this.reserved & 0x0000000C) >> 2;\\n this.length_size_of_sample_num = (this.reserved & 0x00000003);\\n }\\n this._procField('number_of_entry', 'uint', 32);\\n this._procEntries('entries', this.number_of_entry, function(entry) {\\n this._procEntryField(entry, 'time', 'uint', (this.version === 1) ? 64 : 32);\\n this._procEntryField(entry, 'moof_offset', 'uint', (this.version === 1) ? 64 : 32);\\n this._procEntryField(entry, 'traf_number', 'uint', (this.length_size_of_traf_num + 1) * 8);\\n this._procEntryField(entry, 'trun_number', 'uint', (this.length_size_of_trun_num + 1) * 8);\\n this._procEntryField(entry, 'sample_number', 'uint', (this.length_size_of_sample_num + 1) * 8);\\n });\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.3.2 Track Header Box\\nISOBox.prototype._boxProcessors['tkhd'] = function() {\\n this._procFullBox();\\n this._procField('creation_time', 'uint', (this.version == 1) ? 64 : 32);\\n this._procField('modification_time', 'uint', (this.version == 1) ? 64 : 32);\\n this._procField('track_ID', 'uint', 32);\\n this._procField('reserved1', 'uint', 32);\\n this._procField('duration', 'uint', (this.version == 1) ? 64 : 32);\\n this._procFieldArray('reserved2', 2, 'uint', 32);\\n this._procField('layer', 'uint', 16);\\n this._procField('alternate_group', 'uint', 16);\\n this._procField('volume', 'template', 16);\\n this._procField('reserved3', 'uint', 16);\\n this._procFieldArray('matrix', 9, 'template', 32);\\n this._procField('width', 'template', 32);\\n this._procField('height', 'template', 32);\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.8.3 Track Extends Box\\nISOBox.prototype._boxProcessors['trex'] = function() {\\n this._procFullBox();\\n this._procField('track_ID', 'uint', 32);\\n this._procField('default_sample_description_index', 'uint', 32);\\n this._procField('default_sample_duration', 'uint', 32);\\n this._procField('default_sample_size', 'uint', 32);\\n this._procField('default_sample_flags', 'uint', 32);\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.8.8 Track Run Box\\n// Note: the 'trun' box has a direct relation to the 'tfhd' box for defaults.\\n// These defaults are not set explicitly here, but are left to resolve for the user.\\nISOBox.prototype._boxProcessors['trun'] = function() {\\n this._procFullBox();\\n this._procField('sample_count', 'uint', 32);\\n if (this.flags & 0x1) this._procField('data_offset', 'int', 32);\\n if (this.flags & 0x4) this._procField('first_sample_flags', 'uint', 32);\\n this._procEntries('samples', this.sample_count, function(sample) {\\n if (this.flags & 0x100) this._procEntryField(sample, 'sample_duration', 'uint', 32);\\n if (this.flags & 0x200) this._procEntryField(sample, 'sample_size', 'uint', 32);\\n if (this.flags & 0x400) this._procEntryField(sample, 'sample_flags', 'uint', 32);\\n if (this.flags & 0x800) this._procEntryField(sample, 'sample_composition_time_offset', (this.version === 1) ? 'int' : 'uint', 32);\\n });\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.7.2 Data Reference Box\\nISOBox.prototype._boxProcessors['url '] = ISOBox.prototype._boxProcessors['urn '] = function() {\\n this._procFullBox();\\n if (this.type === 'urn ') {\\n this._procField('name', 'string', -1);\\n }\\n this._procField('location', 'string', -1);\\n};\\n\\n// ISO/IEC 14496-30:2014 - WebVTT Source Label Box\\nISOBox.prototype._boxProcessors['vlab'] = function() {\\n this._procField('source_label', 'utf8');\\n};\\n\\n// ISO/IEC 14496-12:2012 - 8.4.5.2 Video Media Header Box\\nISOBox.prototype._boxProcessors['vmhd'] = function() {\\n this._procFullBox();\\n this._procField('graphicsmode', 'uint', 16);\\n this._procFieldArray('opcolor', 3, 'uint', 16);\\n};\\n\\n// ISO/IEC 14496-30:2014 - WebVTT Configuration Box\\nISOBox.prototype._boxProcessors['vttC'] = function() {\\n this._procField('config', 'utf8');\\n};\\n\\n// ISO/IEC 14496-30:2014 - WebVTT Empty Sample Box\\nISOBox.prototype._boxProcessors['vtte'] = function() {\\n // Nothing should happen here.\\n};\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/codem-isoboxer/dist/iso_boxer.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/core-util-is/lib/util.js\":\n/*!************************************************!*\\\n !*** ../node_modules/core-util-is/lib/util.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"/* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors.\\n//\\n// Permission is hereby granted, free of charge, to any person obtaining a\\n// copy of this software and associated documentation files (the\\n// \\\"Software\\\"), to deal in the Software without restriction, including\\n// without limitation the rights to use, copy, modify, merge, publish,\\n// distribute, sublicense, and/or sell copies of the Software, and to permit\\n// persons to whom the Software is furnished to do so, subject to the\\n// following conditions:\\n//\\n// The above copyright notice and this permission notice shall be included\\n// in all copies or substantial portions of the Software.\\n//\\n// THE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\\n// NOTE: These type checking functions intentionally don't use `instanceof`\\n// because it is fragile and can be easily faked with `Object.create()`.\\n\\nfunction isArray(arg) {\\n if (Array.isArray) {\\n return Array.isArray(arg);\\n }\\n return objectToString(arg) === '[object Array]';\\n}\\nexports.isArray = isArray;\\n\\nfunction isBoolean(arg) {\\n return typeof arg === 'boolean';\\n}\\nexports.isBoolean = isBoolean;\\n\\nfunction isNull(arg) {\\n return arg === null;\\n}\\nexports.isNull = isNull;\\n\\nfunction isNullOrUndefined(arg) {\\n return arg == null;\\n}\\nexports.isNullOrUndefined = isNullOrUndefined;\\n\\nfunction isNumber(arg) {\\n return typeof arg === 'number';\\n}\\nexports.isNumber = isNumber;\\n\\nfunction isString(arg) {\\n return typeof arg === 'string';\\n}\\nexports.isString = isString;\\n\\nfunction isSymbol(arg) {\\n return typeof arg === 'symbol';\\n}\\nexports.isSymbol = isSymbol;\\n\\nfunction isUndefined(arg) {\\n return arg === void 0;\\n}\\nexports.isUndefined = isUndefined;\\n\\nfunction isRegExp(re) {\\n return objectToString(re) === '[object RegExp]';\\n}\\nexports.isRegExp = isRegExp;\\n\\nfunction isObject(arg) {\\n return typeof arg === 'object' && arg !== null;\\n}\\nexports.isObject = isObject;\\n\\nfunction isDate(d) {\\n return objectToString(d) === '[object Date]';\\n}\\nexports.isDate = isDate;\\n\\nfunction isError(e) {\\n return (objectToString(e) === '[object Error]' || e instanceof Error);\\n}\\nexports.isError = isError;\\n\\nfunction isFunction(arg) {\\n return typeof arg === 'function';\\n}\\nexports.isFunction = isFunction;\\n\\nfunction isPrimitive(arg) {\\n return arg === null ||\\n typeof arg === 'boolean' ||\\n typeof arg === 'number' ||\\n typeof arg === 'string' ||\\n typeof arg === 'symbol' || // ES6 symbol\\n typeof arg === 'undefined';\\n}\\nexports.isPrimitive = isPrimitive;\\n\\nexports.isBuffer = Buffer.isBuffer;\\n\\nfunction objectToString(o) {\\n return Object.prototype.toString.call(o);\\n}\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node-libs-browser/node_modules/buffer/index.js */ \\\"../node_modules/node-libs-browser/node_modules/buffer/index.js\\\").Buffer))\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/core-util-is/lib/util.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/externals/base64.js\":\n/*!************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/externals/base64.js ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* $Date: 2007-06-12 18:02:31 $ */// from: http://bannister.us/weblog/2007/06/09/simple-base64-encodedecode-javascript/\\n// Handles encode/decode of ASCII and Unicode strings.\\nvar UTF8={};UTF8.encode=function(s){var u=[];for(var i=0;i>6);u.push(0x80|63&c);}else if(c<0x10000){u.push(0xE0|c>>12);u.push(0x80|63&c>>6);u.push(0x80|63&c);}else{u.push(0xF0|c>>18);u.push(0x80|63&c>>12);u.push(0x80|63&c>>6);u.push(0x80|63&c);}}return u;};UTF8.decode=function(u){var a=[];var i=0;while(i>18));a.push(T.charAt(63&v>>12));a.push(T.charAt(63&v>>6));a.push(T.charAt(63&v));}if(2==u.length-i){var v=(u[i]<<16)+(u[i+1]<<8);a.push(T.charAt(63&v>>18));a.push(T.charAt(63&v>>12));a.push(T.charAt(63&v>>6));a.push('=');}else if(1==u.length-i){var v=u[i]<<16;a.push(T.charAt(63&v>>18));a.push(T.charAt(63&v>>12));a.push('==');}return a.join('');};var R=function(){var a=[];for(var i=0;i>16);u.push(255&v>>8);u.push(255&v);i+=4;}if(u){if('='==s.charAt(i-2)){u.pop();u.pop();}else if('='==s.charAt(i-1)){u.pop();}}return u;};var ASCII={};ASCII.encode=function(s){var u=[];for(var i=0;i=minLevel){console.log(this.time+\\\" [\\\"+severity+\\\"] \\\"+msg);}}};var numArrayToHexArray=function numArrayToHexArray(numArray){var hexArray=[];for(var j=0;jNR_COLS){logger.log(\\\"ERROR\\\",\\\"Too large cursor position \\\"+this.pos);this.pos=NR_COLS;}},/** \\n * Move the cursor relative to current position.\\n */moveCursor:function moveCursor(relPos){var newPos=this.pos+relPos;if(relPos>1){for(var i=this.pos+1;i=0x90){//Extended char\\nthis.backSpace();}var char=getCharForByte(byte);if(this.pos>=NR_COLS){logger.log(\\\"ERROR\\\",\\\"Cannot insert \\\"+byte.toString(16)+\\\" (\\\"+char+\\\") at position \\\"+this.pos+\\\". Skipping it!\\\");return;}this.chars[this.pos].setChar(char,this.currPenState);this.moveCursor(1);},clearFromPos:function clearFromPos(startPos){var i;for(i=startPos;i0){if(asOneRow){text=\\\"[\\\"+displayText.join(\\\" | \\\")+\\\"]\\\";}else{text=displayText.join(\\\"\\\\n\\\");}}return text;},getTextAndFormat:function getTextAndFormat(){return this.rows;}};/**\\n * Handle a CEA-608 channel and send decoded data to outputFilter\\n * @constructor\\n * @param {Number} channelNumber (1 or 2)\\n * @param {CueHandler} outputFilter Output from channel1 newCue(startTime, endTime, captionScreen)\\n */var Cea608Channel=function Cea608Channel(channelNumber,outputFilter){this.chNr=channelNumber;this.outputFilter=outputFilter;this.mode=null;this.verbose=0;this.displayedMemory=new CaptionScreen();this.nonDisplayedMemory=new CaptionScreen();this.lastOutputScreen=new CaptionScreen();this.currRollUpRow=this.displayedMemory.rows[NR_ROWS-1];this.writeScreen=this.displayedMemory;this.mode=null;this.cueStartTime=null;// Keeps track of where a cue started.\\n};Cea608Channel.prototype={modes:[\\\"MODE_ROLL-UP\\\",\\\"MODE_POP-ON\\\",\\\"MODE_PAINT-ON\\\",\\\"MODE_TEXT\\\"],reset:function reset(){this.mode=null;this.displayedMemory.reset();this.nonDisplayedMemory.reset();this.lastOutputScreen.reset();this.currRollUpRow=this.displayedMemory.rows[NR_ROWS-1];this.writeScreen=this.displayedMemory;this.mode=null;this.cueStartTime=null;this.lastCueEndTime=null;},getHandler:function getHandler(){return this.outputFilter;},setHandler:function setHandler(newHandler){this.outputFilter=newHandler;},setPAC:function setPAC(pacData){this.writeScreen.setPAC(pacData);},setBkgData:function setBkgData(bkgData){this.writeScreen.setBkgData(bkgData);},setMode:function setMode(newMode){if(newMode===this.mode){return;}this.mode=newMode;logger.log(\\\"INFO\\\",\\\"MODE=\\\"+newMode);if(this.mode==\\\"MODE_POP-ON\\\"){this.writeScreen=this.nonDisplayedMemory;}else{this.writeScreen=this.displayedMemory;this.writeScreen.reset();}if(this.mode!==\\\"MODE_ROLL-UP\\\"){this.displayedMemory.nrRollUpRows=null;this.nonDisplayedMemory.nrRollUpRows=null;}this.mode=newMode;},insertChars:function insertChars(chars){for(var i=0;i=0x2e;if(!styles.italics){var colorIndex=Math.floor(secondByte/2)-0x10;var colors=[\\\"white\\\",\\\"green\\\",\\\"blue\\\",\\\"cyan\\\",\\\"red\\\",\\\"yellow\\\",\\\"magenta\\\"];styles.foreground=colors[colorIndex];}else{styles.foreground=\\\"white\\\";}logger.log(\\\"INFO\\\",\\\"MIDROW: \\\"+JSON.stringify(styles));this.writeScreen.setPen(styles);},outputDataUpdate:function outputDataUpdate(){var t=logger.time;if(t===null){return;}if(this.outputFilter){if(this.outputFilter.updateData){this.outputFilter.updateData(t,this.displayedMemory);}if(this.cueStartTime===null&&!this.displayedMemory.isEmpty()){// Start of a new cue\\nthis.cueStartTime=t;}else{if(!this.displayedMemory.equals(this.lastOutputScreen)){if(this.outputFilter.newCue){this.outputFilter.newCue(this.cueStartTime,t,this.lastOutputScreen);}this.cueStartTime=this.displayedMemory.isEmpty()?null:t;}}this.lastOutputScreen.copy(this.displayedMemory);}},cueSplitAtTime:function cueSplitAtTime(t){if(this.outputFilter){if(!this.displayedMemory.isEmpty()){if(this.outputFilter.newCue){this.outputFilter.newCue(this.cueStartTime,t,this.displayedMemory);}this.cueStartTime=t;}}}};/**\\n * Parse CEA-608 data and send decoded data to out1 and out2.\\n * @constructor\\n * @param {Number} field CEA-608 field (1 or 2)\\n * @param {CueHandler} out1 Output from channel1 newCue(startTime, endTime, captionScreen)\\n * @param {CueHandler} out2 Output from channel2 newCue(startTime, endTime, captionScreen)\\n */var Cea608Parser=function Cea608Parser(field,out1,out2){this.field=field||1;this.outputs=[out1,out2];this.channels=[new Cea608Channel(1,out1),new Cea608Channel(2,out2)];this.currChNr=-1;// Will be 1 or 2\\nthis.lastCmdA=null;// First byte of last command\\nthis.lastCmdB=null;// Second byte of last command\\nthis.bufferedData=[];this.startTime=null;this.lastTime=null;this.dataCounters={'padding':0,'char':0,'cmd':0,'other':0};};Cea608Parser.prototype={getHandler:function getHandler(index){return this.channels[index].getHandler();},setHandler:function setHandler(index,newHandler){this.channels[index].setHandler(newHandler);},/**\\n * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs.\\n */addData:function addData(t,byteList){var cmdFound,a,b,charsFound=false;this.lastTime=t;logger.setTime(t);for(var i=0;i=0x10&&a<=0x1f&&a===this.lastCmdA&&b===this.lastCmdB){this.lastCmdA=null;this.lastCmdB=null;logger.log(\\\"DEBUG\\\",\\\"Repeated command (\\\"+numArrayToHexArray([a,b])+\\\") is dropped\\\");continue;// Repeated commands are dropped (once)\\n}if(a===0&&b===0){this.dataCounters.padding+=2;continue;}else{logger.log(\\\"DATA\\\",\\\"[\\\"+numArrayToHexArray([byteList[i],byteList[i+1]])+\\\"] -> (\\\"+numArrayToHexArray([a,b])+\\\")\\\");}cmdFound=this.parseCmd(a,b);if(!cmdFound){cmdFound=this.parseMidrow(a,b);}if(!cmdFound){cmdFound=this.parsePAC(a,b);}if(!cmdFound){cmdFound=this.parseBackgroundAttributes(a,b);}if(!cmdFound){charsFound=this.parseChars(a,b);if(charsFound){if(this.currChNr&&this.currChNr>=0){var channel=this.channels[this.currChNr-1];channel.insertChars(charsFound);}else{logger.log(\\\"WARNING\\\",\\\"No channel found yet. TEXT-MODE?\\\");}}}if(cmdFound){this.dataCounters.cmd+=2;}else if(charsFound){this.dataCounters.char+=2;}else{this.dataCounters.other+=2;logger.log(\\\"WARNING\\\",\\\"Couldn't parse cleaned data \\\"+numArrayToHexArray([a,b])+\\\" orig: \\\"+numArrayToHexArray([byteList[i],byteList[i+1]]));}}},/**\\n * Parse Command.\\n * @returns {Boolean} Tells if a command was found\\n */parseCmd:function parseCmd(a,b){var chNr=null;var cond1=(a===0x14||a===0x15||a===0x1C||a===0x1D)&&0x20<=b&&b<=0x2F;var cond2=(a===0x17||a===0x1F)&&0x21<=b&&b<=0x23;if(!(cond1||cond2)){return false;}if(a===0x14||a===0x15||a===0x17){chNr=1;}else{chNr=2;// (a === 0x1C || a === 0x1D || a=== 0x1f)\\n}var channel=this.channels[chNr-1];if(a===0x14||a===0x15||a===0x1C||a===0x1D){if(b===0x20){channel.cc_RCL();}else if(b===0x21){channel.cc_BS();}else if(b===0x22){channel.cc_AOF();}else if(b===0x23){channel.cc_AON();}else if(b===0x24){channel.cc_DER();}else if(b===0x25){channel.cc_RU(2);}else if(b===0x26){channel.cc_RU(3);}else if(b===0x27){channel.cc_RU(4);}else if(b===0x28){channel.cc_FON();}else if(b===0x29){channel.cc_RDC();}else if(b===0x2A){channel.cc_TR();}else if(b===0x2B){channel.cc_RTD();}else if(b===0x2C){channel.cc_EDM();}else if(b===0x2D){channel.cc_CR();}else if(b===0x2E){channel.cc_ENM();}else if(b===0x2F){channel.cc_EOC();}}else{//a == 0x17 || a == 0x1F\\nchannel.cc_TO(b-0x20);}this.lastCmdA=a;this.lastCmdB=b;this.currChNr=chNr;return true;},/**\\n * Parse midrow styling command\\n * @returns {Boolean}\\n */parseMidrow:function parseMidrow(a,b){var chNr=null;if((a===0x11||a===0x19)&&0x20<=b&&b<=0x2f){if(a===0x11){chNr=1;}else{chNr=2;}if(chNr!==this.currChNr){logger.log(\\\"ERROR\\\",\\\"Mismatch channel in midrow parsing\\\");return false;}var channel=this.channels[chNr-1];// cea608 spec says midrow codes should inject a space\\nchannel.insertChars([0x20]);channel.cc_MIDROW(b);logger.log(\\\"DEBUG\\\",\\\"MIDROW (\\\"+numArrayToHexArray([a,b])+\\\")\\\");this.lastCmdA=a;this.lastCmdB=b;return true;}return false;},/**\\n * Parse Preable Access Codes (Table 53).\\n * @returns {Boolean} Tells if PAC found\\n */parsePAC:function parsePAC(a,b){var chNr=null;var row=null;var case1=(0x11<=a&&a<=0x17||0x19<=a&&a<=0x1F)&&0x40<=b&&b<=0x7F;var case2=(a===0x10||a===0x18)&&0x40<=b&&b<=0x5F;if(!(case1||case2)){return false;}chNr=a<=0x17?1:2;if(0x40<=b&&b<=0x5F){row=chNr===1?rowsLowCh1[a]:rowsLowCh2[a];}else{// 0x60 <= b <= 0x7F\\nrow=chNr===1?rowsHighCh1[a]:rowsHighCh2[a];}var pacData=this.interpretPAC(row,b);var channel=this.channels[chNr-1];channel.setPAC(pacData);this.lastCmdA=a;this.lastCmdB=b;this.currChNr=chNr;return true;},/**\\n * Interpret the second byte of the pac, and return the information.\\n * @returns {Object} pacData with style parameters.\\n */interpretPAC:function interpretPAC(row,byte){var pacIndex=byte;var pacData={color:null,italics:false,indent:null,underline:false,row:row};if(byte>0x5F){pacIndex=byte-0x60;}else{pacIndex=byte-0x40;}pacData.underline=(pacIndex&1)===1;if(pacIndex<=0xd){pacData.color=['white','green','blue','cyan','red','yellow','magenta','white'][Math.floor(pacIndex/2)];}else if(pacIndex<=0xf){pacData.italics=true;pacData.color='white';}else{pacData.indent=Math.floor((pacIndex-0x10)/2)*4;}return pacData;// Note that row has zero offset. The spec uses 1.\\n},/**\\n * Parse characters.\\n * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise.\\n */parseChars:function parseChars(a,b){var channelNr=null,charCodes=null,charCode1=null,charCode2=null;if(a>=0x19){channelNr=2;charCode1=a-8;}else{channelNr=1;charCode1=a;}if(0x11<=charCode1&&charCode1<=0x13){// Special character\\nvar oneCode=b;if(charCode1===0x11){oneCode=b+0x50;}else if(charCode1===0x12){oneCode=b+0x70;}else{oneCode=b+0x90;}logger.log(\\\"INFO\\\",\\\"Special char '\\\"+getCharForByte(oneCode)+\\\"' in channel \\\"+channelNr);charCodes=[oneCode];this.lastCmdA=a;this.lastCmdB=b;}else if(0x20<=a&&a<=0x7f){charCodes=b===0?[a]:[a,b];this.lastCmdA=null;this.lastCmdB=null;}if(charCodes){var hexCodes=numArrayToHexArray(charCodes);logger.log(\\\"DEBUG\\\",\\\"Char codes = \\\"+hexCodes.join(\\\",\\\"));}return charCodes;},/**\\n * Parse extended background attributes as well as new foreground color black.\\n * @returns{Boolean} Tells if background attributes are found\\n */parseBackgroundAttributes:function parseBackgroundAttributes(a,b){var bkgData,index,chNr,channel;var case1=(a===0x10||a===0x18)&&0x20<=b&&b<=0x2f;var case2=(a===0x17||a===0x1f)&&0x2d<=b&&b<=0x2f;if(!(case1||case2)){return false;}bkgData={};if(a===0x10||a===0x18){index=Math.floor((b-0x20)/2);bkgData.background=backgroundColors[index];if(b%2===1){bkgData.background=bkgData.background+\\\"_semi\\\";}}else if(b===0x2d){bkgData.background=\\\"transparent\\\";}else{bkgData.foreground=\\\"black\\\";if(b===0x2f){bkgData.underline=true;}}chNr=a<0x18?1:2;channel=this.channels[chNr-1];channel.setBkgData(bkgData);this.lastCmdA=a;this.lastCmdB=b;return true;},/**\\n * Reset state of parser and its channels.\\n */reset:function reset(){for(var i=0;i/g,'>').replace(/\\\"/g,'"').replace(/'/g,''');else return str;}function unescapeXmlChars(str){return str.replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'\\\"').replace(/'/g,\\\"'\\\").replace(/&/g,'&');}function checkInStdFiltersArrayForm(stdFiltersArrayForm,obj,name,path){var idx=0;for(;idx0){if(checkInStdFiltersArrayForm(config.arrayAccessFormPaths,obj,childName,path)){obj[childName]=[obj[childName]];}}}function fromXmlDateTime(prop){// Implementation based up on http://stackoverflow.com/questions/8178598/xml-datetime-to-javascript-date-object\\n// Improved to support full spec and optional parts\\nvar bits=prop.split(/[-T:+Z]/g);var d=new Date(bits[0],bits[1]-1,bits[2]);var secondBits=bits[5].split(\\\"\\\\.\\\");d.setHours(bits[3],bits[4],secondBits[0]);if(secondBits.length>1)d.setMilliseconds(secondBits[1]);// Get supplied time zone offset in minutes\\nif(bits[6]&&bits[7]){var offsetMinutes=bits[6]*60+Number(bits[7]);var sign=/\\\\d\\\\d-\\\\d\\\\d:\\\\d\\\\d$/.test(prop)?'-':'+';// Apply the sign\\noffsetMinutes=0+(sign=='-'?-1*offsetMinutes:offsetMinutes);// Apply offset and local timezone\\nd.setMinutes(d.getMinutes()-offsetMinutes-d.getTimezoneOffset());}else if(prop.indexOf(\\\"Z\\\",prop.length-1)!==-1){d=new Date(Date.UTC(d.getFullYear(),d.getMonth(),d.getDate(),d.getHours(),d.getMinutes(),d.getSeconds(),d.getMilliseconds()));}// d is now a local time equivalent to the supplied time\\nreturn d;}function checkFromXmlDateTimePaths(value,childName,fullPath){if(config.datetimeAccessFormPaths.length>0){var path=fullPath.split(\\\"\\\\.#\\\")[0];if(checkInStdFiltersArrayForm(config.datetimeAccessFormPaths,value,childName,path)){return fromXmlDateTime(value);}else return value;}else return value;}function checkXmlElementsFilter(obj,childType,childName,childPath){if(childType==DOMNodeTypes.ELEMENT_NODE&&config.xmlElementsFilter.length>0){return checkInStdFiltersArrayForm(config.xmlElementsFilter,obj,childName,childPath);}else return true;}function parseDOMChildren(node,path){if(node.nodeType==DOMNodeTypes.DOCUMENT_NODE){var result=new Object();var nodeChildren=node.childNodes;// Alternative for firstElementChild which is not supported in some environments\\nfor(var cidx=0;cidx1&&result.__text!=null&&config.skipEmptyTextNodesForObj){if(config.stripWhitespaces&&result.__text==\\\"\\\"||result.__text.trim()==\\\"\\\"){delete result.__text;}}delete result.__cnt;if(config.enableToStringFunc&&(result.__text!=null||result.__cdata!=null)){result.toString=function(){return(this.__text!=null?this.__text:'')+(this.__cdata!=null?this.__cdata:'');};}return result;}else if(node.nodeType==DOMNodeTypes.TEXT_NODE||node.nodeType==DOMNodeTypes.CDATA_SECTION_NODE){return node.nodeValue;}}function startTag(jsonObj,element,attrList,closed){var resultStr=\\\"<\\\"+(jsonObj!=null&&jsonObj.__prefix!=null?jsonObj.__prefix+\\\":\\\":\\\"\\\")+element;if(attrList!=null){for(var aidx=0;aidx\\\";else resultStr+=\\\"/>\\\";return resultStr;}function endTag(jsonObj,elementName){return\\\"\\\";}function endsWith(str,suffix){return str.indexOf(suffix,str.length-suffix.length)!==-1;}function jsonXmlSpecialElem(jsonObj,jsonObjField){if(config.arrayAccessForm==\\\"property\\\"&&endsWith(jsonObjField.toString(),\\\"_asArray\\\")||jsonObjField.toString().indexOf(config.attributePrefix)==0||jsonObjField.toString().indexOf(\\\"__\\\")==0||jsonObj[jsonObjField]instanceof Function)return true;else return false;}function jsonXmlElemCount(jsonObj){var elementsCnt=0;if(jsonObj instanceof Object){for(var it in jsonObj){if(jsonXmlSpecialElem(jsonObj,it))continue;elementsCnt++;}}return elementsCnt;}function checkJsonObjPropertiesFilter(jsonObj,propertyName,jsonObjPath){return config.jsonPropertiesFilter.length==0||jsonObjPath==\\\"\\\"||checkInStdFiltersArrayForm(config.jsonPropertiesFilter,jsonObj,propertyName,jsonObjPath);}function parseJSONAttributes(jsonObj){var attrList=[];if(jsonObj instanceof Object){for(var ait in jsonObj){if(ait.toString().indexOf(\\\"__\\\")==-1&&ait.toString().indexOf(config.attributePrefix)==0){attrList.push(ait);}}}return attrList;}function parseJSONTextAttrs(jsonTxtObj){var result=\\\"\\\";if(jsonTxtObj.__cdata!=null){result+=\\\"\\\";}if(jsonTxtObj.__text!=null){if(config.escapeMode)result+=escapeXmlChars(jsonTxtObj.__text);else result+=jsonTxtObj.__text;}return result;}function parseJSONTextObject(jsonTxtObj){var result=\\\"\\\";if(jsonTxtObj instanceof Object){result+=parseJSONTextAttrs(jsonTxtObj);}else if(jsonTxtObj!=null){if(config.escapeMode)result+=escapeXmlChars(jsonTxtObj);else result+=jsonTxtObj;}return result;}function getJsonPropertyPath(jsonObjPath,jsonPropName){if(jsonObjPath===\\\"\\\"){return jsonPropName;}else return jsonObjPath+\\\".\\\"+jsonPropName;}function parseJSONArray(jsonArrRoot,jsonArrObj,attrList,jsonObjPath){var result=\\\"\\\";if(jsonArrRoot.length==0){result+=startTag(jsonArrRoot,jsonArrObj,attrList,true);}else{for(var arIdx=0;arIdx0){for(var it in jsonObj){if(jsonXmlSpecialElem(jsonObj,it)||jsonObjPath!=\\\"\\\"&&!checkJsonObjPropertiesFilter(jsonObj,it,getJsonPropertyPath(jsonObjPath,it)))continue;var subObj=jsonObj[it];var attrList=parseJSONAttributes(subObj);if(subObj==null||subObj==undefined){result+=startTag(subObj,it,attrList,true);}else if(subObj instanceof Object){if(subObj instanceof Array){result+=parseJSONArray(subObj,it,attrList,jsonObjPath);}else if(subObj instanceof Date){result+=startTag(subObj,it,attrList,false);result+=subObj.toISOString();result+=endTag(subObj,it);}else{var subObjElementsCnt=jsonXmlElemCount(subObj);if(subObjElementsCnt>0||subObj.__text!=null||subObj.__cdata!=null){result+=startTag(subObj,it,attrList,false);result+=parseJSONObject(subObj,getJsonPropertyPath(jsonObjPath,it));result+=endTag(subObj,it);}else{result+=startTag(subObj,it,attrList,true);}}}else{result+=startTag(subObj,it,attrList,false);result+=parseJSONTextObject(subObj);result+=endTag(subObj,it);}}}result+=parseJSONTextObject(jsonObj);return result;}this.parseXmlString=function(xmlDocStr){var isIEParser=window.ActiveXObject||\\\"ActiveXObject\\\"in window;if(xmlDocStr===undefined){return null;}var xmlDoc;if(window.DOMParser){var parser=new window.DOMParser();var parsererrorNS=null;try{xmlDoc=parser.parseFromString(xmlDocStr,\\\"text/xml\\\");if(xmlDoc.getElementsByTagNameNS(\\\"*\\\",\\\"parsererror\\\").length>0){xmlDoc=null;}}catch(err){xmlDoc=null;}}else{// IE :(\\nif(xmlDocStr.indexOf(\\\"\\\")+2);}xmlDoc=new ActiveXObject(\\\"Microsoft.XMLDOM\\\");xmlDoc.async=\\\"false\\\";xmlDoc.loadXML(xmlDocStr);}return xmlDoc;};this.asArray=function(prop){if(prop===undefined||prop==null)return[];else if(prop instanceof Array)return prop;else return[prop];};this.toXmlDateTime=function(dt){if(dt instanceof Date)return dt.toISOString();else if(typeof dt==='number')return new Date(dt).toISOString();else return null;};this.asDateTime=function(prop){if(typeof prop==\\\"string\\\"){return fromXmlDateTime(prop);}else return prop;};this.xml2json=function(xmlDoc){return parseDOMChildren(xmlDoc);};this.xml_str2json=function(xmlDocStr){var xmlDoc=this.parseXmlString(xmlDocStr);if(xmlDoc!=null)return this.xml2json(xmlDoc);else return null;};this.json2xml_str=function(jsonObj){return parseJSONObject(jsonObj,\\\"\\\");};this.json2xml=function(jsonObj){var xmlDocStr=this.json2xml_str(jsonObj);return this.parseXmlString(xmlDocStr);};this.getVersion=function(){return VERSION;};}exports.default=X2JS;\\n//# sourceMappingURL=xml2json.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/externals/xml2json.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/index.js\":\n/*!*************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/index.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});exports.supportsMediaSource=exports.Debug=exports.MediaPlayerFactory=exports.MetricsReporting=exports.Protection=exports.MediaPlayer=undefined;var _index_mediaplayerOnly=__webpack_require__(/*! ./index_mediaplayerOnly */ \\\"../node_modules/dashjs/build/es5/index_mediaplayerOnly.js\\\");var _Capabilities=__webpack_require__(/*! ./src/streaming/utils/Capabilities */ \\\"../node_modules/dashjs/build/es5/src/streaming/utils/Capabilities.js\\\");var _MetricsReporting=__webpack_require__(/*! ./src/streaming/metrics/MetricsReporting */ \\\"../node_modules/dashjs/build/es5/src/streaming/metrics/MetricsReporting.js\\\");var _MetricsReporting2=_interopRequireDefault(_MetricsReporting);var _Protection=__webpack_require__(/*! ./src/streaming/protection/Protection */ \\\"../node_modules/dashjs/build/es5/src/streaming/protection/Protection.js\\\");var _Protection2=_interopRequireDefault(_Protection);var _MediaPlayerFactory=__webpack_require__(/*! ./src/streaming/MediaPlayerFactory */ \\\"../node_modules/dashjs/build/es5/src/streaming/MediaPlayerFactory.js\\\");var _MediaPlayerFactory2=_interopRequireDefault(_MediaPlayerFactory);var _Debug=__webpack_require__(/*! ./src/core/Debug */ \\\"../node_modules/dashjs/build/es5/src/core/Debug.js\\\");var _Debug2=_interopRequireDefault(_Debug);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */dashjs.Protection=_Protection2.default;dashjs.MetricsReporting=_MetricsReporting2.default;dashjs.MediaPlayerFactory=_MediaPlayerFactory2.default;dashjs.Debug=_Debug2.default;dashjs.supportsMediaSource=_Capabilities.supportsMediaSource;exports.default=dashjs;exports.MediaPlayer=_index_mediaplayerOnly.MediaPlayer;exports.Protection=_Protection2.default;exports.MetricsReporting=_MetricsReporting2.default;exports.MediaPlayerFactory=_MediaPlayerFactory2.default;exports.Debug=_Debug2.default;exports.supportsMediaSource=_Capabilities.supportsMediaSource;\\n//# sourceMappingURL=index.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/index.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/index_mediaplayerOnly.js\":\n/*!*****************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/index_mediaplayerOnly.js ***!\n \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(global) {Object.defineProperty(exports,\\\"__esModule\\\",{value:true});exports.Debug=exports.FactoryMaker=exports.MediaPlayer=undefined;var _MediaPlayer=__webpack_require__(/*! ./src/streaming/MediaPlayer */ \\\"../node_modules/dashjs/build/es5/src/streaming/MediaPlayer.js\\\");var _MediaPlayer2=_interopRequireDefault(_MediaPlayer);var _FactoryMaker=__webpack_require__(/*! ./src/core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _Debug=__webpack_require__(/*! ./src/core/Debug */ \\\"../node_modules/dashjs/build/es5/src/core/Debug.js\\\");var _Debug2=_interopRequireDefault(_Debug);var _Version=__webpack_require__(/*! ./src/core/Version */ \\\"../node_modules/dashjs/build/es5/src/core/Version.js\\\");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}// Shove both of these into the global scope\\n/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */var context=typeof window!=='undefined'&&window||global;var dashjs=context.dashjs;if(!dashjs){dashjs=context.dashjs={};}dashjs.MediaPlayer=_MediaPlayer2.default;dashjs.FactoryMaker=_FactoryMaker2.default;dashjs.Debug=_Debug2.default;dashjs.Version=(0,_Version.getVersionString)();exports.default=dashjs;exports.MediaPlayer=_MediaPlayer2.default;exports.FactoryMaker=_FactoryMaker2.default;exports.Debug=_Debug2.default;\\n//# sourceMappingURL=index_mediaplayerOnly.js.map\\n\\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ \\\"../node_modules/webpack/buildin/global.js\\\")))\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/index_mediaplayerOnly.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/core/Debug.js\":\n/*!**********************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/core/Debug.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _EventBus=__webpack_require__(/*! ./EventBus */ \\\"../node_modules/dashjs/build/es5/src/core/EventBus.js\\\");var _EventBus2=_interopRequireDefault(_EventBus);var _Events=__webpack_require__(/*! ./events/Events */ \\\"../node_modules/dashjs/build/es5/src/core/events/Events.js\\\");var _Events2=_interopRequireDefault(_Events);var _FactoryMaker=__webpack_require__(/*! ./FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}var LOG_LEVEL_NONE=0;/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */var LOG_LEVEL_FATAL=1;var LOG_LEVEL_ERROR=2;var LOG_LEVEL_WARNING=3;var LOG_LEVEL_INFO=4;var LOG_LEVEL_DEBUG=5;/**\\n * @module Debug\\n * @param {object} config\\n * @ignore\\n */function Debug(config){config=config||{};var context=this.context;var eventBus=(0,_EventBus2.default)(context).getInstance();var settings=config.settings;var logFn=[];var instance=void 0,showLogTimestamp=void 0,showCalleeName=void 0,startTime=void 0;function setup(){showLogTimestamp=true;showCalleeName=true;startTime=new Date().getTime();if(typeof window!=='undefined'&&window.console){logFn[LOG_LEVEL_FATAL]=getLogFn(window.console.error);logFn[LOG_LEVEL_ERROR]=getLogFn(window.console.error);logFn[LOG_LEVEL_WARNING]=getLogFn(window.console.warn);logFn[LOG_LEVEL_INFO]=getLogFn(window.console.info);logFn[LOG_LEVEL_DEBUG]=getLogFn(window.console.debug);}}function getLogFn(fn){if(fn&&fn.bind){return fn.bind(window.console);}// if not define, return the default function for reporting logs\\nreturn window.console.log.bind(window.console);}/**\\n * Retrieves a logger which can be used to write logging information in browser console.\\n * @param {object} instance Object for which the logger is created. It is used\\n * to include calle object information in log messages.\\n * @memberof module:Debug\\n * @returns {Logger}\\n * @instance\\n */function getLogger(instance){return{fatal:fatal.bind(instance),error:error.bind(instance),warn:warn.bind(instance),info:info.bind(instance),debug:debug.bind(instance)};}/**\\n * Prepends a timestamp in milliseconds to each log message.\\n * @param {boolean} value Set to true if you want to see a timestamp in each log message.\\n * @default LOG_LEVEL_WARNING\\n * @memberof module:Debug\\n * @instance\\n */function setLogTimestampVisible(value){showLogTimestamp=value;}/**\\n * Prepends the callee object name, and media type if available, to each log message.\\n * @param {boolean} value Set to true if you want to see the callee object name and media type in each log message.\\n * @default true\\n * @memberof module:Debug\\n * @instance\\n */function setCalleeNameVisible(value){showCalleeName=value;}function fatal(){for(var _len=arguments.length,params=Array(_len),_key=0;_key<_len;_key++){params[_key]=arguments[_key];}doLog.apply(undefined,[LOG_LEVEL_FATAL,this].concat(params));}function error(){for(var _len2=arguments.length,params=Array(_len2),_key2=0;_key2<_len2;_key2++){params[_key2]=arguments[_key2];}doLog.apply(undefined,[LOG_LEVEL_ERROR,this].concat(params));}function warn(){for(var _len3=arguments.length,params=Array(_len3),_key3=0;_key3<_len3;_key3++){params[_key3]=arguments[_key3];}doLog.apply(undefined,[LOG_LEVEL_WARNING,this].concat(params));}function info(){for(var _len4=arguments.length,params=Array(_len4),_key4=0;_key4<_len4;_key4++){params[_key4]=arguments[_key4];}doLog.apply(undefined,[LOG_LEVEL_INFO,this].concat(params));}function debug(){for(var _len5=arguments.length,params=Array(_len5),_key5=0;_key5<_len5;_key5++){params[_key5]=arguments[_key5];}doLog.apply(undefined,[LOG_LEVEL_DEBUG,this].concat(params));}function doLog(level,_this){var message='';var logTime=null;if(showLogTimestamp){logTime=new Date().getTime();message+='['+(logTime-startTime)+']';}if(showCalleeName&&_this&&_this.getClassName){message+='['+_this.getClassName()+']';if(_this.getType){message+='['+_this.getType()+']';}}if(message.length>0){message+=' ';}for(var _len6=arguments.length,params=Array(_len6>2?_len6-2:0),_key6=2;_key6<_len6;_key6++){params[_key6-2]=arguments[_key6];}Array.apply(null,params).forEach(function(item){message+=item+' ';});// log to console if the log level is high enough\\nif(logFn[level]&&settings.get().debug.logLevel>=level){logFn[level](message);}// send log event regardless of log level\\nif(settings&&settings.get().debug.dispatchEvent){eventBus.trigger(_Events2.default.LOG,{message:message,level:level});}}instance={getLogger:getLogger,setLogTimestampVisible:setLogTimestampVisible,setCalleeNameVisible:setCalleeNameVisible};setup();return instance;}Debug.__dashjs_factory_name='Debug';var factory=_FactoryMaker2.default.getSingletonFactory(Debug);factory.LOG_LEVEL_NONE=LOG_LEVEL_NONE;factory.LOG_LEVEL_FATAL=LOG_LEVEL_FATAL;factory.LOG_LEVEL_ERROR=LOG_LEVEL_ERROR;factory.LOG_LEVEL_WARNING=LOG_LEVEL_WARNING;factory.LOG_LEVEL_INFO=LOG_LEVEL_INFO;factory.LOG_LEVEL_DEBUG=LOG_LEVEL_DEBUG;_FactoryMaker2.default.updateSingletonFactory(Debug.__dashjs_factory_name,factory);exports.default=factory;\\n//# sourceMappingURL=Debug.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/core/Debug.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/core/EventBus.js\":\n/*!*************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/core/EventBus.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _FactoryMaker=__webpack_require__(/*! ./FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _MediaPlayerEvents=__webpack_require__(/*! ../streaming/MediaPlayerEvents */ \\\"../node_modules/dashjs/build/es5/src/streaming/MediaPlayerEvents.js\\\");var _MediaPlayerEvents2=_interopRequireDefault(_MediaPlayerEvents);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */var EVENT_PRIORITY_LOW=0;var EVENT_PRIORITY_HIGH=5000;function EventBus(){var handlers={};function on(type,listener,scope){var options=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};if(!type){throw new Error('event type cannot be null or undefined');}if(!listener||typeof listener!=='function'){throw new Error('listener must be a function: '+listener);}var priority=options.priority||EVENT_PRIORITY_LOW;if(getHandlerIdx(type,listener,scope)>=0)return;handlers[type]=handlers[type]||[];var handler={callback:listener,scope:scope,priority:priority};if(scope&&scope.getStreamId){handler.streamId=scope.getStreamId();}if(scope&&scope.getType){handler.mediaType=scope.getType();}if(options&&options.mode){handler.mode=options.mode;}var inserted=handlers[type].some(function(item,idx){if(item&&priority>item.priority){handlers[type].splice(idx,0,handler);return true;}});if(!inserted){handlers[type].push(handler);}}function off(type,listener,scope){if(!type||!listener||!handlers[type])return;var idx=getHandlerIdx(type,listener,scope);if(idx<0)return;handlers[type][idx]=null;}function trigger(type){var payload=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var filters=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};if(!type||!handlers[type])return;payload=payload||{};if(payload.hasOwnProperty('type'))throw new Error('\\\\'type\\\\' is a reserved word for event dispatching');payload.type=type;if(filters.streamId){payload.streamId=filters.streamId;}if(filters.mediaType){payload.mediaType=filters.mediaType;}handlers[type].filter(function(handler){if(!handler){return false;}if(filters.streamId&&handler.streamId&&handler.streamId!==filters.streamId){return false;}if(filters.mediaType&&handler.mediaType&&handler.mediaType!==filters.mediaType){return false;}// This is used for dispatching DASH events. By default we use the onStart mode. Consequently we filter everything that has a non matching mode and the onReceive events for handlers that did not specify a mode.\\nif(filters.mode&&handler.mode&&handler.mode!==filters.mode||!handler.mode&&filters.mode&&filters.mode===_MediaPlayerEvents2.default.EVENT_MODE_ON_RECEIVE){return false;}return true;}).forEach(function(handler){return handler&&handler.callback.call(handler.scope,payload);});}function getHandlerIdx(type,listener,scope){var idx=-1;if(!handlers[type])return idx;handlers[type].some(function(item,index){if(item&&item.callback===listener&&(!scope||scope===item.scope)){idx=index;return true;}});return idx;}function reset(){handlers={};}var instance={on:on,off:off,trigger:trigger,reset:reset};return instance;}EventBus.__dashjs_factory_name='EventBus';var factory=_FactoryMaker2.default.getSingletonFactory(EventBus);factory.EVENT_PRIORITY_LOW=EVENT_PRIORITY_LOW;factory.EVENT_PRIORITY_HIGH=EVENT_PRIORITY_HIGH;_FactoryMaker2.default.updateSingletonFactory(EventBus.__dashjs_factory_name,factory);exports.default=factory;\\n//# sourceMappingURL=EventBus.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/core/EventBus.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\":\n/*!*****************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/core/FactoryMaker.js ***!\n \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n *//**\\n * @module FactoryMaker\\n * @ignore\\n */var FactoryMaker=function(){var instance=void 0;var singletonContexts=[];var singletonFactories={};var classFactories={};function extend(name,childInstance,override,context){if(!context[name]&&childInstance){context[name]={instance:childInstance,override:override};}}/**\\n * Use this method from your extended object. this.factory is injected into your object.\\n * this.factory.getSingletonInstance(this.context, 'VideoModel')\\n * will return the video model for use in the extended object.\\n *\\n * @param {Object} context - injected into extended object as this.context\\n * @param {string} className - string name found in all dash.js objects\\n * with name __dashjs_factory_name Will be at the bottom. Will be the same as the object's name.\\n * @returns {*} Context aware instance of specified singleton name.\\n * @memberof module:FactoryMaker\\n * @instance\\n */function getSingletonInstance(context,className){for(var i in singletonContexts){var obj=singletonContexts[i];if(obj.context===context&&obj.name===className){return obj.instance;}}return null;}/**\\n * Use this method to add an singleton instance to the system. Useful for unit testing to mock objects etc.\\n *\\n * @param {Object} context\\n * @param {string} className\\n * @param {Object} instance\\n * @memberof module:FactoryMaker\\n * @instance\\n */function setSingletonInstance(context,className,instance){for(var i in singletonContexts){var obj=singletonContexts[i];if(obj.context===context&&obj.name===className){singletonContexts[i].instance=instance;return;}}singletonContexts.push({name:className,context:context,instance:instance});}/**\\n * Use this method to remove all singleton instances associated with a particular context.\\n *\\n * @param {Object} context\\n * @memberof module:FactoryMaker\\n * @instance\\n */function deleteSingletonInstances(context){singletonContexts=singletonContexts.filter(function(x){return x.context!==context;});}/*------------------------------------------------------------------------------------------*/// Factories storage Management\\n/*------------------------------------------------------------------------------------------*/function getFactoryByName(name,factoriesArray){return factoriesArray[name];}function updateFactory(name,factory,factoriesArray){if(name in factoriesArray){factoriesArray[name]=factory;}}/*------------------------------------------------------------------------------------------*/// Class Factories Management\\n/*------------------------------------------------------------------------------------------*/function updateClassFactory(name,factory){updateFactory(name,factory,classFactories);}function getClassFactoryByName(name){return getFactoryByName(name,classFactories);}function getClassFactory(classConstructor){var factory=getFactoryByName(classConstructor.__dashjs_factory_name,classFactories);if(!factory){factory=function factory(context){if(context===undefined){context={};}return{create:function create(){return merge(classConstructor,context,arguments);}};};classFactories[classConstructor.__dashjs_factory_name]=factory;// store factory\\n}return factory;}/*------------------------------------------------------------------------------------------*/// Singleton Factory MAangement\\n/*------------------------------------------------------------------------------------------*/function updateSingletonFactory(name,factory){updateFactory(name,factory,singletonFactories);}function getSingletonFactoryByName(name){return getFactoryByName(name,singletonFactories);}function getSingletonFactory(classConstructor){var factory=getFactoryByName(classConstructor.__dashjs_factory_name,singletonFactories);if(!factory){factory=function factory(context){var instance=void 0;if(context===undefined){context={};}return{getInstance:function getInstance(){// If we don't have an instance yet check for one on the context\\nif(!instance){instance=getSingletonInstance(context,classConstructor.__dashjs_factory_name);}// If there's no instance on the context then create one\\nif(!instance){instance=merge(classConstructor,context,arguments);singletonContexts.push({name:classConstructor.__dashjs_factory_name,context:context,instance:instance});}return instance;}};};singletonFactories[classConstructor.__dashjs_factory_name]=factory;// store factory\\n}return factory;}function merge(classConstructor,context,args){var classInstance=void 0;var className=classConstructor.__dashjs_factory_name;var extensionObject=context[className];if(extensionObject){var extension=extensionObject.instance;if(extensionObject.override){//Override public methods in parent but keep parent.\\nclassInstance=classConstructor.apply({context:context},args);extension=extension.apply({context:context,factory:instance,parent:classInstance},args);for(var prop in extension){if(classInstance.hasOwnProperty(prop)){classInstance[prop]=extension[prop];}}}else{//replace parent object completely with new object. Same as dijon.\\nreturn extension.apply({context:context,factory:instance},args);}}else{// Create new instance of the class\\nclassInstance=classConstructor.apply({context:context},args);}// Add getClassName function to class instance prototype (used by Debug)\\nclassInstance.getClassName=function(){return className;};return classInstance;}instance={extend:extend,getSingletonInstance:getSingletonInstance,setSingletonInstance:setSingletonInstance,deleteSingletonInstances:deleteSingletonInstances,getSingletonFactory:getSingletonFactory,getSingletonFactoryByName:getSingletonFactoryByName,updateSingletonFactory:updateSingletonFactory,getClassFactory:getClassFactory,getClassFactoryByName:getClassFactoryByName,updateClassFactory:updateClassFactory};return instance;}();exports.default=FactoryMaker;\\n//# sourceMappingURL=FactoryMaker.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/core/FactoryMaker.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/core/Settings.js\":\n/*!*************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/core/Settings.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _typeof=typeof Symbol===\\\"function\\\"&&typeof Symbol.iterator===\\\"symbol\\\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\\\"function\\\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\\\"symbol\\\":typeof obj;};var _FactoryMaker=__webpack_require__(/*! ./FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _Utils=__webpack_require__(/*! ./Utils.js */ \\\"../node_modules/dashjs/build/es5/src/core/Utils.js\\\");var _Utils2=_interopRequireDefault(_Utils);var _Debug=__webpack_require__(/*! ../core/Debug */ \\\"../node_modules/dashjs/build/es5/src/core/Debug.js\\\");var _Debug2=_interopRequireDefault(_Debug);var _Constants=__webpack_require__(/*! ../streaming/constants/Constants */ \\\"../node_modules/dashjs/build/es5/src/streaming/constants/Constants.js\\\");var _Constants2=_interopRequireDefault(_Constants);var _HTTPRequest=__webpack_require__(/*! ../streaming/vo/metrics/HTTPRequest */ \\\"../node_modules/dashjs/build/es5/src/streaming/vo/metrics/HTTPRequest.js\\\");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n *//** @module Settings\\n * @description Define the configuration parameters of Dash.js MediaPlayer.\\n * @see {@link module:Settings~PlayerSettings PlayerSettings} for further information about the supported configuration properties.\\n *//**\\n * @typedef {Object} PlayerSettings\\n * @property {module:Settings~DebugSettings} [debug]\\n * Debug related settings.\\n * @property {module:Settings~StreamingSettings} [streaming]\\n * Streaming related settings.\\n * @example\\n *\\n * // Full settings object\\n * settings = {\\n * debug: {\\n * logLevel: Debug.LOG_LEVEL_WARNING,\\n * dispatchEvent: false\\n * },\\n * streaming: {\\n * metricsMaxListDepth: 1000,\\n * abandonLoadTimeout: 10000,\\n * liveDelayFragmentCount: NaN,\\n * liveDelay: null,\\n * scheduleWhilePaused: true,\\n * fastSwitchEnabled: false,\\n * flushBufferAtTrackSwitch: false,\\n * calcSegmentAvailabilityRangeFromTimeline: false,\\n * reuseExistingSourceBuffers: true,\\n * bufferPruningInterval: 10,\\n * bufferToKeep: 20,\\n * jumpGaps: true,\\n * jumpLargeGaps: true,\\n * smallGapLimit: 1.5,\\n * stableBufferTime: 12,\\n * bufferTimeAtTopQuality: 30,\\n * bufferTimeAtTopQualityLongForm: 60,\\n * longFormContentDurationThreshold: 600,\\n * wallclockTimeUpdateInterval: 50,\\n * lowLatencyEnabled: false,\\n * keepProtectionMediaKeys: false,\\n * useManifestDateHeaderTimeSource: true,\\n * useSuggestedPresentationDelay: true,\\n * useAppendWindow: true,\\n * manifestUpdateRetryInterval: 100,\\n * stallThreshold: 0.5,\\n * filterUnsupportedEssentialProperties: true,\\n * eventControllerRefreshDelay: 100,\\n * utcSynchronization: {\\n * backgroundAttempts: 2,\\n * timeBetweenSyncAttempts: 30,\\n * maximumTimeBetweenSyncAttempts: 600,\\n * minimumTimeBetweenSyncAttempts: 2,\\n * timeBetweenSyncAttemptsAdjustmentFactor: 2,\\n * maximumAllowedDrift: 100,\\n * enableBackgroundSyncAfterSegmentDownloadError: true,\\n * defaultTimingSource: {\\n * scheme: 'urn:mpeg:dash:utc:http-xsdate:2014',\\n * value: 'http://time.akamai.com/?iso&ms'\\n * }\\n * },\\n * liveCatchup: {\\n * minDrift: 0.02,\\n * maxDrift: 0,\\n * playbackRate: 0.5,\\n * latencyThreshold: NaN,\\n * playbackBufferMin: NaN,\\n * enabled: false,\\n * mode: Constants.LIVE_CATCHUP_MODE_DEFAULT\\n * },\\n * lastBitrateCachingInfo: { enabled: true, ttl: 360000 },\\n * lastMediaSettingsCachingInfo: { enabled: true, ttl: 360000 },\\n * cacheLoadThresholds: { video: 50, audio: 5 },\\n * trackSwitchMode: {\\n * audio: Constants.TRACK_SWITCH_MODE_ALWAYS_REPLACE,\\n * video: Constants.TRACK_SWITCH_MODE_NEVER_REPLACE\\n * },\\n * selectionModeForInitialTrack: Constants.TRACK_SELECTION_MODE_HIGHEST_BITRATE,\\n * fragmentRequestTimeout: 0,\\n * retryIntervals: {\\n * MPD: 500,\\n * XLinkExpansion: 500,\\n * InitializationSegment: 1000,\\n * IndexSegment: 1000,\\n * MediaSegment: 1000,\\n * BitstreamSwitchingSegment: 1000,\\n * FragmentInfoSegment: 1000,\\n * other: 1000,\\n * lowLatencyReductionFactor: 10\\n * },\\n * retryAttempts: {\\n * MPD: 3,\\n * XLinkExpansion: 1,\\n * InitializationSegment: 3,\\n * IndexSegment: 3,\\n * MediaSegment: 3,\\n * BitstreamSwitchingSegment: 3,\\n * FragmentInfoSegment: 3,\\n * other: 3,\\n * lowLatencyMultiplyFactor: 5\\n * },\\n * abr: {\\n * movingAverageMethod: Constants.MOVING_AVERAGE_SLIDING_WINDOW,\\n * ABRStrategy: Constants.ABR_STRATEGY_DYNAMIC,\\n * bandwidthSafetyFactor: 0.9,\\n * useDefaultABRRules: true,\\n * useDeadTimeLatency: true,\\n * limitBitrateByPortal: false,\\n * usePixelRatioInLimitBitrateByPortal: false,\\n * maxBitrate: { audio: -1, video: -1 },\\n * minBitrate: { audio: -1, video: -1 },\\n * maxRepresentationRatio: { audio: 1, video: 1 },\\n * initialBitrate: { audio: -1, video: -1 },\\n * initialRepresentationRatio: { audio: -1, video: -1 },\\n * autoSwitchBitrate: { audio: true, video: true },\\n * fetchThroughputCalculationMode: Constants.ABR_FETCH_THROUGHPUT_CALCULATION_DOWNLOADED_DATA\\n * },\\n * cmcd: {\\n * enabled: false,\\n * sid: null,\\n * cid: null,\\n * rtp: null,\\n * rtpSafetyFactor: 5,\\n * mode: Constants.CMCD_MODE_QUERY\\n * }\\n * }\\n * }\\n *//**\\n * @typedef {Object} DebugSettings\\n * @property {number} [logLevel=dashjs.Debug.LOG_LEVEL_WARNING]\\n * Sets up the log level. The levels are cumulative.\\n *\\n * For example, if you set the log level to dashjs.Debug.LOG_LEVEL_WARNING all warnings, errors and fatals will be logged.\\n *\\n * Possible values.\\n *\\n * - dashjs.Debug.LOG_LEVEL_NONE\\n * No message is written in the browser console.\\n *\\n * - dashjs.Debug.LOG_LEVEL_FATAL\\n * Log fatal errors.\\n * An error is considered fatal when it causes playback to fail completely.\\n *\\n * - dashjs.Debug.LOG_LEVEL_ERROR\\n * Log error messages.\\n *\\n * - dashjs.Debug.LOG_LEVEL_WARNING\\n * Log warning messages.\\n *\\n * - dashjs.Debug.LOG_LEVEL_INFO\\n * Log info messages.\\n *\\n * - dashjs.Debug.LOG_LEVEL_DEBUG\\n * Log debug messages.\\n * @property {boolean} [dispatchEvent=false]\\n * Enable to trigger a Events.LOG event whenever log output is generated.\\n *\\n * Note this will be dispatched regardless of log level.\\n *//**\\n * @typedef {Object} AbrSettings\\n * @property {string} [movingAverageMethod=\\\"slidingWindow\\\"]\\n * Sets the moving average method used for smoothing throughput estimates.\\n *\\n * Valid methods are \\\"slidingWindow\\\" and \\\"ewma\\\".\\n *\\n * The call has no effect if an invalid method is passed.\\n *\\n * The sliding window moving average method computes the average throughput using the last four segments downloaded.\\n *\\n * If the stream is live (as opposed to VOD), then only the last three segments are used.\\n *\\n * If wide variations in throughput are detected, the number of segments can be dynamically increased to avoid oscillations.\\n *\\n * The exponentially weighted moving average (EWMA) method computes the average using exponential smoothing.\\n *\\n * Two separate estimates are maintained, a fast one with a three-second half life and a slow one with an eight-second half life.\\n *\\n * The throughput estimate at any time is the minimum of the fast and slow estimates.\\n *\\n * This allows a fast reaction to a bandwidth drop and prevents oscillations on bandwidth spikes.\\n * @property {string} [ABRStrategy=\\\"abrDynamic\\\"]\\n * Returns the current ABR strategy being used: \\\"abrDynamic\\\", \\\"abrBola\\\" or \\\"abrThroughput\\\".\\n * @property {number} [bandwidthSafetyFactor=0.9]\\n * Standard ABR throughput rules multiply the throughput by this value.\\n *\\n * It should be between 0 and 1, with lower values giving less rebuffering (but also lower quality).\\n * @property {boolean} [useDefaultABRRules=true]\\n * Should the default ABR rules be used, or the custom ones added.\\n * @property {boolean} [useDeadTimeLatency=true]\\n * If true, only the download portion will be considered part of the download bitrate and latency will be regarded as static.\\n *\\n * If false, the reciprocal of the whole transfer time will be used.\\n * @property {boolean} [limitBitrateByPortal=false]\\n * If true, the size of the video portal will limit the max chosen video resolution.\\n * @property {boolean} [usePixelRatioInLimitBitrateByPortal=false]\\n * Sets whether to take into account the device's pixel ratio when defining the portal dimensions.\\n *\\n * Useful on, for example, retina displays.\\n * @property {module:Settings~AudioVideoSettings} [maxBitrate={audio: -1, video: -1}]\\n * The maximum bitrate that the ABR algorithms will choose.\\n *\\n * Use NaN for no limit.\\n * @property {module:Settings~AudioVideoSettings} [minBitrate={audio: -1, video: -1}]\\n * The minimum bitrate that the ABR algorithms will choose.\\n *\\n * Use NaN for no limit.\\n * @property {module:Settings~AudioVideoSettings} [maxRepresentationRatio={audio: 1, video: 1}]\\n * When switching multi-bitrate content (auto or manual mode) this property specifies the maximum representation allowed, as a proportion of the size of the representation set.\\n *\\n * You can set or remove this cap at anytime before or during playback.\\n *\\n * To clear this setting you set the value to 1.\\n *\\n * If both this and maxAllowedBitrate are defined, maxAllowedBitrate is evaluated first, then maxAllowedRepresentation, i.e. the lowest value from executing these rules is used.\\n *\\n * This feature is typically used to reserve higher representations for playback only when connected over a fast connection.\\n * @property {module:Settings~AudioVideoSettings} [initialBitrate={audio: -1, video: -1}]\\n * Explicitly set the starting bitrate for audio or video.\\n * @property {module:Settings~AudioVideoSettings} [initialRepresentationRatio={audio: -1, video: -1}]\\n * Explicitly set the initial representation ratio.\\n *\\n * If initalBitrate is specified, this is ignored.\\n * @property {module:Settings~AudioVideoSettings} [autoSwitchBitrate={audio: true, video: true}]\\n * Indicates whether the player should enable ABR algorithms to switch the bitrate.\\n *\\n * @property {string} [fetchThroughputCalculationMode=\\\"abrFetchThroughputCalculationDownloadedData\\\"]\\n * Algorithm to determine the throughput in case the Fetch API is used for low latency streaming.\\n *\\n * For details please check the samples section and FetchLoader.js.\\n *//**\\n * @typedef {Object} StreamingSettings\\n * @property {number} [metricsMaxListDepth=1000]\\n * Maximum list depth of metrics.\\n * @property {number} [abandonLoadTimeout=10000]\\n * A timeout value in seconds, which during the ABRController will block switch-up events.\\n *\\n * This will only take effect after an abandoned fragment event occurs.\\n * @property {number} [liveDelayFragmentCount=NaN]\\n * Changing this value will lower or increase live stream latency.\\n *\\n * The detected segment duration will be multiplied by this value to define a time in seconds to delay a live stream from the live edge.\\n *\\n * Lowering this value will lower latency but may decrease the player's ability to build a stable buffer.\\n * @property {number} [liveDelay]\\n * Equivalent in seconds of setLiveDelayFragmentCount.\\n *\\n * Lowering this value will lower latency but may decrease the player's ability to build a stable buffer.\\n *\\n * This value should be less than the manifest duration by a couple of segment durations to avoid playback issues.\\n *\\n * If set, this parameter will take precedence over setLiveDelayFragmentCount and manifest info.\\n * @property {boolean} [scheduleWhilePaused=true]\\n * Set to true if you would like dash.js to keep downloading fragments in the background when the video element is paused.\\n * @property {boolean} [fastSwitchEnabled=false]\\n * When enabled, after an ABR up-switch in quality, instead of requesting and appending the next fragment at the end of the current buffer range it is requested and appended closer to the current time.\\n *\\n * When enabled, The maximum time to render a higher quality is current time + (1.5 * fragment duration).\\n *\\n * Note, When ABR down-switch is detected, we appended the lower quality at the end of the buffer range to preserve the\\n * higher quality media for as long as possible.\\n *\\n * If enabled, it should be noted there are a few cases when the client will not replace inside buffer range but rather just append at the end.\\n * 1. When the buffer level is less than one fragment duration.\\n * 2. The client is in an Abandonment State due to recent fragment abandonment event.\\n *\\n * Known issues:\\n * 1. In IE11 with auto switching off, if a user switches to a quality they can not download in time the fragment may be appended in the same range as the playhead or even in the past, in IE11 it may cause a stutter or stall in playback.\\n * @property {boolean} [flushBufferAtTrackSwitch=false]\\n * When enabled, after a track switch and in case buffer is being replaced (see MediaPlayer.setTrackSwitchModeFor(Constants.TRACK_SWITCH_MODE_ALWAYS_REPLACE)), the video element is flushed (seek at current playback time) once a segment of the new track is appended in buffer in order to force video decoder to play new track.\\n *\\n * This can be required on some devices like GoogleCast devices to make track switching functional.\\n *\\n * Otherwise track switching will be effective only once after previous buffered track is fully consumed.\\n * @property {boolean} [calcSegmentAvailabilityRangeFromTimeline=false]\\n * Enable calculation of the DVR window for SegmentTimeline manifests based on the entries in \\\\.\\n * @property {boolean} [reuseExistingSourceBuffers=true]\\n * Enable reuse of existing MediaSource Sourcebuffers during period transition.\\n * @property {number} [bufferPruningInterval=10]\\n * The interval of pruning buffer in seconds.\\n * @property {number} [bufferToKeep=20]\\n * This value influences the buffer pruning logic.\\n *\\n * Allows you to modify the buffer that is kept in source buffer in seconds.\\n * 0|-----------bufferToPrune-----------|-----bufferToKeep-----|currentTime|\\n * @property {boolean} [jumpGaps=true]\\n * Sets whether player should jump small gaps (discontinuities) in the buffer.\\n * @property {boolean} [jumpLargeGaps=true]\\n * Sets whether player should jump large gaps (discontinuities) in the buffer.\\n * @property {number} [smallGapLimit=1.8]\\n * Time in seconds for a gap to be considered small.\\n * @property {number} [stableBufferTime=12]\\n * The time that the internal buffer target will be set to post startup/seeks (NOT top quality).\\n *\\n * When the time is set higher than the default you will have to wait longer to see automatic bitrate switches but will have a larger buffer which will increase stability.\\n * @property {number} [bufferTimeAtTopQuality=30]\\n * The time that the internal buffer target will be set to once playing the top quality.\\n *\\n * If there are multiple bitrates in your adaptation, and the media is playing at the highest bitrate, then we try to build a larger buffer at the top quality to increase stability and to maintain media quality.\\n * @property {number} [bufferTimeAtTopQualityLongForm=60]\\n * The time that the internal buffer target will be set to once playing the top quality for long form content.\\n * @property {number} [longFormContentDurationThreshold=600]\\n * The threshold which defines if the media is considered long form content.\\n *\\n * This will directly affect the buffer targets when playing back at the top quality.\\n * @property {number} [wallclockTimeUpdateInterval=50]\\n * How frequently the wallclockTimeUpdated internal event is triggered (in milliseconds).\\n * @property {boolean} [lowLatencyEnabled=false]\\n * Enable or disable low latency mode.\\n * @property {boolean} [keepProtectionMediaKeys=false]\\n * Set the value for the ProtectionController and MediaKeys life cycle.\\n *\\n * If true, the ProtectionController and then created MediaKeys and MediaKeySessions will be preserved during the MediaPlayer lifetime.\\n * @property {boolean} [useManifestDateHeaderTimeSource=true]\\n * Allows you to enable the use of the Date Header, if exposed with CORS, as a timing source for live edge detection.\\n *\\n * The use of the date header will happen only after the other timing source that take precedence fail or are omitted as described.\\n * @property {boolean} [useSuggestedPresentationDelay=true]\\n * Set to true if you would like to override the default live delay and honor the SuggestedPresentationDelay attribute in by the manifest.\\n * @property {boolean} [useAppendWindow=true]\\n * Specifies if the appendWindow attributes of the MSE SourceBuffers should be set according to content duration from manifest.\\n * @property {number} [manifestUpdateRetryInterval=100]\\n * For live streams, set the interval-frequency in milliseconds at which dash.js will check if the current manifest is still processed before downloading the next manifest once the minimumUpdatePeriod time has.\\n * @property {number} [stallThreshold=0.5]\\n * Stall threshold used in BufferController.js to determine whether a track should still be changed and which buffer range to prune.\\n * @property {boolean} [filterUnsupportedEssentialProperties=true]\\n * Enable to filter all the AdaptationSets and Representations which contain an unsupported \\\\ element.\\n * @property {number} [eventControllerRefreshDelay=100]\\n * Defines the delay in milliseconds between two consecutive checks for events to be fired.\\n * @property {module:Settings~UtcSynchronizationSettings} utcSynchronization Settings related to UTC clock synchronization\\n * @property {module:Settings~LiveCatchupSettings} liveCatchup Settings related to live catchup.\\n * @property {module:Settings~CachingInfoSettings} [lastBitrateCachingInfo={enabled: true, ttl: 360000}]\\n * Set to false if you would like to disable the last known bit rate from being stored during playback and used to set the initial bit rate for subsequent playback within the expiration window.\\n *\\n * The default expiration is one hour, defined in milliseconds.\\n *\\n * If expired, the default initial bit rate (closest to 1000 kbps) will be used for that session and a new bit rate will be stored during that session.\\n * @property {module:Settings~CachingInfoSettings} [lastMediaSettingsCachingInfo={enabled: true, ttl: 360000}]\\n * Set to false if you would like to disable the last known lang for audio (or camera angle for video) from being stored during playback and used to set the initial settings for subsequent playback within the expiration window.\\n *\\n * The default expiration is one hour, defined in milliseconds.\\n *\\n * If expired, the default settings will be used for that session and a new settings will be stored during that session.\\n * @property {module:Settings~AudioVideoSettings} [cacheLoadThresholds={video: 50, audio: 5}]\\n * For a given media type, the threshold which defines if the response to a fragment request is coming from browser cache or not.\\n * @property {module:Settings~AudioVideoSettings} [trackSwitchMode={video: \\\"neverReplace\\\", audio: \\\"alwaysReplace\\\"}]\\n * For a given media type defines if existing segments in the buffer should be overwritten once the track is switched. For instance if the user switches the audio language the existing segments in the audio buffer will be replaced when setting this value to \\\"alwaysReplace\\\".\\n *\\n * Possible values\\n *\\n * - Constants.TRACK_SWITCH_MODE_ALWAYS_REPLACE\\n * Replace existing segments in the buffer\\n *\\n * - Constants.TRACK_SWITCH_MODE_NEVER_REPLACE\\n * Do not replace existing segments in the buffer\\n *\\n * @property {string} [selectionModeForInitialTrack=\\\"highestBitrate\\\"]\\n * Sets the selection mode for the initial track. This mode defines how the initial track will be selected if no initial media settings are set. If initial media settings are set this parameter will be ignored. Available options are:\\n *\\n * Possible values\\n *\\n * - Constants.TRACK_SELECTION_MODE_HIGHEST_BITRATE\\n * This mode makes the player select the track with a highest bitrate. This mode is a default mode.\\n *\\n * - Constants.TRACK_SELECTION_MODE_FIRST_TRACK\\n * This mode makes the player select the first track found in the manifest.\\n *\\n * - Constants.TRACK_SELECTION_MODE_HIGHEST_EFFICIENCY\\n * This mode makes the player select the track with the lowest bitrate per pixel average.\\n *\\n * - Constants.TRACK_SELECTION_MODE_WIDEST_RANGE\\n * This mode makes the player select the track with a widest range of bitrates.\\n *\\n *\\n * @property {number} [fragmentRequestTimeout=0]\\n * Time in milliseconds before timing out on loading a media fragment.\\n *\\n * Fragments that timeout are retried as if they failed.\\n * @property {module:Settings~RequestTypeSettings} [retryIntervals]\\n * Time in milliseconds of which to reload a failed file load attempt.\\n *\\n * For low latency mode these values are divided by lowLatencyReductionFactor.\\n * @property {module:Settings~RequestTypeSettings} [retryAttempts]\\n * Total number of retry attempts that will occur on a file load before it fails.\\n *\\n * For low latency mode these values are multiplied by lowLatencyMultiplyFactor.\\n * @property {module:Settings~AbrSettings} abr\\n * Adaptive Bitrate algorithm related settings.\\n * @property {module:Settings~CmcdSettings} cmcd\\n * Settings related to Common Media Client Data reporting.\\n *//**\\n * @typedef {Object} CachingInfoSettings\\n * @property {boolean} [enable]\\n * Enable or disable the caching feature.\\n * @property {number} [ttl]\\n * Time to live.\\n *\\n * A value defined in milliseconds representing how log to cache the settings for.\\n *//**\\n * @typedef {Object} module:Settings~AudioVideoSettings\\n * @property {number|boolean|string} [audio]\\n * Configuration for audio media type of tracks.\\n * @property {number|boolean|string} [video]\\n * Configuration for video media type of tracks.\\n *//**\\n * @typedef {Object} RequestTypeSettings\\n * @property {number} [MPD]\\n * Manifest type of requests.\\n * @property {number} [XLinkExpansion]\\n * XLink expansion type of requests.\\n * @property {number} [InitializationSegment]\\n * Request to retrieve an initialization segment.\\n * @property {number} [IndexSegment]\\n * Request to retrieve an index segment (SegmentBase).\\n * @property {number} [MediaSegment]\\n * Request to retrieve a media segment (video/audio/image/text chunk).\\n * @property {number} [BitstreamSwitchingSegment]\\n * Bitrate stream switching type of request.\\n * @property {number} [FragmentInfoSegment]\\n * Request to retrieve a FragmentInfo segment (specific to Smooth Streaming live streams).\\n * @property {number} [other]\\n * Other type of request.\\n * @property {number} [lowLatencyReductionFactor]\\n * For low latency mode, values of type of request are divided by lowLatencyReductionFactor.\\n *\\n * Note: It's not type of request.\\n * @property {number} [lowLatencyMultiplyFactor]\\n * For low latency mode, values of type of request are multiplied by lowLatencyMultiplyFactor.\\n *\\n * Note: It's not type of request.\\n *//**\\n * @typedef {Object} module:Settings~CmcdSettings\\n * @property {boolean} [enable=false]\\n * Enable or disable the CMCD reporting.\\n * @property {string} [sid]\\n * GUID identifying the current playback session.\\n *\\n * Should be in UUID format.\\n *\\n * If not specified a UUID will be automatically generated.\\n * @property {string} [cid]\\n * A unique string to identify the current content.\\n *\\n * If not specified it will be a hash of the MPD url.\\n * @property {number} [rtp]\\n * The requested maximum throughput that the client considers sufficient for delivery of the asset.\\n *\\n * If not specified this value will be dynamically calculated in the CMCDModel based on the current buffer level.\\n * @property {number} [rtpSafetyFactor]\\n * This value is used as a factor for the rtp value calculation: rtp = minBandwidth * rtpSafetyFactor\\n *\\n * If not specified this value defaults to 5. Note that this value is only used when no static rtp value is defined.\\n * @property {number} [mode]\\n * The method to use to attach cmcd metrics to the requests. 'query' to use query parameters, 'header' to use http headers.\\n *\\n * If not specified this value defaults to 'query'.\\n *//**\\n * @typedef {Object} module:Settings~UtcSynchronizationSettings\\n * @property {number} [backgroundAttempts=2]\\n * Number of synchronization attempts to perform in the background after an initial synchronization request has been done. This is used to verify that the derived client-server offset is correct.\\n *\\n * The background requests are async and done in parallel to the start of the playback.\\n *\\n * This value is also used to perform a resync after 404 errors on segments.\\n * @property {number} [timeBetweenSyncAttempts=30]\\n * The time in seconds between two consecutive sync attempts.\\n *\\n * Note: This value is used as an initial starting value. The internal value of the TimeSyncController is adjusted during playback based on the drift between two consecutive synchronization attempts.\\n *\\n * Note: A sync is only performed after an MPD update. In case the @minimumUpdatePeriod is larger than this value the sync will be delayed until the next MPD update.\\n * @property {number} [maximumTimeBetweenSyncAttempts=600]\\n * The maximum time in seconds between two consecutive sync attempts.\\n *\\n * @property {number} [minimumTimeBetweenSyncAttempts=2]\\n * The minimum time in seconds between two consecutive sync attempts.\\n *\\n * @property {number} [timeBetweenSyncAttemptsAdjustmentFactor=2]\\n * The factor used to multiply or divide the timeBetweenSyncAttempts parameter after a sync. The maximumAllowedDrift defines whether this value is used as a factor or a dividend.\\n *\\n * @property {number} [maximumAllowedDrift=100]\\n * The maximum allowed drift specified in milliseconds between two consecutive synchronization attempts.\\n *\\n * @property {boolean} [enableBackgroundSyncAfterSegmentDownloadError=true]\\n * Enables or disables the background sync after the player ran into a segment download error.\\n *\\n * @property {object} [defaultTimingSource={scheme:'urn:mpeg:dash:utc:http-xsdate:2014',value: 'http://time.akamai.com/?iso&ms'}]\\n * The default timing source to be used. The timing sources in the MPD take precedence over this one.\\n *//**\\n * @typedef {Object} module:Settings~LiveCatchupSettings\\n * @property {number} [minDrift=0.02]\\n * Use this method to set the minimum latency deviation allowed before activating catch-up mechanism.\\n *\\n * In low latency mode, when the difference between the measured latency and the target one, as an absolute number, is higher than the one sets with this method, then dash.js increases/decreases playback rate until target latency is reached.\\n *\\n * LowLatencyMinDrift should be provided in seconds, and it uses values between 0.0 and 0.5.\\n *\\n * Note: Catch-up mechanism is only applied when playing low latency live streams.\\n * @property {number} [maxDrift=0]\\n * Use this method to set the maximum latency deviation allowed before dash.js to do a seeking to live position.\\n *\\n * In low latency mode, when the difference between the measured latency and the target one, as an absolute number, is higher than the one sets with this method, then dash.js does a seek to live edge position minus the target live delay.\\n *\\n * LowLatencyMaxDriftBeforeSeeking should be provided in seconds.\\n *\\n * If 0, then seeking operations won't be used for fixing latency deviations.\\n *\\n * Note: Catch-up mechanism is only applied when playing low latency live streams.\\n * @property {number} [playbackRate=0.5]\\n * Use this parameter to set the maximum catch up rate, as a percentage, for low latency live streams.\\n *\\n * In low latency mode, when measured latency is higher/lower than the target one, dash.js increases/decreases playback rate respectively up to (+/-) the percentage defined with this method until target is reached.\\n *\\n * Valid values for catch up rate are in range 0-0.5 (0-50%).\\n *\\n * Set it to 0 to turn off live catch up feature.\\n *\\n * Note: Catch-up mechanism is only applied when playing low latency live streams.\\n * @property {number} [latencyThreshold=NaN]\\n * Use this parameter to set the maximum threshold for which live catch up is applied.\\n *\\n * For instance, if this value is set to 8 seconds, then live catchup is only applied if the current live latency is equal or below 8 seconds.\\n *\\n * The reason behind this parameter is to avoid an increase of the playback rate if the user seeks within the DVR window.\\n *\\n * If no value is specified this will be twice the maximum live delay.\\n *\\n * The maximum live delay is either specified in the manifest as part of a ServiceDescriptor or calculated the following:\\n * maximumLiveDelay = targetDelay + liveCatchupMinDrift.\\n *\\n * @property {number} [playbackBufferMin=NaN]\\n * Use this parameter to specify the minimum buffer which is used for LoL+ based playback rate reduction.\\n *\\n *\\n * @property {boolean} [enabled=false]\\n * Use this parameter to enable the catchup mode for non low-latency streams.\\n *\\n * @property {string} [mode=\\\"liveCatchupModeDefault\\\"]\\n * Use this parameter to switch between different catchup modes.\\n *\\n * Options: \\\"liveCatchupModeDefault\\\" or \\\"liveCatchupModeLOLP\\\".\\n *\\n * Note: Catch-up mechanism is automatically applied when playing low latency live streams.\\n *//**\\n * @class\\n * @ignore\\n */function Settings(){var _retryIntervals,_retryAttempts;var instance=void 0;/**\\n * @const {PlayerSettings} defaultSettings\\n * @ignore\\n */var defaultSettings={debug:{logLevel:_Debug2.default.LOG_LEVEL_WARNING,dispatchEvent:false},streaming:{metricsMaxListDepth:1000,abandonLoadTimeout:10000,liveDelayFragmentCount:NaN,liveDelay:null,scheduleWhilePaused:true,fastSwitchEnabled:false,flushBufferAtTrackSwitch:false,calcSegmentAvailabilityRangeFromTimeline:false,reuseExistingSourceBuffers:true,bufferPruningInterval:10,bufferToKeep:20,jumpGaps:true,jumpLargeGaps:true,smallGapLimit:1.5,stableBufferTime:12,bufferTimeAtTopQuality:30,bufferTimeAtTopQualityLongForm:60,longFormContentDurationThreshold:600,wallclockTimeUpdateInterval:50,lowLatencyEnabled:false,keepProtectionMediaKeys:false,useManifestDateHeaderTimeSource:true,useSuggestedPresentationDelay:true,useAppendWindow:true,manifestUpdateRetryInterval:100,stallThreshold:0.5,filterUnsupportedEssentialProperties:true,eventControllerRefreshDelay:100,utcSynchronization:{backgroundAttempts:2,timeBetweenSyncAttempts:30,maximumTimeBetweenSyncAttempts:600,minimumTimeBetweenSyncAttempts:2,timeBetweenSyncAttemptsAdjustmentFactor:2,maximumAllowedDrift:100,enableBackgroundSyncAfterSegmentDownloadError:true,defaultTimingSource:{scheme:'urn:mpeg:dash:utc:http-xsdate:2014',value:'http://time.akamai.com/?iso&ms'}},liveCatchup:{minDrift:0.02,maxDrift:0,playbackRate:0.5,latencyThreshold:60,playbackBufferMin:0.5,enabled:false,mode:_Constants2.default.LIVE_CATCHUP_MODE_DEFAULT},lastBitrateCachingInfo:{enabled:true,ttl:360000},lastMediaSettingsCachingInfo:{enabled:true,ttl:360000},cacheLoadThresholds:{video:50,audio:5},trackSwitchMode:{audio:_Constants2.default.TRACK_SWITCH_MODE_ALWAYS_REPLACE,video:_Constants2.default.TRACK_SWITCH_MODE_NEVER_REPLACE},selectionModeForInitialTrack:_Constants2.default.TRACK_SELECTION_MODE_HIGHEST_BITRATE,fragmentRequestTimeout:0,retryIntervals:(_retryIntervals={},_defineProperty(_retryIntervals,_HTTPRequest.HTTPRequest.MPD_TYPE,500),_defineProperty(_retryIntervals,_HTTPRequest.HTTPRequest.XLINK_EXPANSION_TYPE,500),_defineProperty(_retryIntervals,_HTTPRequest.HTTPRequest.MEDIA_SEGMENT_TYPE,1000),_defineProperty(_retryIntervals,_HTTPRequest.HTTPRequest.INIT_SEGMENT_TYPE,1000),_defineProperty(_retryIntervals,_HTTPRequest.HTTPRequest.BITSTREAM_SWITCHING_SEGMENT_TYPE,1000),_defineProperty(_retryIntervals,_HTTPRequest.HTTPRequest.INDEX_SEGMENT_TYPE,1000),_defineProperty(_retryIntervals,_HTTPRequest.HTTPRequest.MSS_FRAGMENT_INFO_SEGMENT_TYPE,1000),_defineProperty(_retryIntervals,_HTTPRequest.HTTPRequest.OTHER_TYPE,1000),_defineProperty(_retryIntervals,'lowLatencyReductionFactor',10),_retryIntervals),retryAttempts:(_retryAttempts={},_defineProperty(_retryAttempts,_HTTPRequest.HTTPRequest.MPD_TYPE,3),_defineProperty(_retryAttempts,_HTTPRequest.HTTPRequest.XLINK_EXPANSION_TYPE,1),_defineProperty(_retryAttempts,_HTTPRequest.HTTPRequest.MEDIA_SEGMENT_TYPE,3),_defineProperty(_retryAttempts,_HTTPRequest.HTTPRequest.INIT_SEGMENT_TYPE,3),_defineProperty(_retryAttempts,_HTTPRequest.HTTPRequest.BITSTREAM_SWITCHING_SEGMENT_TYPE,3),_defineProperty(_retryAttempts,_HTTPRequest.HTTPRequest.INDEX_SEGMENT_TYPE,3),_defineProperty(_retryAttempts,_HTTPRequest.HTTPRequest.MSS_FRAGMENT_INFO_SEGMENT_TYPE,3),_defineProperty(_retryAttempts,_HTTPRequest.HTTPRequest.OTHER_TYPE,3),_defineProperty(_retryAttempts,'lowLatencyMultiplyFactor',5),_retryAttempts),abr:{movingAverageMethod:_Constants2.default.MOVING_AVERAGE_SLIDING_WINDOW,ABRStrategy:_Constants2.default.ABR_STRATEGY_DYNAMIC,bandwidthSafetyFactor:0.9,useDefaultABRRules:true,useDeadTimeLatency:true,limitBitrateByPortal:false,usePixelRatioInLimitBitrateByPortal:false,maxBitrate:{audio:-1,video:-1},minBitrate:{audio:-1,video:-1},maxRepresentationRatio:{audio:1,video:1},initialBitrate:{audio:-1,video:-1},initialRepresentationRatio:{audio:-1,video:-1},autoSwitchBitrate:{audio:true,video:true},fetchThroughputCalculationMode:_Constants2.default.ABR_FETCH_THROUGHPUT_CALCULATION_DOWNLOADED_DATA},cmcd:{enabled:false,sid:null,cid:null,rtp:null,rtpSafetyFactor:5,mode:_Constants2.default.CMCD_MODE_QUERY}}};var settings=_Utils2.default.clone(defaultSettings);//Merge in the settings. If something exists in the new config that doesn't match the schema of the default config,\\n//regard it as an error and log it.\\nfunction mixinSettings(source,dest,path){for(var n in source){if(source.hasOwnProperty(n)){if(dest.hasOwnProperty(n)){if(_typeof(source[n])==='object'&&source[n]!==null){mixinSettings(source[n],dest[n],path.slice()+n+'.');}else{dest[n]=_Utils2.default.clone(source[n]);}}}}}/**\\n * Return the settings object. Don't copy/store this object, you won't get updates.\\n * @func\\n * @instance\\n */function get(){return settings;}/**\\n * @func\\n * @instance\\n * @param {object} settingsObj - This should be a partial object of the Settings.Schema type. That is, fields defined should match the path (e.g.\\n * settingsObj.streaming.abr.autoSwitchBitrate.audio -> defaultSettings.streaming.abr.autoSwitchBitrate.audio). Where an element's path does\\n * not match it is ignored, and a warning is logged.\\n *\\n * Use to change the settings object. Any new values defined will overwrite the settings and anything undefined will not change.\\n * Implementers of new settings should add it in an approriate namespace to the defaultSettings object and give it a default value (that is not undefined).\\n *\\n */function update(settingsObj){if((typeof settingsObj==='undefined'?'undefined':_typeof(settingsObj))==='object'){mixinSettings(settingsObj,settings,'');}}/**\\n * Resets the settings object. Everything is set to its default value.\\n * @func\\n * @instance\\n *\\n */function reset(){settings=_Utils2.default.clone(defaultSettings);}instance={get:get,update:update,reset:reset};return instance;}Settings.__dashjs_factory_name='Settings';var factory=_FactoryMaker2.default.getSingletonFactory(Settings);exports.default=factory;\\n//# sourceMappingURL=Settings.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/core/Settings.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/core/Utils.js\":\n/*!**********************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/core/Utils.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _typeof=typeof Symbol===\\\"function\\\"&&typeof Symbol.iterator===\\\"symbol\\\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\\\"function\\\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\\\"symbol\\\":typeof obj;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i0){headers[headerPair.substring(0,index)]=headerPair.substring(index+2);}}return headers;}},{key:'generateUuid',value:function generateUuid(){var dt=new Date().getTime();var uuid='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(c){var r=(dt+Math.random()*16)%16|0;dt=Math.floor(dt/16);return(c=='x'?r:r&0x3|0x8).toString(16);});return uuid;}},{key:'generateHashCode',value:function generateHashCode(string){var hash=0;if(string.length===0){return hash;}for(var i=0;i0?voRepresentation.segments[0].duration:NaN);representationInfo.MSETimeOffset=voRepresentation.MSETimeOffset;representationInfo.mediaInfo=convertAdaptationToMediaInfo(voRepresentation.adaptation);return representationInfo;}else{return null;}}/**\\n * Returns a MediaInfo object for a given media type.\\n * @param {object} streamInfo\\n * @param {MediaType }type\\n * @returns {null|MediaInfo} mediaInfo\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getMediaInfoForType(streamInfo,type){if(voPeriods.length===0||!streamInfo){return null;}var selectedVoPeriod=getPeriodForStreamInfo(streamInfo,voPeriods);if(!selectedVoPeriod)return null;var periodId=selectedVoPeriod.id;voAdaptations[periodId]=voAdaptations[periodId]||dashManifestModel.getAdaptationsForPeriod(selectedVoPeriod);var realAdaptation=getAdaptationForType(streamInfo.index,type,streamInfo);if(!realAdaptation)return null;var idx=dashManifestModel.getIndexForAdaptation(realAdaptation,voPeriods[0].mpd.manifest,streamInfo.index);return convertAdaptationToMediaInfo(voAdaptations[periodId][idx]);}/**\\n * Checks if the role of the specified AdaptationSet is set to main\\n * @param {object} adaptation\\n * @returns {boolean}\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getIsMain(adaptation){return dashManifestModel.getRolesForAdaptation(adaptation).filter(function(role){return role.value===_DashConstants2.default.MAIN;})[0];}/**\\n * Returns the AdaptationSet for a given period and a given mediaType.\\n * @param {number} periodIndex\\n * @param {MediaType} type\\n * @param {object} streamInfo\\n * @returns {null|object} adaptation\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getAdaptationForType(periodIndex,type,streamInfo){var adaptations=dashManifestModel.getAdaptationsForType(voPeriods[0].mpd.manifest,periodIndex,type);if(!adaptations||adaptations.length===0)return null;if(adaptations.length>1&&streamInfo){var allMediaInfoForType=getAllMediaInfoForType(streamInfo,type);if(currentMediaInfo[streamInfo.id]&¤tMediaInfo[streamInfo.id][type]){for(var i=0,ln=adaptations.length;i0){manifest=voPeriods[0].mpd.manifest;}else{return mediaArr;}}var selectedVoPeriod=getPeriodForStreamInfo(streamInfo,voLocalPeriods);if(selectedVoPeriod){periodId=selectedVoPeriod.id;}var adaptationsForType=dashManifestModel.getAdaptationsForType(manifest,streamInfo?streamInfo.index:null,type!==constants.EMBEDDED_TEXT?type:constants.VIDEO);if(!adaptationsForType||adaptationsForType.length===0)return mediaArr;voAdaptations[periodId]=voAdaptations[periodId]||dashManifestModel.getAdaptationsForPeriod(selectedVoPeriod);for(i=0,ln=adaptationsForType.length;i0){if(!maxStreamsInfo||maxStreamsInfo>voLocalPeriods.length){maxStreamsInfo=voLocalPeriods.length;}for(var i=0;i0&&selectedVoPeriod){realAdaptation=id?dashManifestModel.getAdaptationForId(id,voPeriods[0].mpd.manifest,selectedVoPeriod.index):dashManifestModel.getAdaptationForIndex(mediaInfo?mediaInfo.index:null,voPeriods[0].mpd.manifest,selectedVoPeriod.index);}return realAdaptation;}/**\\n * Return all EssentialProperties of a Representation\\n * @param {object} representation\\n * @return {array}\\n */function getEssentialPropertiesForRepresentation(representation){try{return dashManifestModel.getEssentialPropertiesForRepresentation(representation);}catch(e){return[];}}/**\\n * Returns the period by index\\n * @param {number} index\\n * @return {object}\\n */function getRealPeriodByIndex(index){return dashManifestModel.getRealPeriodForIndex(index,voPeriods[0].mpd.manifest);}/**\\n * Returns all voRepresentations for a given mediaInfo\\n * @param {object} mediaInfo\\n * @returns {Array} voReps\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getVoRepresentations(mediaInfo){var voReps=void 0;var voAdaptation=getAdaptationForMediaInfo(mediaInfo);voReps=dashManifestModel.getRepresentationsForAdaptation(voAdaptation);return voReps;}/**\\n *\\n * @param {object} eventBox\\n * @param {object} eventStreams\\n * @param {number} mediaStartTime\\n * @param {object} voRepresentation\\n * @returns {null|Event}\\n * @memberOf module:DashAdapter\\n * @instance\\n * @ignore\\n */function getEvent(eventBox,eventStreams,mediaStartTime,voRepresentation){try{if(!eventBox||!eventStreams||isNaN(mediaStartTime)||!voRepresentation){return null;}var schemeIdUri=eventBox.scheme_id_uri;var value=eventBox.value;if(!eventStreams[schemeIdUri+'/'+value]){return null;}var event=new _Event2.default();var timescale=eventBox.timescale||1;var periodStart=voRepresentation.adaptation.period.start;var eventStream=eventStreams[schemeIdUri+'/'+value];var presentationTimeOffset=!isNaN(voRepresentation.presentationTimeOffset)?voRepresentation.presentationTimeOffset:!isNaN(eventStream.presentationTimeOffset)?eventStream.presentationTimeOffset:0;var presentationTimeDelta=eventBox.presentation_time_delta/timescale;// In case of version 1 events the presentation_time is parsed as presentation_time_delta\\nvar calculatedPresentationTime=void 0;if(eventBox.version===0){calculatedPresentationTime=periodStart+mediaStartTime-presentationTimeOffset+presentationTimeDelta;}else{calculatedPresentationTime=periodStart-presentationTimeOffset+presentationTimeDelta;}var duration=eventBox.event_duration;var id=eventBox.id;var messageData=eventBox.message_data;event.eventStream=eventStream;event.eventStream.value=value;event.eventStream.timescale=timescale;event.duration=duration;event.id=id;event.calculatedPresentationTime=calculatedPresentationTime;event.messageData=messageData;event.presentationTimeDelta=presentationTimeDelta;return event;}catch(e){return null;}}/**\\n *\\n * @param {object} info\\n * @param {object} voRepresentation\\n * @returns {Array}\\n * @memberOf module:DashAdapter\\n * @instance\\n * @ignore\\n */function getEventsFor(info,voRepresentation){var events=[];if(voPeriods.length>0){var manifest=voPeriods[0].mpd.manifest;if(info instanceof _StreamInfo2.default){events=dashManifestModel.getEventsForPeriod(getPeriodForStreamInfo(info,voPeriods));}else if(info instanceof _MediaInfo2.default){events=dashManifestModel.getEventStreamForAdaptationSet(manifest,getAdaptationForMediaInfo(info));}else if(info instanceof _RepresentationInfo2.default){events=dashManifestModel.getEventStreamForRepresentation(manifest,voRepresentation);}}return events;}/**\\n *\\n * @param {number} streamId\\n * @param {MediaType} type\\n * @param {object} mediaInfo\\n * @memberOf module:DashAdapter\\n * @instance\\n * @ignore\\n */function setCurrentMediaInfo(streamId,type,mediaInfo){currentMediaInfo[streamId]=currentMediaInfo[streamId]||{};currentMediaInfo[streamId][type]=currentMediaInfo[streamId][type]||{};currentMediaInfo[streamId][type]=mediaInfo;}/**\\n *\\n * @param {String} type\\n * @returns {boolean}\\n * @memberOf module:DashAdapter\\n * @instance\\n * @ignore\\n */function getIsTextTrack(type){return dashManifestModel.getIsTextTrack(type);}/**\\n * Returns the UTC Timing Sources specified in the manifest\\n * @returns {Array} utcTimingSources\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getUTCTimingSources(){var manifest=getManifest();return dashManifestModel.getUTCTimingSources(manifest);}/**\\n * Returns the suggestedPresentationDelay as specified in the manifest\\n * @returns {String} suggestedPresentationDelay\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getSuggestedPresentationDelay(){var mpd=voPeriods.length>0?voPeriods[0].mpd:null;return dashManifestModel.getSuggestedPresentationDelay(mpd);}/**\\n * Returns the availabilityStartTime as specified in the manifest\\n * @param {object} externalManifest Omit this value if no external manifest should be used\\n * @returns {string} availabilityStartTime\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getAvailabilityStartTime(externalManifest){var mpd=getMpd(externalManifest);return dashManifestModel.getAvailabilityStartTime(mpd);}/**\\n * Returns a boolean indicating if the manifest is dynamic or not\\n * @param {object} externalManifest Omit this value if no external manifest should be used\\n * @returns {boolean}\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getIsDynamic(externalManifest){var manifest=getManifest(externalManifest);return dashManifestModel.getIsDynamic(manifest);}/**\\n * Returns the duration of the MPD\\n * @param {object} externalManifest Omit this value if no external manifest should be used\\n * @returns {number} duration\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getDuration(externalManifest){var manifest=getManifest(externalManifest);return dashManifestModel.getDuration(manifest);}/**\\n * Returns all periods of the MPD\\n * @param {object} externalManifest Omit this value if no external manifest should be used\\n * @returns {Array} periods\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getRegularPeriods(externalManifest){var mpd=getMpd(externalManifest);return dashManifestModel.getRegularPeriods(mpd);}/**\\n * Returns an MPD object\\n * @param {object} externalManifest Omit this value if no external manifest should be used\\n * @returns {object} MPD\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getMpd(externalManifest){var manifest=getManifest(externalManifest);return dashManifestModel.getMpd(manifest);}/**\\n * Returns the location element of the MPD\\n * @param {object} manifest\\n * @returns {String} location\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getLocation(manifest){return dashManifestModel.getLocation(manifest);}/**\\n * Returns the manifest update period used for dynamic manifests\\n * @param {object} manifest\\n * @param {number} latencyOfLastUpdate\\n * @returns {NaN|number} manifestUpdatePeriod\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getManifestUpdatePeriod(manifest){var latencyOfLastUpdate=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;return dashManifestModel.getManifestUpdatePeriod(manifest,latencyOfLastUpdate);}/**\\n * Returns the publish time from the manifest\\n * @param {object} manifest\\n * @returns {Date|null} publishTime\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getPublishTime(manifest){return dashManifestModel.getPublishTime(manifest);}/**\\n * Returns the patch location of the MPD if one exists and it is still valid\\n * @param {object} manifest\\n * @returns {(String|null)} patch location\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getPatchLocation(manifest){var patchLocation=dashManifestModel.getPatchLocation(manifest);var publishTime=dashManifestModel.getPublishTime(manifest);// short-circuit when no patch location or publish time exists\\nif(!patchLocation||!publishTime){return null;}// if a ttl is provided, ensure patch location has not expired\\nif(patchLocation.hasOwnProperty('ttl')&&publishTime){// attribute describes number of seconds as a double\\nvar ttl=parseFloat(patchLocation.ttl)*1000;// check if the patch location has expired, if so do not consider it\\nif(publishTime.getTime()+ttl<=new Date().getTime()){return null;}}// the patch location exists and, if a ttl applies, has not expired\\nreturn patchLocation.__text;}/**\\n * Checks if the manifest has a DVB profile\\n * @param {object} manifest\\n * @returns {boolean}\\n * @memberOf module:DashAdapter\\n * @instance\\n * @ignore\\n */function getIsDVB(manifest){return dashManifestModel.hasProfile(manifest,PROFILE_DVB);}/**\\n * Checks if the manifest is actually just a patch manifest\\n * @param {object} manifest\\n * @return {boolean}\\n */function getIsPatch(manifest){return patchManifestModel.getIsPatch(manifest);}/**\\n *\\n * @param {object} node\\n * @returns {Array}\\n * @memberOf module:DashAdapter\\n * @instance\\n * @ignore\\n */function getBaseURLsFromElement(node){return dashManifestModel.getBaseURLsFromElement(node);}/**\\n *\\n * @returns {*}\\n * @memberOf module:DashAdapter\\n * @instance\\n * @ignore\\n */function getRepresentationSortFunction(){return dashManifestModel.getRepresentationSortFunction();}/**\\n * Returns the codec for a given adaptation set and a given representation id.\\n * @param {object} adaptation\\n * @param {number} representationId\\n * @param {boolean} addResolutionInfo Defines whether to include resolution information in the output\\n * @returns {String} codec\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getCodec(adaptation,representationId,addResolutionInfo){return dashManifestModel.getCodec(adaptation,representationId,addResolutionInfo);}/**\\n * Returns the bandwidth for a given representation id\\n * @param {number} representationId\\n * @param {number} periodIdx\\n * @returns {number} bandwidth\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getBandwidthForRepresentation(representationId,periodIdx){var representation=void 0;var period=getPeriod(periodIdx);representation=findRepresentation(period,representationId);return representation?representation.bandwidth:null;}/**\\n * Returns the index for a given representation id\\n * @param {string} representationId\\n * @param {number} periodIdx\\n * @returns {number} index\\n * @memberOf module:DashAdapter\\n * @instance\\n */function getIndexForRepresentation(representationId,periodIdx){var period=getPeriod(periodIdx);return findRepresentationIndex(period,representationId);}/**\\n * This method returns the current max index based on what is defined in the MPD.\\n *\\n * @param {string} bufferType - String 'audio' or 'video',\\n * @param {number} periodIdx - Make sure this is the period index not id\\n * @return {number}\\n * @memberof module:DashAdapter\\n * @instance\\n */function getMaxIndexForBufferType(bufferType,periodIdx){var period=getPeriod(periodIdx);return findMaxBufferIndex(period,bufferType);}/**\\n * Returns the voPeriod object for a given id\\n * @param {String} id\\n * @returns {object|null}\\n */function getPeriodById(id){if(!id||voPeriods.length===0){return null;}var periods=voPeriods.filter(function(p){return p.id===id;});if(periods&&periods.length>0){return periods[0];}return null;}function getIsTypeOf(adaptation,type){return dashManifestModel.getIsTypeOf(adaptation,type);}function reset(){voPeriods=[];voAdaptations={};currentMediaInfo={};}/**\\n * Checks if the supplied manifest is compatible for application of the supplied patch\\n * @param {object} manifest\\n * @param {object} patch\\n * @return {boolean}\\n */function isPatchValid(manifest,patch){var manifestId=dashManifestModel.getId(manifest);var patchManifestId=patchManifestModel.getMpdId(patch);var manifestPublishTime=dashManifestModel.getPublishTime(manifest);var patchPublishTime=patchManifestModel.getPublishTime(patch);var originalManifestPublishTime=patchManifestModel.getOriginalPublishTime(patch);// Patches are considered compatible if the following are true\\n// - MPD@id == Patch@mpdId\\n// - MPD@publishTime == Patch@originalPublishTime\\n// - MPD@publishTime < Patch@publishTime\\n// - All values in comparison exist\\nreturn!!(manifestId&&patchManifestId&&manifestId==patchManifestId&&manifestPublishTime&&originalManifestPublishTime&&manifestPublishTime.getTime()==originalManifestPublishTime.getTime()&&patchPublishTime&&manifestPublishTime.getTime()1){target[name]=targetArray;}else if(targetArray.length==1){// xml parsing semantics, singular asArray must be non-array in the unsuffixed key\\ntarget[name]=targetArray[0];}else{// all nodes of this type deleted, remove entry\\ndelete target[name+'_asArray'];}}}// Perform any add/replace operations now, technically RFC5261 only allows a single element to take the\\n// place of a replaced element while the add case allows an arbitrary number of children.\\n// Due to the both operations requiring the same insertion logic they have been combined here and we will\\n// not enforce single child operations for replace, assertions should be made at patch parse time if necessary\\nif(operation.action==='add'||operation.action==='replace'){// value will be an object with element name keys pointing to arrays of objects\\nObject.keys(operation.value).forEach(function(insert){var insertNodes=operation.value[insert];var updatedNodes=target[insert+'_asArray']||[];if(updatedNodes.length===0&&target[insert]){updatedNodes.push(target[insert]);}if(updatedNodes.length===0){// no original nodes for this element type\\nupdatedNodes=insertNodes;}else{// compute the position we need to insert at, default to end of set\\nvar position=updatedNodes.length;if(insert==name&&relativePosition!=-1){// if the inserted element matches the operation target (not leaf) and there is a relative position we\\n// want the inserted position to be set such that our insertion is relative to original position\\n// since replace has modified the array length we reduce the insert point by 1\\nposition=relativePosition+(insertBefore?0:1)+(operation.action=='replace'?-1:0);}else{// otherwise we are in an add append/prepend case or replace case that removed the target name completely\\nposition=insertBefore?0:updatedNodes.length;}// we dont have to perform element removal for the replace case as that was done above\\nupdatedNodes.splice.apply(updatedNodes,[position,0].concat(insertNodes));}// now we properly reset the element keys on the target to match parsing semantics\\ntarget[insert+'_asArray']=updatedNodes;target[insert]=updatedNodes.length==1?updatedNodes[0]:updatedNodes;});}});}// #endregion PUBLIC FUNCTIONS\\n// #region PRIVATE FUNCTIONS\\n// --------------------------------------------------\\nfunction getManifest(externalManifest){return externalManifest?externalManifest:voPeriods.length>0?voPeriods[0].mpd.manifest:null;}function getAdaptationForMediaInfo(mediaInfo){if(!mediaInfo||!mediaInfo.streamInfo||mediaInfo.streamInfo.id===undefined||!voAdaptations[mediaInfo.streamInfo.id])return null;return voAdaptations[mediaInfo.streamInfo.id][mediaInfo.index];}function getPeriodForStreamInfo(streamInfo,voPeriodsArray){var ln=voPeriodsArray.length;for(var i=0;i=0&&typeof cea608parser!=='undefined'){if(accessibilityValue){accessibilityData='cea-608:'+accessibilityValue;}else{accessibilityData='cea-608';}mediaInfo.embeddedCaptions=true;}return accessibilityData;});mediaInfo.audioChannelConfiguration=dashManifestModel.getAudioChannelConfigurationForAdaptation(realAdaptation).map(function(audioChannelConfiguration){return audioChannelConfiguration.value;});if(mediaInfo.audioChannelConfiguration.length===0&&Array.isArray(realAdaptation.Representation_asArray)&&realAdaptation.Representation_asArray.length>0){mediaInfo.audioChannelConfiguration=dashManifestModel.getAudioChannelConfigurationForRepresentation(realAdaptation.Representation_asArray[0]).map(function(audioChannelConfiguration){return audioChannelConfiguration.value;});}mediaInfo.roles=dashManifestModel.getRolesForAdaptation(realAdaptation).map(function(role){return role.value;});mediaInfo.codec=dashManifestModel.getCodec(realAdaptation);mediaInfo.mimeType=dashManifestModel.getMimeType(realAdaptation);mediaInfo.contentProtection=dashManifestModel.getContentProtectionData(realAdaptation);mediaInfo.bitrateList=dashManifestModel.getBitrateListForAdaptation(realAdaptation);if(mediaInfo.contentProtection){mediaInfo.contentProtection.forEach(function(item){item.KID=dashManifestModel.getKID(item);});}mediaInfo.isText=dashManifestModel.getIsTextTrack(mediaInfo.mimeType);mediaInfo.supplementalProperties=dashManifestModel.getSupplementalPropperties(realAdaptation);return mediaInfo;}function convertVideoInfoToEmbeddedTextInfo(mediaInfo,channel,lang){mediaInfo.id=channel;// CC1, CC2, CC3, or CC4\\nmediaInfo.index=100+parseInt(channel.substring(2,3));mediaInfo.type=constants.EMBEDDED_TEXT;mediaInfo.codec='cea-608-in-SEI';mediaInfo.isText=true;mediaInfo.isEmbedded=true;mediaInfo.lang=lang;mediaInfo.roles=['caption'];}function convertVideoInfoToThumbnailInfo(mediaInfo){mediaInfo.type=constants.IMAGE;}function convertPeriodToStreamInfo(period){var streamInfo=new _StreamInfo2.default();var THRESHOLD=1;streamInfo.id=period.id;streamInfo.index=period.index;streamInfo.start=period.start;streamInfo.duration=period.duration;streamInfo.manifestInfo=convertMpdToManifestInfo(period.mpd);streamInfo.isLast=period.mpd.manifest.Period_asArray.length===1||Math.abs(streamInfo.start+streamInfo.duration-streamInfo.manifestInfo.duration)0?voPeriods[0].mpd.manifest.Period_asArray[periodIdx]:null;}function findRepresentationIndex(period,representationId){var index=findRepresentation(period,representationId,true);return index!==null?index:-1;}function findRepresentation(period,representationId,returnIndex){var adaptationSet=void 0,adaptationSetArray=void 0,representation=void 0,representationArray=void 0,adaptationSetArrayIndex=void 0,representationArrayIndex=void 0;if(period){adaptationSetArray=period.AdaptationSet_asArray;for(adaptationSetArrayIndex=0;adaptationSetArrayIndex=representation.availableSegmentsNumber){isFinished=true;}}else{if(dynamicStreamCompleted){isFinished=true;}else if(lastSegment){var time=parseFloat((lastSegment.presentationStartTime-representation.adaptation.period.start).toFixed(5));var endTime=lastSegment.duration>0?time+1.5*lastSegment.duration:time;var duration=representation.adaptation.period.duration;isFinished=endTime>=duration;}}return isFinished;}function getSegmentRequestForTime(mediaInfo,representation,time,options){var request=null;if(!representation||!representation.segmentInfoType){return request;}var idx=segmentIndex;var keepIdx=options?options.keepIdx:false;var ignoreIsFinished=options&&options.ignoreIsFinished?true:false;if(requestedTime!==time){// When playing at live edge with 0 delay we may loop back with same time and index until it is available. Reduces verboseness of logs.\\nrequestedTime=time;logger.debug('Getting the request for time : '+time);}var segment=segmentsController.getSegmentByTime(representation,time);if(segment){segmentIndex=segment.availabilityIdx;lastSegment=segment;logger.debug('Index for time '+time+' is '+segmentIndex);request=getRequestForSegment(mediaInfo,segment);}else{var finished=!ignoreIsFinished?isMediaFinished(representation):false;if(finished){request=new _FragmentRequest2.default();request.action=_FragmentRequest2.default.ACTION_COMPLETE;request.index=segmentIndex-1;request.mediaType=type;request.mediaInfo=mediaInfo;logger.debug('Signal complete in getSegmentRequestForTime');}}if(keepIdx&&idx>=0){segmentIndex=representation.segmentInfoType===dashConstants.SEGMENT_TIMELINE&&isDynamicManifest?segmentIndex:idx;}return request;}/**\\n * This function returns the next segment request without modifying any internal variables. Any class (e.g CMCD Model) that needs information about the upcoming request should use this method.\\n * @param {object} mediaInfo\\n * @param {object} representation\\n * @return {FragmentRequest|null}\\n */function getNextSegmentRequestIdempotent(mediaInfo,representation){var request=null;var indexToRequest=segmentIndex+1;var segment=segmentsController.getSegmentByIndex(representation,indexToRequest,lastSegment?lastSegment.mediaStartTime:-1);if(!segment)return null;request=getRequestForSegment(mediaInfo,segment);return request;}/**\\n * Main function to get the next segment request.\\n * @param {object} mediaInfo\\n * @param {object} representation\\n * @return {FragmentRequest|null}\\n */function getNextSegmentRequest(mediaInfo,representation){var request=null;if(!representation||!representation.segmentInfoType){return null;}requestedTime=null;var indexToRequest=segmentIndex+1;logger.debug('Getting the next request at index: '+indexToRequest);// check that there is a segment in this index\\nvar segment=segmentsController.getSegmentByIndex(representation,indexToRequest,lastSegment?lastSegment.mediaStartTime:-1);if(!segment&&isEndlessMedia(representation)&&!dynamicStreamCompleted){logger.debug(getType()+' No segment found at index: '+indexToRequest+'. Wait for next loop');return null;}else{if(segment){request=getRequestForSegment(mediaInfo,segment);segmentIndex=segment.availabilityIdx;}else{if(isDynamicManifest){segmentIndex=indexToRequest-1;}else{segmentIndex=indexToRequest;}}}if(segment){lastSegment=segment;}else{var finished=isMediaFinished(representation,segment);if(finished){request=new _FragmentRequest2.default();request.action=_FragmentRequest2.default.ACTION_COMPLETE;request.index=segmentIndex-1;request.mediaType=getType();request.mediaInfo=mediaInfo;logger.debug('Signal complete');}}return request;}function isEndlessMedia(representation){return!isFinite(representation.adaptation.period.duration);}function onInitializationLoaded(e){var representation=e.representation;if(!representation.segments)return;eventBus.trigger(events.REPRESENTATION_UPDATE_COMPLETED,{representation:representation},{streamId:streamInfo.id,mediaType:type});}function onSegmentsLoaded(e){if(e.error)return;var fragments=e.segments;var representation=e.representation;var segments=[];var count=0;var i=void 0,len=void 0,s=void 0,seg=void 0;for(i=0,len=fragments?fragments.length:0;i0){representation.segmentAvailabilityRange={start:segments[0].presentationStartTime,end:segments[segments.length-1].presentationStartTime};representation.availableSegmentsNumber=segments.length;representation.segments=segments;if(isDynamicManifest){var _lastSegment=segments[segments.length-1];var liveEdge=_lastSegment.presentationStartTime-8;// the last segment is the Expected, not calculated, live edge.\\nsetExpectedLiveEdge(liveEdge);}}if(!representation.hasInitialization()){return;}eventBus.trigger(events.REPRESENTATION_UPDATE_COMPLETED,{representation:representation},{streamId:streamInfo.id,mediaType:type});}function onDynamicToStatic(){logger.debug('Dynamic stream complete');dynamicStreamCompleted=true;}instance={initialize:initialize,getStreamId:getStreamId,getType:getType,getStreamInfo:getStreamInfo,getInitRequest:getInitRequest,getRequestForSegment:getRequestForSegment,getSegmentRequestForTime:getSegmentRequestForTime,getNextSegmentRequest:getNextSegmentRequest,setCurrentIndex:setCurrentIndex,getCurrentIndex:getCurrentIndex,isMediaFinished:isMediaFinished,reset:reset,resetIndex:resetIndex,setMimeType:setMimeType,getNextSegmentRequestIdempotent:getNextSegmentRequestIdempotent};setup();return instance;}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */DashHandler.__dashjs_factory_name='DashHandler';exports.default=_FactoryMaker2.default.getClassFactory(DashHandler);\\n//# sourceMappingURL=DashHandler.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/dash/DashHandler.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/dash/DashMetrics.js\":\n/*!****************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/dash/DashMetrics.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _Constants=__webpack_require__(/*! ../streaming/constants/Constants */ \\\"../node_modules/dashjs/build/es5/src/streaming/constants/Constants.js\\\");var _Constants2=_interopRequireDefault(_Constants);var _HTTPRequest=__webpack_require__(/*! ../streaming/vo/metrics/HTTPRequest */ \\\"../node_modules/dashjs/build/es5/src/streaming/vo/metrics/HTTPRequest.js\\\");var _FactoryMaker=__webpack_require__(/*! ../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _MetricsConstants=__webpack_require__(/*! ../streaming/constants/MetricsConstants */ \\\"../node_modules/dashjs/build/es5/src/streaming/constants/MetricsConstants.js\\\");var _MetricsConstants2=_interopRequireDefault(_MetricsConstants);var _Round=__webpack_require__(/*! ./utils/Round10 */ \\\"../node_modules/dashjs/build/es5/src/dash/utils/Round10.js\\\");var _Round2=_interopRequireDefault(_Round);var _MetricsModel=__webpack_require__(/*! ../streaming/models/MetricsModel */ \\\"../node_modules/dashjs/build/es5/src/streaming/models/MetricsModel.js\\\");var _MetricsModel2=_interopRequireDefault(_MetricsModel);var _Utils=__webpack_require__(/*! ../core/Utils */ \\\"../node_modules/dashjs/build/es5/src/core/Utils.js\\\");var _Utils2=_interopRequireDefault(_Utils);var _PlayList=__webpack_require__(/*! ../streaming/vo/metrics/PlayList */ \\\"../node_modules/dashjs/build/es5/src/streaming/vo/metrics/PlayList.js\\\");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}/**\\n * @module DashMetrics\\n * @param {object} config\\n *//**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */function DashMetrics(config){config=config||{};var context=this.context;var instance=void 0,playListTraceMetricsClosed=void 0,playListTraceMetrics=void 0,playListMetrics=void 0;var metricsModel=config.metricsModel;function setup(){metricsModel=metricsModel||(0,_MetricsModel2.default)(context).getInstance({settings:config.settings});resetInitialSettings();}function resetInitialSettings(){playListTraceMetricsClosed=true;playListTraceMetrics=null;playListMetrics=null;}/**\\n * @param {MediaType} mediaType\\n * @returns {*}\\n * @memberof module:DashMetrics\\n * @instance\\n */function getCurrentRepresentationSwitch(mediaType){var metrics=metricsModel.getMetricsFor(mediaType,true);return getCurrent(metrics,_MetricsConstants2.default.TRACK_SWITCH);}/**\\n * @param {MediaType} mediaType\\n * @param {Date} t time of the switch event\\n * @param {Date} mt media presentation time\\n * @param {string} to id of representation\\n * @param {string} lto if present, subrepresentation reference\\n * @memberof module:DashMetrics\\n * @instance\\n * @ignore\\n */function addRepresentationSwitch(mediaType,t,mt,to,lto){metricsModel.addRepresentationSwitch(mediaType,t,mt,to,lto);}/**\\n * @param {MediaType} type\\n * @returns {number}\\n * @memberof module:DashMetrics\\n * @instance\\n */function getCurrentBufferState(type){var metrics=metricsModel.getMetricsFor(type,true);return getCurrent(metrics,_MetricsConstants2.default.BUFFER_STATE);}/**\\n * @param {MediaType} type\\n * @returns {number}\\n * @memberof module:DashMetrics\\n * @instance\\n */function getCurrentBufferLevel(type){var metrics=metricsModel.getMetricsFor(type,true);var metric=getCurrent(metrics,_MetricsConstants2.default.BUFFER_LEVEL);if(metric){return _Round2.default.round10(metric.level/1000,-3);}return 0;}/**\\n * @param {MediaType} mediaType\\n * @param {number} t\\n * @param {number} level\\n * @memberof module:DashMetrics\\n * @instance\\n * @ignore\\n */function addBufferLevel(mediaType,t,level){metricsModel.addBufferLevel(mediaType,t,level);}/**\\n * @param {MediaType} mediaType\\n * @param {string} state\\n * @param {number} target\\n * @memberof module:DashMetrics\\n * @instance\\n * @ignore\\n */function addBufferState(mediaType,state,target){metricsModel.addBufferState(mediaType,state,target);}/**\\n * @memberof module:DashMetrics\\n * @instance\\n * @ignore\\n */function clearAllCurrentMetrics(){metricsModel.clearAllCurrentMetrics();}/**\\n * @param {MediaType} mediaType\\n * @returns {*}\\n * @memberof module:DashMetrics\\n * @instance\\n */function getCurrentHttpRequest(mediaType){var metrics=metricsModel.getMetricsFor(mediaType,true);if(!metrics){return null;}var httpList=metrics.HttpList;var currentHttpList=null;var httpListLastIndex=void 0;if(!httpList||httpList.length<=0){return null;}httpListLastIndex=httpList.length-1;while(httpListLastIndex>=0){if(httpList[httpListLastIndex].responsecode){currentHttpList=httpList[httpListLastIndex];break;}httpListLastIndex--;}return currentHttpList;}/**\\n * @param {MediaType} mediaType\\n * @returns {*}\\n * @memberof module:DashMetrics\\n * @instance\\n */function getHttpRequests(mediaType){var metrics=metricsModel.getMetricsFor(mediaType,true);if(!metrics){return[];}return!!metrics.HttpList?metrics.HttpList:[];}/**\\n * @param {MediaType} mediaType\\n * @param {Array} loadingRequests\\n * @param {Array} executedRequests\\n * @memberof module:DashMetrics\\n * @instance\\n * @ignore\\n */function addRequestsQueue(mediaType,loadingRequests,executedRequests){metricsModel.addRequestsQueue(mediaType,loadingRequests,executedRequests);}/**\\n * @param {MetricsList} metrics\\n * @param {string} metricName\\n * @returns {*}\\n * @memberof module:DashMetrics\\n * @instance\\n */function getCurrent(metrics,metricName){if(!metrics){return null;}var list=metrics[metricName];return!list||list.length===0?null:list[list.length-1];}/**\\n * @returns {*}\\n * @memberof module:DashMetrics\\n * @instance\\n * @ignore\\n */function getCurrentDroppedFrames(){var metrics=metricsModel.getMetricsFor(_Constants2.default.VIDEO,true);return getCurrent(metrics,_MetricsConstants2.default.DROPPED_FRAMES);}/**\\n * @param {number} quality\\n * @memberof module:DashMetrics\\n * @instance\\n * @ignore\\n */function addDroppedFrames(quality){metricsModel.addDroppedFrames(_Constants2.default.VIDEO,quality);}/**\\n * @param {MediaType} mediaType\\n * @returns {*}\\n * @memberof module:DashMetrics\\n * @instance\\n */function getCurrentSchedulingInfo(mediaType){var metrics=metricsModel.getMetricsFor(mediaType,true);return getCurrent(metrics,_MetricsConstants2.default.SCHEDULING_INFO);}/**\\n * @param {object} request\\n * @param {string} state\\n * @memberof module:DashMetrics\\n * @instance\\n * @ignore\\n */function addSchedulingInfo(request,state){metricsModel.addSchedulingInfo(request.mediaType,new Date(),request.type,request.startTime,request.availabilityStartTime,request.duration,request.quality,request.range,state);}/**\\n * @returns {*}\\n * @memberof module:DashMetrics\\n * @instance\\n */function getCurrentManifestUpdate(){var streamMetrics=metricsModel.getMetricsFor(_Constants2.default.STREAM);return getCurrent(streamMetrics,_MetricsConstants2.default.MANIFEST_UPDATE);}/**\\n * @param {object} updatedFields fields to be updated\\n * @memberof module:DashMetrics\\n * @instance\\n * @ignore\\n */function updateManifestUpdateInfo(updatedFields){var manifestUpdate=this.getCurrentManifestUpdate();metricsModel.updateManifestUpdateInfo(manifestUpdate,updatedFields);}/**\\n * @param {object} streamInfo\\n * @memberof module:DashMetrics\\n * @instance\\n * @ignore\\n */function addManifestUpdateStreamInfo(streamInfo){if(streamInfo){var manifestUpdate=this.getCurrentManifestUpdate();metricsModel.addManifestUpdateStreamInfo(manifestUpdate,streamInfo.id,streamInfo.index,streamInfo.start,streamInfo.duration);}}/**\\n * @param {object} request\\n * @memberof module:DashMetrics\\n * @instance\\n * @ignore\\n */function addManifestUpdate(request){metricsModel.addManifestUpdate(_Constants2.default.STREAM,request.type,request.requestStartDate,request.requestEndDate);}/**\\n * @param {object} request\\n * @param {string} responseURL\\n * @param {number} responseStatus\\n * @param {object} responseHeaders\\n * @param {object} traces\\n * @memberof module:DashMetrics\\n * @instance\\n * @ignore\\n */function addHttpRequest(request,responseURL,responseStatus,responseHeaders,traces){metricsModel.addHttpRequest(request.mediaType,null,request.type,request.url,request.quality,responseURL,request.serviceLocation||null,request.range||null,request.requestStartDate,request.firstByteDate,request.requestEndDate,responseStatus,request.duration,responseHeaders,traces);}/**\\n * @param {object} representation\\n * @param {MediaType} mediaType\\n * @memberof module:DashMetrics\\n * @instance\\n * @ignore\\n */function addManifestUpdateRepresentationInfo(representation,mediaType){if(representation){var manifestUpdateInfo=this.getCurrentManifestUpdate();metricsModel.addManifestUpdateRepresentationInfo(manifestUpdateInfo,representation.id,representation.index,representation.streamIndex,mediaType,representation.presentationTimeOffset,representation.startNumber,representation.fragmentInfoType);}}/**\\n * @param {MediaType} mediaType\\n * @returns {*}\\n * @memberof module:DashMetrics\\n * @instance\\n */function getCurrentDVRInfo(mediaType){var metrics=mediaType?metricsModel.getMetricsFor(mediaType,true):metricsModel.getMetricsFor(_Constants2.default.VIDEO,true)||metricsModel.getMetricsFor(_Constants2.default.AUDIO,true);return getCurrent(metrics,_MetricsConstants2.default.DVR_INFO);}/**\\n * @param {MediaType} mediaType\\n * @param {Date} currentTime time of the switch event\\n * @param {object} mpd mpd reference\\n * @param {object} range range of the dvr info\\n * @memberof module:DashMetrics\\n * @instance\\n * @ignore\\n */function addDVRInfo(mediaType,currentTime,mpd,range){metricsModel.addDVRInfo(mediaType,currentTime,mpd,range);}/**\\n * @param {string} id\\n * @returns {*}\\n * @memberof module:DashMetrics\\n * @instance\\n */function getLatestMPDRequestHeaderValueByID(id){var headers={};var httpRequestList=void 0,httpRequest=void 0,i=void 0;httpRequestList=getHttpRequests(_Constants2.default.STREAM);for(i=httpRequestList.length-1;i>=0;i--){httpRequest=httpRequestList[i];if(httpRequest.type===_HTTPRequest.HTTPRequest.MPD_TYPE){headers=_Utils2.default.parseHttpHeaders(httpRequest._responseHeaders);break;}}return headers[id]===undefined?null:headers[id];}/**\\n * @param {string} type\\n * @param {string} id\\n * @returns {*}\\n * @memberof module:DashMetrics\\n * @instance\\n */function getLatestFragmentRequestHeaderValueByID(type,id){var headers={};var httpRequest=getCurrentHttpRequest(type,true);if(httpRequest){headers=_Utils2.default.parseHttpHeaders(httpRequest._responseHeaders);}return headers[id]===undefined?null:headers[id];}/**\\n * @memberof module:DashMetrics\\n * @instance\\n * @ignore\\n */function addPlayList(){if(playListMetrics){metricsModel.addPlayList(playListMetrics);playListMetrics=null;}}function createPlaylistMetrics(mediaStartTime,startReason){playListMetrics=new _PlayList.PlayList();playListMetrics.start=new Date();playListMetrics.mstart=mediaStartTime;playListMetrics.starttype=startReason;}function createPlaylistTraceMetrics(representationId,mediaStartTime,speed){if(playListTraceMetricsClosed===true){playListTraceMetricsClosed=false;playListTraceMetrics=new _PlayList.PlayListTrace();playListTraceMetrics.representationid=representationId;playListTraceMetrics.start=new Date();playListTraceMetrics.mstart=mediaStartTime;playListTraceMetrics.playbackspeed=speed!==null?speed.toString():null;}}function updatePlayListTraceMetrics(traceToUpdate){if(playListTraceMetrics){for(var field in playListTraceMetrics){playListTraceMetrics[field]=traceToUpdate[field];}}}function pushPlayListTraceMetrics(endTime,reason){if(playListTraceMetricsClosed===false&&playListMetrics&&playListTraceMetrics&&playListTraceMetrics.start){var startTime=playListTraceMetrics.start;var duration=endTime.getTime()-startTime.getTime();playListTraceMetrics.duration=duration;playListTraceMetrics.stopreason=reason;playListMetrics.trace.push(playListTraceMetrics);playListTraceMetricsClosed=true;}}/**\\n * @param {object} errors\\n * @memberof module:DashMetrics\\n * @instance\\n * @ignore\\n */function addDVBErrors(errors){metricsModel.addDVBErrors(errors);}instance={getCurrentRepresentationSwitch:getCurrentRepresentationSwitch,getCurrentBufferState:getCurrentBufferState,getCurrentBufferLevel:getCurrentBufferLevel,getCurrentHttpRequest:getCurrentHttpRequest,getHttpRequests:getHttpRequests,getCurrentDroppedFrames:getCurrentDroppedFrames,getCurrentSchedulingInfo:getCurrentSchedulingInfo,getCurrentDVRInfo:getCurrentDVRInfo,getCurrentManifestUpdate:getCurrentManifestUpdate,getLatestFragmentRequestHeaderValueByID:getLatestFragmentRequestHeaderValueByID,getLatestMPDRequestHeaderValueByID:getLatestMPDRequestHeaderValueByID,addRepresentationSwitch:addRepresentationSwitch,addDVRInfo:addDVRInfo,updateManifestUpdateInfo:updateManifestUpdateInfo,addManifestUpdateStreamInfo:addManifestUpdateStreamInfo,addManifestUpdateRepresentationInfo:addManifestUpdateRepresentationInfo,addManifestUpdate:addManifestUpdate,addHttpRequest:addHttpRequest,addSchedulingInfo:addSchedulingInfo,addRequestsQueue:addRequestsQueue,addBufferLevel:addBufferLevel,addBufferState:addBufferState,addDroppedFrames:addDroppedFrames,addPlayList:addPlayList,addDVBErrors:addDVBErrors,createPlaylistMetrics:createPlaylistMetrics,createPlaylistTraceMetrics:createPlaylistTraceMetrics,updatePlayListTraceMetrics:updatePlayListTraceMetrics,pushPlayListTraceMetrics:pushPlayListTraceMetrics,clearAllCurrentMetrics:clearAllCurrentMetrics};setup();return instance;}DashMetrics.__dashjs_factory_name='DashMetrics';exports.default=_FactoryMaker2.default.getSingletonFactory(DashMetrics);\\n//# sourceMappingURL=DashMetrics.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/dash/DashMetrics.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/dash/SegmentBaseLoader.js\":\n/*!**********************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/dash/SegmentBaseLoader.js ***!\n \\**********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _Segment=__webpack_require__(/*! ./vo/Segment */ \\\"../node_modules/dashjs/build/es5/src/dash/vo/Segment.js\\\");var _Segment2=_interopRequireDefault(_Segment);var _DashJSError=__webpack_require__(/*! ../streaming/vo/DashJSError */ \\\"../node_modules/dashjs/build/es5/src/streaming/vo/DashJSError.js\\\");var _DashJSError2=_interopRequireDefault(_DashJSError);var _FactoryMaker=__webpack_require__(/*! ../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _FragmentRequest=__webpack_require__(/*! ../streaming/vo/FragmentRequest */ \\\"../node_modules/dashjs/build/es5/src/streaming/vo/FragmentRequest.js\\\");var _FragmentRequest2=_interopRequireDefault(_FragmentRequest);var _URLLoader=__webpack_require__(/*! ../streaming/net/URLLoader */ \\\"../node_modules/dashjs/build/es5/src/streaming/net/URLLoader.js\\\");var _URLLoader2=_interopRequireDefault(_URLLoader);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function SegmentBaseLoader(){var context=this.context;var instance=void 0,logger=void 0,errHandler=void 0,boxParser=void 0,requestModifier=void 0,dashMetrics=void 0,settings=void 0,mediaPlayerModel=void 0,urlLoader=void 0,events=void 0,eventBus=void 0,errors=void 0,constants=void 0,dashConstants=void 0,urlUtils=void 0,baseURLController=void 0;function setup(){}function initialize(){urlLoader=(0,_URLLoader2.default)(context).create({errHandler:errHandler,dashMetrics:dashMetrics,mediaPlayerModel:mediaPlayerModel,requestModifier:requestModifier,useFetch:settings?settings.get().streaming.lowLatencyEnabled:null,boxParser:boxParser,errors:errors,urlUtils:urlUtils,constants:constants,dashConstants:dashConstants});}function setConfig(config){if(config.baseURLController){baseURLController=config.baseURLController;}if(config.dashMetrics){dashMetrics=config.dashMetrics;}if(config.mediaPlayerModel){mediaPlayerModel=config.mediaPlayerModel;}if(config.errHandler){errHandler=config.errHandler;}if(config.settings){settings=config.settings;}if(config.boxParser){boxParser=config.boxParser;}if(config.events){events=config.events;}if(config.eventBus){eventBus=config.eventBus;}if(config.debug){logger=config.debug.getLogger(instance);}if(config.requestModifier){requestModifier=config.requestModifier;}if(config.errors){errors=config.errors;}if(config.urlUtils){urlUtils=config.urlUtils;}if(config.constants){constants=config.constants;}if(config.dashConstants){dashConstants=config.dashConstants;}}function checkConfig(){if(!baseURLController||!baseURLController.hasOwnProperty('resolve')){throw new Error('setConfig function has to be called previously');}}function loadInitialization(streamId,mediaType,representation,loadingInfo){checkConfig();var initRange=null;var baseUrl=representation?baseURLController.resolve(representation.path):null;var info=loadingInfo||{init:true,url:baseUrl?baseUrl.url:undefined,range:{start:0,end:1500},searching:false,bytesLoaded:0,bytesToLoad:1500,mediaType:mediaType};logger.debug('Start searching for initialization.');var request=getFragmentRequest(info);var onload=function onload(response){info.bytesLoaded=info.range.end;initRange=boxParser.findInitRange(response);if(initRange){representation.range=initRange;// note that we don't explicitly set rep.initialization as this\\n// will be computed when all BaseURLs are resolved later\\neventBus.trigger(events.INITIALIZATION_LOADED,{representation:representation},{streamId:streamId,mediaType:mediaType});}else{info.range.end=info.bytesLoaded+info.bytesToLoad;loadInitialization(streamId,mediaType,representation,info);}};var onerror=function onerror(){eventBus.trigger(events.INITIALIZATION_LOADED,{representation:representation},{streamId:streamId,mediaType:mediaType});};urlLoader.load({request:request,success:onload,error:onerror});logger.debug('Perform init search: '+info.url);}function loadSegments(streamId,mediaType,representation,range,callback,loadingInfo){checkConfig();if(range&&(range.start===undefined||range.end===undefined)){var parts=range?range.toString().split('-'):null;range=parts?{start:parseFloat(parts[0]),end:parseFloat(parts[1])}:null;}callback=!callback?onLoaded:callback;var isoFile=null;var sidx=null;var hasRange=!!range;var baseUrl=representation?baseURLController.resolve(representation.path):null;var info={init:false,url:baseUrl?baseUrl.url:undefined,range:hasRange?range:{start:0,end:1500},searching:!hasRange,bytesLoaded:loadingInfo?loadingInfo.bytesLoaded:0,bytesToLoad:1500,mediaType:mediaType};var request=getFragmentRequest(info);var onload=function onload(response){var extraBytes=info.bytesToLoad;var loadedLength=response.byteLength;info.bytesLoaded=info.range.end-info.range.start;isoFile=boxParser.parse(response);sidx=isoFile.getBox('sidx');if(!sidx||!sidx.isComplete){if(sidx){info.range.start=sidx.offset||info.range.start;info.range.end=info.range.start+(sidx.size||extraBytes);}else if(loadedLength0){loadMultiSidx=ref[0].reference_type===1;}if(loadMultiSidx){logger.debug('Initiate multiple SIDX load.');info.range.end=info.range.start+sidx.size;var j=void 0,len=void 0,ss=void 0,se=void 0,r=void 0;var segs=[];var count=0;var offset=(sidx.offset||info.range.start)+sidx.size;var tmpCallback=function tmpCallback(streamId,mediaType,result){if(result){segs=segs.concat(result);count++;if(count>=len){// http requests can be processed in a wrong order, so, we have to reorder segments with an ascending start Time order\\nsegs.sort(function(a,b){return a.startTime-b.startTime<0?-1:0;});callback(streamId,mediaType,segs,representation);}}else{callback(streamId,mediaType,null,representation);}};for(j=0,len=ref.length;j=voAvailableRepresentations.length?null:voAvailableRepresentations[quality];}function getQualityForRepresentation(voRepresentation){return voAvailableRepresentations.indexOf(voRepresentation);}function isAllRepresentationsUpdated(){for(var i=0,ln=voAvailableRepresentations.length;i0){postponeUpdate(postponeTimePeriod);err=new _DashJSError2.default(errors.SEGMENTS_UPDATE_FAILED_ERROR_CODE,errors.SEGMENTS_UPDATE_FAILED_ERROR_MESSAGE);endDataUpdate(err);return;}if(manifestUpdateInfo){for(var i=0;i0){var essentialProperties=getEssentialPropertiesForRepresentation(adaptation.Representation_asArray[0]);if(essentialProperties&&essentialProperties.length>0&&_ThumbnailTracks.THUMBNAILS_SCHEME_ID_URIS.indexOf(essentialProperties[0].schemeIdUri)>=0){return type===_Constants2.default.IMAGE;}if(adaptation.Representation_asArray[0].hasOwnProperty(_DashConstants2.default.CODECS)){// Just check the start of the codecs string\\ncodecs=adaptation.Representation_asArray[0].codecs;if(codecs.search(_Constants2.default.STPP)===0||codecs.search(_Constants2.default.WVTT)===0){return type===_Constants2.default.FRAGMENTED_TEXT;}}}if(col){if(col.length>1){return type===_Constants2.default.MUXED;}else if(col[0]&&col[0].contentType===type){result=true;found=true;}}if(adaptation.hasOwnProperty(_DashConstants2.default.MIME_TYPE)){result=mimeTypeRegEx.test(adaptation.mimeType);found=true;}// couldn't find on adaptationset, so check a representation\\nif(!found){i=0;len=adaptation.Representation_asArray&&adaptation.Representation_asArray.length?adaptation.Representation_asArray.length:0;while(!found&&i0&&isInteger(index)){return realPeriods[index];}else{return null;}}function getAdaptationForId(id,manifest,periodIndex){var realAdaptations=getRealAdaptations(manifest,periodIndex);var i=void 0,len=void 0;for(i=0,len=realAdaptations.length;i0&&isInteger(index)){return realAdaptations[index];}else{return null;}}function getIndexForAdaptation(realAdaptation,manifest,periodIndex){if(!realAdaptation){return-1;}var realAdaptations=getRealAdaptations(manifest,periodIndex);for(var i=0;i0){var representation=isInteger(representationId)&&representationId>=0&&representationId0?adaptation.Representation_asArray[0].mimeType:null;}function getKID(adaptation){if(!adaptation||!adaptation.hasOwnProperty(_DashConstants2.default.CENC_DEFAULT_KID)){return null;}return adaptation[_DashConstants2.default.CENC_DEFAULT_KID];}function getLabelsForAdaptation(adaptation){if(!adaptation||!Array.isArray(adaptation.Label_asArray)){return[];}var labelArray=[];for(var i=0;i0){has=manifest.profiles.indexOf(profile)!==-1;}return has;}function getDuration(manifest){var mpdDuration=void 0;//@mediaPresentationDuration specifies the duration of the entire Media Presentation.\\n//If the attribute is not present, the duration of the Media Presentation is unknown.\\nif(manifest&&manifest.hasOwnProperty(_DashConstants2.default.MEDIA_PRESENTATION_DURATION)){mpdDuration=manifest.mediaPresentationDuration;}else if(manifest&&manifest.type=='dynamic'){mpdDuration=Number.POSITIVE_INFINITY;}else{mpdDuration=Number.MAX_SAFE_INTEGER||Number.MAX_VALUE;}return mpdDuration;}function getBandwidth(representation){return representation&&representation.bandwidth?representation.bandwidth:NaN;}function getManifestUpdatePeriod(manifest){var latencyOfLastUpdate=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var delay=NaN;if(manifest&&manifest.hasOwnProperty(_DashConstants2.default.MINIMUM_UPDATE_PERIOD)){delay=manifest.minimumUpdatePeriod;}return isNaN(delay)?delay:Math.max(delay-latencyOfLastUpdate,1);}function getPublishTime(manifest){return manifest&&manifest.hasOwnProperty(_DashConstants2.default.PUBLISH_TIME)?new Date(manifest[_DashConstants2.default.PUBLISH_TIME]):null;}function getRepresentationCount(adaptation){return adaptation&&Array.isArray(adaptation.Representation_asArray)?adaptation.Representation_asArray.length:0;}function getBitrateListForAdaptation(realAdaptation){var processedRealAdaptation=processAdaptation(realAdaptation);var realRepresentations=processedRealAdaptation&&Array.isArray(processedRealAdaptation.Representation_asArray)?processedRealAdaptation.Representation_asArray:[];return realRepresentations.map(function(realRepresentation){return{bandwidth:realRepresentation.bandwidth,width:realRepresentation.width||0,height:realRepresentation.height||0,scanType:realRepresentation.scanType||null,id:realRepresentation.id||null};});}function getEssentialPropertiesForRepresentation(realRepresentation){if(!realRepresentation||!realRepresentation.EssentialProperty_asArray||!realRepresentation.EssentialProperty_asArray.length)return null;return realRepresentation.EssentialProperty_asArray.map(function(prop){return{schemeIdUri:prop.schemeIdUri,value:prop.value};});}function getRepresentationFor(index,adaptation){return adaptation&&adaptation.Representation_asArray&&adaptation.Representation_asArray.length>0&&isInteger(index)?adaptation.Representation_asArray[index]:null;}function getRealAdaptationFor(voAdaptation){if(voAdaptation&&voAdaptation.period&&isInteger(voAdaptation.period.index)){var periodArray=voAdaptation.period.mpd.manifest.Period_asArray[voAdaptation.period.index];if(periodArray&&periodArray.AdaptationSet_asArray&&isInteger(voAdaptation.index)){return processAdaptation(periodArray.AdaptationSet_asArray[voAdaptation.index]);}}}function getRepresentationsForAdaptation(voAdaptation){var voRepresentations=[];var processedRealAdaptation=getRealAdaptationFor(voAdaptation);var segmentInfo=void 0,baseUrl=void 0;if(processedRealAdaptation&&processedRealAdaptation.Representation_asArray){// TODO: TO BE REMOVED. We should get just the baseUrl elements that affects to the representations\\n// that we are processing. Making it works properly will require much further changes and given\\n// parsing base Urls parameters is needed for our ultra low latency examples, we will\\n// keep this \\\"tricky\\\" code until the real (and good) solution comes\\nif(voAdaptation&&voAdaptation.period&&isInteger(voAdaptation.period.index)){var baseUrls=getBaseURLsFromElement(voAdaptation.period.mpd.manifest);if(baseUrls){baseUrl=baseUrls[0];}}for(var i=0,len=processedRealAdaptation.Representation_asArray.length;i0&&realPeriod.id!=='__proto__'){id=realPeriod.id;}return id;}function getMpd(manifest){var mpd=new _Mpd2.default();if(manifest){mpd.manifest=manifest;if(manifest.hasOwnProperty(_DashConstants2.default.AVAILABILITY_START_TIME)){mpd.availabilityStartTime=new Date(manifest.availabilityStartTime.getTime());}else{if(manifest.loadedTime){mpd.availabilityStartTime=new Date(manifest.loadedTime.getTime());}}if(manifest.hasOwnProperty(_DashConstants2.default.AVAILABILITY_END_TIME)){mpd.availabilityEndTime=new Date(manifest.availabilityEndTime.getTime());}if(manifest.hasOwnProperty(_DashConstants2.default.MINIMUM_UPDATE_PERIOD)){mpd.minimumUpdatePeriod=manifest.minimumUpdatePeriod;}if(manifest.hasOwnProperty(_DashConstants2.default.MEDIA_PRESENTATION_DURATION)){mpd.mediaPresentationDuration=manifest.mediaPresentationDuration;}if(manifest.hasOwnProperty(_DashConstants2.default.SUGGESTED_PRESENTATION_DELAY)){mpd.suggestedPresentationDelay=manifest.suggestedPresentationDelay;}if(manifest.hasOwnProperty(_DashConstants2.default.TIMESHIFT_BUFFER_DEPTH)){mpd.timeShiftBufferDepth=manifest.timeShiftBufferDepth;}if(manifest.hasOwnProperty(_DashConstants2.default.MAX_SEGMENT_DURATION)){mpd.maxSegmentDuration=manifest.maxSegmentDuration;}if(manifest.hasOwnProperty(_DashConstants2.default.PUBLISH_TIME)){mpd.publishTime=new Date(manifest.publishTime);}}return mpd;}function checkConfig(){if(!errHandler||!errHandler.hasOwnProperty('error')){throw new Error(_Constants2.default.MISSING_CONFIG_ERROR);}}function getEndTimeForLastPeriod(voPeriod){checkConfig();var isDynamic=getIsDynamic(voPeriod.mpd.manifest);var periodEnd=void 0;if(voPeriod.mpd.manifest.mediaPresentationDuration){periodEnd=voPeriod.mpd.manifest.mediaPresentationDuration;}else if(voPeriod.duration){periodEnd=voPeriod.duration;}else if(isDynamic){periodEnd=Number.POSITIVE_INFINITY;}else{errHandler.error(new _DashJSError2.default(_Errors2.default.MANIFEST_ERROR_ID_PARSE_CODE,'Must have @mediaPresentationDuration on MPD or an explicit @duration on the last period.',voPeriod));}return periodEnd;}function getEventsForPeriod(period){var manifest=period&&period.mpd&&period.mpd.manifest?period.mpd.manifest:null;var periodArray=manifest?manifest.Period_asArray:null;var eventStreams=periodArray&&period&&isInteger(period.index)?periodArray[period.index].EventStream_asArray:null;var events=[];var i=void 0,j=void 0;if(eventStreams){for(i=0;i\\\": { }\\n// }\\nvar key=Object.keys(child)[0];// we also ignore\\nif(key!=='#text'){groups[key]=groups[key]||[];groups[key].push(child[key]);}return groups;},{});}var operation=new _PatchOperation2.default(action,xpath,value);if(action==='add'){operation.position=node.pos;}return operation;}).filter(function(operation){return!!operation;});}instance={getIsPatch:getIsPatch,getPublishTime:getPublishTime,getOriginalPublishTime:getOriginalPublishTime,getMpdId:getMpdId,getPatchOperations:getPatchOperations};setup();return instance;}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */PatchManifestModel.__dashjs_factory_name='PatchManifestModel';exports.default=_FactoryMaker2.default.getSingletonFactory(PatchManifestModel);\\n//# sourceMappingURL=PatchManifestModel.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/dash/models/PatchManifestModel.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/dash/parser/DashParser.js\":\n/*!**********************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/dash/parser/DashParser.js ***!\n \\**********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _FactoryMaker=__webpack_require__(/*! ../../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _objectiron=__webpack_require__(/*! ./objectiron */ \\\"../node_modules/dashjs/build/es5/src/dash/parser/objectiron.js\\\");var _objectiron2=_interopRequireDefault(_objectiron);var _xml2json=__webpack_require__(/*! ../../../externals/xml2json */ \\\"../node_modules/dashjs/build/es5/externals/xml2json.js\\\");var _xml2json2=_interopRequireDefault(_xml2json);var _StringMatcher=__webpack_require__(/*! ./matchers/StringMatcher */ \\\"../node_modules/dashjs/build/es5/src/dash/parser/matchers/StringMatcher.js\\\");var _StringMatcher2=_interopRequireDefault(_StringMatcher);var _DurationMatcher=__webpack_require__(/*! ./matchers/DurationMatcher */ \\\"../node_modules/dashjs/build/es5/src/dash/parser/matchers/DurationMatcher.js\\\");var _DurationMatcher2=_interopRequireDefault(_DurationMatcher);var _DateTimeMatcher=__webpack_require__(/*! ./matchers/DateTimeMatcher */ \\\"../node_modules/dashjs/build/es5/src/dash/parser/matchers/DateTimeMatcher.js\\\");var _DateTimeMatcher2=_interopRequireDefault(_DateTimeMatcher);var _NumericMatcher=__webpack_require__(/*! ./matchers/NumericMatcher */ \\\"../node_modules/dashjs/build/es5/src/dash/parser/matchers/NumericMatcher.js\\\");var _NumericMatcher2=_interopRequireDefault(_NumericMatcher);var _RepresentationBaseValuesMap=__webpack_require__(/*! ./maps/RepresentationBaseValuesMap */ \\\"../node_modules/dashjs/build/es5/src/dash/parser/maps/RepresentationBaseValuesMap.js\\\");var _RepresentationBaseValuesMap2=_interopRequireDefault(_RepresentationBaseValuesMap);var _SegmentValuesMap=__webpack_require__(/*! ./maps/SegmentValuesMap */ \\\"../node_modules/dashjs/build/es5/src/dash/parser/maps/SegmentValuesMap.js\\\");var _SegmentValuesMap2=_interopRequireDefault(_SegmentValuesMap);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function DashParser(config){config=config||{};var context=this.context;var debug=config.debug;var instance=void 0,logger=void 0,matchers=void 0,converter=void 0,objectIron=void 0;function setup(){logger=debug.getLogger(instance);matchers=[new _DurationMatcher2.default(),new _DateTimeMatcher2.default(),new _NumericMatcher2.default(),new _StringMatcher2.default()// last in list to take precedence over NumericMatcher\\n];converter=new _xml2json2.default({escapeMode:false,attributePrefix:'',arrayAccessForm:'property',emptyNodeForm:'object',stripWhitespaces:false,enableToStringFunc:true,ignoreRoot:false,matchers:matchers});objectIron=(0,_objectiron2.default)(context).create({adaptationset:new _RepresentationBaseValuesMap2.default(),period:new _SegmentValuesMap2.default()});}function getMatchers(){return matchers;}function getIron(){return objectIron;}function parse(data){var manifest=void 0;var startTime=window.performance.now();manifest=converter.xml_str2json(data);if(!manifest){throw new Error('parsing the manifest failed');}var jsonTime=window.performance.now();// handle full MPD and Patch ironing separately\\nif(manifest.Patch){manifest=manifest.Patch;// drop root reference\\n// apply iron to patch operations individually\\nif(manifest.add_asArray){manifest.add_asArray.forEach(function(operand){return objectIron.run(operand);});}if(manifest.replace_asArray){manifest.replace_asArray.forEach(function(operand){return objectIron.run(operand);});}// note that we don't need to iron remove as they contain no children\\n}else{manifest=manifest.MPD;// drop root reference\\nobjectIron.run(manifest);}var ironedTime=window.performance.now();logger.info('Parsing complete: ( xml2json: '+(jsonTime-startTime).toPrecision(3)+'ms, objectiron: '+(ironedTime-jsonTime).toPrecision(3)+'ms, total: '+((ironedTime-startTime)/1000).toPrecision(3)+'s)');manifest.protocol='DASH';return manifest;}instance={parse:parse,getMatchers:getMatchers,getIron:getIron};setup();return instance;}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */DashParser.__dashjs_factory_name='DashParser';exports.default=_FactoryMaker2.default.getClassFactory(DashParser);\\n//# sourceMappingURL=DashParser.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/dash/parser/DashParser.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/dash/parser/maps/CommonProperty.js\":\n/*!*******************************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/dash/parser/maps/CommonProperty.js ***!\n \\*******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i=0;}else{return false;}}return false;},function(str){return String(str);}));}return StringMatcher;}(_BaseMatcher3.default);exports.default=StringMatcher;\\n//# sourceMappingURL=StringMatcher.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/dash/parser/matchers/StringMatcher.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/dash/parser/objectiron.js\":\n/*!**********************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/dash/parser/objectiron.js ***!\n \\**********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _typeof=typeof Symbol===\\\"function\\\"&&typeof Symbol.iterator===\\\"symbol\\\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\\\"function\\\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\\\"symbol\\\":typeof obj;};/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */var _FactoryMaker=__webpack_require__(/*! ../../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function ObjectIron(mappers){function mergeValues(parentItem,childItem){for(var name in parentItem){if(!childItem.hasOwnProperty(name)){childItem[name]=parentItem[name];}}}function mapProperties(properties,parent,child){for(var i=0,len=properties.length;i0){for(i=0;i=ft&&time-epsilon have been\\n// replaced. once that has happened, startPos below will be -1\\n// and the completed url will be returned.\\nwhile(true){// check if there is a valid $...$ identifier\\n// if not, return the url as is.\\nstartPos=url.indexOf('$'+token);if(startPos<0){return url;}// the next '$' must be the end of the identifier\\n// if there isn't one, return the url as is.\\nendPos=url.indexOf('$',startPos+tokenLen);if(endPos<0){return url;}// now see if there is an additional format tag suffixed to\\n// the identifier within the enclosing '$' characters\\nformatTagPos=url.indexOf(formatTag,startPos+tokenLen);if(formatTagPos>startPos&&formatTagPos=periodRelativeEnd){if(isDynamic){// segment is not available in current period, but it may be segment available in another period that current one (in DVR window)\\n// if not (time > segmentAvailabilityRange.end), then return false\\nif(representation.segmentAvailabilityRange&&segment.presentationStartTime>=representation.segmentAvailabilityRange.end){return false;}}else{return false;}}return true;}function getIndexBasedSegment(timelineConverter,isDynamic,representation,index){var duration=void 0,presentationStartTime=void 0,presentationEndTime=void 0;duration=representation.segmentDuration;/*\\n * From spec - If neither @duration attribute nor SegmentTimeline element is present, then the Representation\\n * shall contain exactly one Media Segment. The MPD start time is 0 and the MPD duration is obtained\\n * in the same way as for the last Media Segment in the Representation.\\n */if(isNaN(duration)){duration=representation.adaptation.period.duration;}presentationStartTime=parseFloat((representation.adaptation.period.start+index*duration).toFixed(5));presentationEndTime=parseFloat((presentationStartTime+duration).toFixed(5));var segment=getSegment(representation,duration,presentationStartTime,timelineConverter.calcMediaTimeFromPresentationTime(presentationStartTime,representation),timelineConverter.calcAvailabilityStartTimeFromPresentationTime(presentationStartTime,representation.adaptation.period.mpd,isDynamic),timelineConverter,presentationEndTime,isDynamic,index);if(!isSegmentAvailable(timelineConverter,representation,segment,isDynamic)){return null;}return segment;}function getTimeBasedSegment(timelineConverter,isDynamic,representation,time,duration,fTimescale,url,range,index,tManifest){var scaledTime=time/fTimescale;var scaledDuration=Math.min(duration/fTimescale,representation.adaptation.period.mpd.maxSegmentDuration);var presentationStartTime=void 0,presentationEndTime=void 0,seg=void 0;presentationStartTime=timelineConverter.calcPresentationTimeFromMediaTime(scaledTime,representation);presentationEndTime=presentationStartTime+scaledDuration;seg=getSegment(representation,scaledDuration,presentationStartTime,scaledTime,representation.adaptation.period.mpd.manifest.loadedTime,timelineConverter,presentationEndTime,isDynamic,index);if(!isSegmentAvailable(timelineConverter,representation,seg,isDynamic)){return null;}seg.replacementTime=tManifest?tManifest:time;url=replaceTokenForTemplate(url,'Number',seg.replacementNumber);url=replaceTokenForTemplate(url,'Time',seg.replacementTime);seg.media=url;seg.mediaRange=range;return seg;}\\n//# sourceMappingURL=SegmentsUtils.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/dash/utils/SegmentsUtils.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/dash/utils/TemplateSegmentsGetter.js\":\n/*!*********************************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/dash/utils/TemplateSegmentsGetter.js ***!\n \\*********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _FactoryMaker=__webpack_require__(/*! ../../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _Constants=__webpack_require__(/*! ../../streaming/constants/Constants */ \\\"../node_modules/dashjs/build/es5/src/streaming/constants/Constants.js\\\");var _Constants2=_interopRequireDefault(_Constants);var _SegmentsUtils=__webpack_require__(/*! ./SegmentsUtils */ \\\"../node_modules/dashjs/build/es5/src/dash/utils/SegmentsUtils.js\\\");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function TemplateSegmentsGetter(config,isDynamic){config=config||{};var timelineConverter=config.timelineConverter;var instance=void 0;function checkConfig(){if(!timelineConverter||!timelineConverter.hasOwnProperty('calcPeriodRelativeTimeFromMpdRelativeTime')){throw new Error(_Constants2.default.MISSING_CONFIG_ERROR);}}function getSegmentByIndex(representation,index){checkConfig();if(!representation){return null;}var template=representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentTemplate;index=Math.max(index,0);var seg=(0,_SegmentsUtils.getIndexBasedSegment)(timelineConverter,isDynamic,representation,index);if(seg){seg.replacementTime=Math.round((index-1)*representation.segmentDuration*representation.timescale,10);var url=template.media;url=(0,_SegmentsUtils.replaceTokenForTemplate)(url,'Number',seg.replacementNumber);url=(0,_SegmentsUtils.replaceTokenForTemplate)(url,'Time',seg.replacementTime);seg.media=url;}var duration=representation.segmentDuration;var availabilityWindow=representation.segmentAvailabilityRange;if(isNaN(duration)){representation.availableSegmentsNumber=1;}else{representation.availableSegmentsNumber=Math.ceil((availabilityWindow.end-availabilityWindow.start)/duration);}return seg;}function getSegmentByTime(representation,requestedTime){checkConfig();if(!representation){return null;}var duration=representation.segmentDuration;if(isNaN(duration)){return null;}var periodTime=timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation,requestedTime);var index=Math.floor(periodTime/duration);return getSegmentByIndex(representation,index);}instance={getSegmentByIndex:getSegmentByIndex,getSegmentByTime:getSegmentByTime};return instance;}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */TemplateSegmentsGetter.__dashjs_factory_name='TemplateSegmentsGetter';var factory=_FactoryMaker2.default.getClassFactory(TemplateSegmentsGetter);exports.default=factory;\\n//# sourceMappingURL=TemplateSegmentsGetter.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/dash/utils/TemplateSegmentsGetter.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/dash/utils/TimelineConverter.js\":\n/*!****************************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/dash/utils/TimelineConverter.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _EventBus=__webpack_require__(/*! ../../core/EventBus */ \\\"../node_modules/dashjs/build/es5/src/core/EventBus.js\\\");var _EventBus2=_interopRequireDefault(_EventBus);var _Events=__webpack_require__(/*! ../../core/events/Events */ \\\"../node_modules/dashjs/build/es5/src/core/events/Events.js\\\");var _Events2=_interopRequireDefault(_Events);var _FactoryMaker=__webpack_require__(/*! ../../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _DashConstants=__webpack_require__(/*! ../constants/DashConstants */ \\\"../node_modules/dashjs/build/es5/src/dash/constants/DashConstants.js\\\");var _DashConstants2=_interopRequireDefault(_DashConstants);var _DashManifestModel=__webpack_require__(/*! ../models/DashManifestModel */ \\\"../node_modules/dashjs/build/es5/src/dash/models/DashManifestModel.js\\\");var _DashManifestModel2=_interopRequireDefault(_DashManifestModel);var _Settings=__webpack_require__(/*! ../../core/Settings */ \\\"../node_modules/dashjs/build/es5/src/core/Settings.js\\\");var _Settings2=_interopRequireDefault(_Settings);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */function TimelineConverter(){var context=this.context;var eventBus=(0,_EventBus2.default)(context).getInstance();var settings=(0,_Settings2.default)(context).getInstance();var instance=void 0,dashManifestModel=void 0,clientServerTimeShift=void 0,isClientServerTimeSyncCompleted=void 0,expectedLiveEdge=void 0;function setup(){dashManifestModel=(0,_DashManifestModel2.default)(context).getInstance();reset();}function initialize(){resetInitialSettings();eventBus.on(_Events2.default.UPDATE_TIME_SYNC_OFFSET,_onUpdateTimeSyncOffset,this);}function getClientTimeOffset(){return clientServerTimeShift;}function setClientTimeOffset(value){clientServerTimeShift=value;}function getExpectedLiveEdge(){return expectedLiveEdge;}function setExpectedLiveEdge(value){expectedLiveEdge=value;}function calcAvailabilityTimeFromPresentationTime(presentationTime,mpd,isDynamic,calculateEnd){var availabilityTime=NaN;if(calculateEnd){//@timeShiftBufferDepth specifies the duration of the time shifting buffer that is guaranteed\\n// to be available for a Media Presentation with type 'dynamic'.\\n// When not present, the value is infinite.\\nif(isDynamic&&mpd.timeShiftBufferDepth!=Number.POSITIVE_INFINITY){availabilityTime=new Date(mpd.availabilityStartTime.getTime()+(presentationTime+mpd.timeShiftBufferDepth)*1000);}else{availabilityTime=mpd.availabilityEndTime;}}else{if(isDynamic){availabilityTime=new Date(mpd.availabilityStartTime.getTime()+(presentationTime-clientServerTimeShift)*1000);}else{// in static mpd, all segments are available at the same time\\navailabilityTime=mpd.availabilityStartTime;}}return availabilityTime;}function calcAvailabilityStartTimeFromPresentationTime(presentationTime,mpd,isDynamic){return calcAvailabilityTimeFromPresentationTime.call(this,presentationTime,mpd,isDynamic);}function calcAvailabilityEndTimeFromPresentationTime(presentationTime,mpd,isDynamic){return calcAvailabilityTimeFromPresentationTime.call(this,presentationTime,mpd,isDynamic,true);}function calcPresentationTimeFromWallTime(wallTime,period){return(wallTime.getTime()-period.mpd.availabilityStartTime.getTime()+clientServerTimeShift*1000)/1000;}function calcPresentationTimeFromMediaTime(mediaTime,representation){var periodStart=representation.adaptation.period.start;var presentationOffset=representation.presentationTimeOffset;return mediaTime+(periodStart-presentationOffset);}function calcMediaTimeFromPresentationTime(presentationTime,representation){var periodStart=representation.adaptation.period.start;var presentationOffset=representation.presentationTimeOffset;return presentationTime-periodStart+presentationOffset;}function calcWallTimeForSegment(segment,isDynamic){var suggestedPresentationDelay=void 0,displayStartTime=void 0,wallTime=void 0;if(isDynamic){suggestedPresentationDelay=segment.representation.adaptation.period.mpd.suggestedPresentationDelay;displayStartTime=segment.presentationStartTime+suggestedPresentationDelay;wallTime=new Date(segment.availabilityStartTime.getTime()+displayStartTime*1000);}return wallTime;}function calcSegmentAvailabilityRange(voRepresentation,isDynamic){// Static Range Finder\\nvar voPeriod=voRepresentation.adaptation.period;var range={start:voPeriod.start,end:voPeriod.start+voPeriod.duration};if(!isDynamic)return range;if(!isClientServerTimeSyncCompleted&&voRepresentation.segmentAvailabilityRange){return voRepresentation.segmentAvailabilityRange;}// Dynamic Range Finder\\nvar d=voRepresentation.segmentDuration||(voRepresentation.segments&&voRepresentation.segments.length?voRepresentation.segments[voRepresentation.segments.length-1].duration:0);// Specific use case of SegmentTimeline without timeShiftBufferDepth\\nif(voRepresentation.segmentInfoType===_DashConstants2.default.SEGMENT_TIMELINE&&settings.get().streaming.calcSegmentAvailabilityRangeFromTimeline){return calcSegmentAvailabilityRangeFromTimeline(voRepresentation);}var now=calcPresentationTimeFromWallTime(new Date(),voPeriod);var periodEnd=voPeriod.start+voPeriod.duration;range.start=Math.max(now-voPeriod.mpd.timeShiftBufferDepth,voPeriod.start);var endOffset=voRepresentation.availabilityTimeOffset!==undefined&&voRepresentation.availabilityTimeOffset=periodEnd&&now-endOffset=lastSegmentTime-frag.d*0.5/fTimescale){// same logic, if deviation is\\n// 50% of segment duration, segment is found if scaledTime is greater than or equal to (startTime of previous segment - half of the previous segment duration)\\nfound=true;}return false;});return segment;}function getSegmentByTime(representation,requestedTime){checkConfig();if(!representation){return null;}if(requestedTime===undefined){requestedTime=null;}var segment=null;var requiredMediaTime=timelineConverter.calcMediaTimeFromPresentationTime(requestedTime,representation);iterateSegments(representation,function(time,scaledTime,base,list,frag,fTimescale,availabilityIdx,i){// In some cases when requiredMediaTime = actual end time of the last segment\\n// it is possible that this time a bit exceeds the declared end time of the last segment.\\n// in this case we still need to include the last segment in the segment list.\\nif(requiredMediaTime-1){//do some business to transform it into a Dash Manifest\\nif(mssHandler){parser=mssHandler.createMssParser();mssHandler.registerEvents();}return parser;}else if(data.indexOf('MPD')>-1||data.indexOf('Patch')>-1){return(0,_DashParser2.default)(context).create({debug:debug});}else{return parser;}}function load(url){var request=new _TextRequest2.default(url,_HTTPRequest.HTTPRequest.MPD_TYPE);urlLoader.load({request:request,success:function success(data,textStatus,responseURL){// Manage situations in which success is called after calling reset\\nif(!xlinkController)return;var actualUrl=void 0,baseUri=void 0,manifest=void 0;// Handle redirects for the MPD - as per RFC3986 Section 5.1.3\\n// also handily resolves relative MPD URLs to absolute\\nif(responseURL&&responseURL!==url){baseUri=urlUtils.parseBaseUrl(responseURL);actualUrl=responseURL;}else{// usually this case will be caught and resolved by\\n// responseURL above but it is not available for IE11 and Edge/12 and Edge/13\\n// baseUri must be absolute for BaseURL resolution later\\nif(urlUtils.isRelative(url)){url=urlUtils.resolve(url,window.location.href);}baseUri=urlUtils.parseBaseUrl(url);}// A response of no content implies in-memory is properly up to date\\nif(textStatus=='No Content'){eventBus.trigger(_Events2.default.INTERNAL_MANIFEST_LOADED,{manifest:null});return;}// Create parser according to manifest type\\nif(parser===null){parser=createParser(data);}if(parser===null){eventBus.trigger(_Events2.default.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new _DashJSError2.default(_Errors2.default.MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE,_Errors2.default.MANIFEST_LOADER_PARSING_FAILURE_ERROR_MESSAGE+(''+url))});return;}// init xlinkcontroller with matchers and iron object from created parser\\nxlinkController.setMatchers(parser.getMatchers());xlinkController.setIron(parser.getIron());try{manifest=parser.parse(data);}catch(e){eventBus.trigger(_Events2.default.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new _DashJSError2.default(_Errors2.default.MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE,_Errors2.default.MANIFEST_LOADER_PARSING_FAILURE_ERROR_MESSAGE+(''+url))});return;}if(manifest){manifest.url=actualUrl||url;// URL from which the MPD was originally retrieved (MPD updates will not change this value)\\nif(!manifest.originalUrl){manifest.originalUrl=manifest.url;}// In the following, we only use the first Location entry even if many are available\\n// Compare with ManifestUpdater/DashManifestModel\\nif(manifest.hasOwnProperty(_Constants2.default.LOCATION)){baseUri=urlUtils.parseBaseUrl(manifest.Location_asArray[0]);logger.debug('BaseURI set by Location to: '+baseUri);}manifest.baseUri=baseUri;manifest.loadedTime=new Date();xlinkController.resolveManifestOnLoad(manifest);eventBus.trigger(_Events2.default.ORIGINAL_MANIFEST_LOADED,{originalManifest:data});}else{eventBus.trigger(_Events2.default.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new _DashJSError2.default(_Errors2.default.MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE,_Errors2.default.MANIFEST_LOADER_PARSING_FAILURE_ERROR_MESSAGE+(''+url))});}},error:function error(request,statusText,errorText){eventBus.trigger(_Events2.default.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new _DashJSError2.default(_Errors2.default.MANIFEST_LOADER_LOADING_FAILURE_ERROR_CODE,_Errors2.default.MANIFEST_LOADER_LOADING_FAILURE_ERROR_MESSAGE+(url+', '+errorText))});}});}function reset(){eventBus.off(_Events2.default.XLINK_READY,onXlinkReady,instance);if(mssHandler){mssHandler.reset();}if(xlinkController){xlinkController.reset();xlinkController=null;}if(urlLoader){urlLoader.abort();urlLoader=null;}}instance={load:load,reset:reset};setup();return instance;}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */ManifestLoader.__dashjs_factory_name='ManifestLoader';var factory=_FactoryMaker2.default.getClassFactory(ManifestLoader);exports.default=factory;\\n//# sourceMappingURL=ManifestLoader.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/streaming/ManifestLoader.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/streaming/ManifestUpdater.js\":\n/*!*************************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/streaming/ManifestUpdater.js ***!\n \\*************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _EventBus=__webpack_require__(/*! ../core/EventBus */ \\\"../node_modules/dashjs/build/es5/src/core/EventBus.js\\\");var _EventBus2=_interopRequireDefault(_EventBus);var _Events=__webpack_require__(/*! ../core/events/Events */ \\\"../node_modules/dashjs/build/es5/src/core/events/Events.js\\\");var _Events2=_interopRequireDefault(_Events);var _FactoryMaker=__webpack_require__(/*! ../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _Debug=__webpack_require__(/*! ../core/Debug */ \\\"../node_modules/dashjs/build/es5/src/core/Debug.js\\\");var _Debug2=_interopRequireDefault(_Debug);var _Errors=__webpack_require__(/*! ../core/errors/Errors */ \\\"../node_modules/dashjs/build/es5/src/core/errors/Errors.js\\\");var _Errors2=_interopRequireDefault(_Errors);var _DashConstants=__webpack_require__(/*! ../dash/constants/DashConstants */ \\\"../node_modules/dashjs/build/es5/src/dash/constants/DashConstants.js\\\");var _DashConstants2=_interopRequireDefault(_DashConstants);var _URLUtils=__webpack_require__(/*! ./utils/URLUtils */ \\\"../node_modules/dashjs/build/es5/src/streaming/utils/URLUtils.js\\\");var _URLUtils2=_interopRequireDefault(_URLUtils);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function ManifestUpdater(){var context=this.context;var eventBus=(0,_EventBus2.default)(context).getInstance();var urlUtils=(0,_URLUtils2.default)(context).getInstance();var instance=void 0,logger=void 0,refreshDelay=void 0,refreshTimer=void 0,isPaused=void 0,isStopped=void 0,isUpdating=void 0,manifestLoader=void 0,manifestModel=void 0,adapter=void 0,errHandler=void 0,settings=void 0;function setup(){logger=(0,_Debug2.default)(context).getInstance().getLogger(instance);}function setConfig(config){if(!config)return;if(config.manifestModel){manifestModel=config.manifestModel;}if(config.adapter){adapter=config.adapter;}if(config.manifestLoader){manifestLoader=config.manifestLoader;}if(config.errHandler){errHandler=config.errHandler;}if(config.settings){settings=config.settings;}}function initialize(){resetInitialSettings();eventBus.on(_Events2.default.STREAMS_COMPOSED,onStreamsComposed,this);eventBus.on(_Events2.default.PLAYBACK_STARTED,onPlaybackStarted,this);eventBus.on(_Events2.default.PLAYBACK_PAUSED,onPlaybackPaused,this);eventBus.on(_Events2.default.INTERNAL_MANIFEST_LOADED,onManifestLoaded,this);}function setManifest(manifest){update(manifest);}function resetInitialSettings(){refreshDelay=NaN;isUpdating=false;isPaused=true;isStopped=false;stopManifestRefreshTimer();}function reset(){eventBus.off(_Events2.default.PLAYBACK_STARTED,onPlaybackStarted,this);eventBus.off(_Events2.default.PLAYBACK_PAUSED,onPlaybackPaused,this);eventBus.off(_Events2.default.STREAMS_COMPOSED,onStreamsComposed,this);eventBus.off(_Events2.default.INTERNAL_MANIFEST_LOADED,onManifestLoaded,this);resetInitialSettings();}function stopManifestRefreshTimer(){if(refreshTimer!==null){clearTimeout(refreshTimer);refreshTimer=null;}}function startManifestRefreshTimer(delay){stopManifestRefreshTimer();if(isStopped){return;}if(isNaN(delay)&&!isNaN(refreshDelay)){delay=refreshDelay*1000;}if(!isNaN(delay)){logger.debug('Refresh manifest in '+delay+' milliseconds.');refreshTimer=setTimeout(onRefreshTimer,delay);}}function refreshManifest(){var ignorePatch=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;isUpdating=true;var manifest=manifestModel.getValue();// default to the original url in the manifest\\nvar url=manifest.url;// Check for PatchLocation and Location alternatives\\nvar patchLocation=adapter.getPatchLocation(manifest);var location=adapter.getLocation(manifest);if(patchLocation&&!ignorePatch){url=patchLocation;}else if(location){url=location;}// if one of the alternatives was relative, convert to absolute\\nif(urlUtils.isRelative(url)){url=urlUtils.resolve(url,manifest.url);}manifestLoader.load(url);}function update(manifest){if(!manifest){// successful update with no content implies existing manifest remains valid\\nmanifest=manifestModel.getValue();// override load time to avoid invalid latency tracking and ensure update cadence\\nmanifest.loadedTime=new Date();}else if(adapter.getIsPatch(manifest)){// with patches the in-memory manifest is our base\\nvar patch=manifest;manifest=manifestModel.getValue();// check for patch validity\\nvar isPatchValid=adapter.isPatchValid(manifest,patch);var patchSuccessful=isPatchValid;if(isPatchValid){// grab publish time before update\\nvar publishTime=adapter.getPublishTime(manifest);// apply validated patch to manifest\\npatchSuccessful=adapter.applyPatchToManifest(manifest,patch);// get the updated publish time\\nvar updatedPublishTime=adapter.getPublishTime(manifest);// ensure the patch properly updated the in-memory publish time\\npatchSuccessful=publishTime.getTime()!=updatedPublishTime.getTime();}// if the patch failed to apply, force a full manifest refresh\\nif(!patchSuccessful){logger.debug('Patch provided is invalid, performing full manifest refresh');refreshManifest(true);return;}// override load time to avoid invalid latency tracking and ensure update cadence\\nmanifest.loadedTime=new Date();}// See DASH-IF IOP v4.3 section 4.6.4 \\\"Transition Phase between Live and On-Demand\\\"\\n// Stop manifest update, ignore static manifest and signal end of dynamic stream to detect end of stream\\nif(manifestModel.getValue()&&manifestModel.getValue().type===_DashConstants2.default.DYNAMIC&&manifest.type===_DashConstants2.default.STATIC){eventBus.trigger(_Events2.default.DYNAMIC_TO_STATIC);isUpdating=false;isStopped=true;return;}manifestModel.setValue(manifest);var date=new Date();var latencyOfLastUpdate=(date.getTime()-manifest.loadedTime.getTime())/1000;refreshDelay=adapter.getManifestUpdatePeriod(manifest,latencyOfLastUpdate);// setTimeout uses a 32 bit number to store the delay. Any number greater than it\\n// will cause event associated with setTimeout to trigger immediately\\nif(refreshDelay*1000>0x7FFFFFFF){refreshDelay=0x7FFFFFFF/1000;}eventBus.trigger(_Events2.default.MANIFEST_UPDATED,{manifest:manifest});logger.info('Manifest has been refreshed at '+date+'['+date.getTime()/1000+'] ');if(!isPaused){startManifestRefreshTimer();}}function onRefreshTimer(){if(isPaused){return;}if(isUpdating){startManifestRefreshTimer(settings.get().streaming.manifestUpdateRetryInterval);return;}refreshManifest();}function onManifestLoaded(e){if(!e.error){update(e.manifest);}else if(e.error.code===_Errors2.default.MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE){errHandler.error(e.error);}}function onPlaybackStarted()/*e*/{isPaused=false;startManifestRefreshTimer();}function onPlaybackPaused()/*e*/{isPaused=!settings.get().streaming.scheduleWhilePaused;if(isPaused){stopManifestRefreshTimer();}}function onStreamsComposed()/*e*/{// When streams are ready we can consider manifest update completed. Resolve the update promise.\\nisUpdating=false;}instance={initialize:initialize,setManifest:setManifest,refreshManifest:refreshManifest,setConfig:setConfig,reset:reset};setup();return instance;}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */ManifestUpdater.__dashjs_factory_name='ManifestUpdater';exports.default=_FactoryMaker2.default.getClassFactory(ManifestUpdater);\\n//# sourceMappingURL=ManifestUpdater.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/streaming/ManifestUpdater.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/streaming/MediaPlayer.js\":\n/*!*********************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/streaming/MediaPlayer.js ***!\n \\*********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _cea608Parser=__webpack_require__(/*! ../../externals/cea608-parser */ \\\"../node_modules/dashjs/build/es5/externals/cea608-parser.js\\\");var _cea608Parser2=_interopRequireDefault(_cea608Parser);var _Constants=__webpack_require__(/*! ./constants/Constants */ \\\"../node_modules/dashjs/build/es5/src/streaming/constants/Constants.js\\\");var _Constants2=_interopRequireDefault(_Constants);var _DashConstants=__webpack_require__(/*! ../dash/constants/DashConstants */ \\\"../node_modules/dashjs/build/es5/src/dash/constants/DashConstants.js\\\");var _DashConstants2=_interopRequireDefault(_DashConstants);var _MetricsConstants=__webpack_require__(/*! ./constants/MetricsConstants */ \\\"../node_modules/dashjs/build/es5/src/streaming/constants/MetricsConstants.js\\\");var _MetricsConstants2=_interopRequireDefault(_MetricsConstants);var _PlaybackController=__webpack_require__(/*! ./controllers/PlaybackController */ \\\"../node_modules/dashjs/build/es5/src/streaming/controllers/PlaybackController.js\\\");var _PlaybackController2=_interopRequireDefault(_PlaybackController);var _StreamController=__webpack_require__(/*! ./controllers/StreamController */ \\\"../node_modules/dashjs/build/es5/src/streaming/controllers/StreamController.js\\\");var _StreamController2=_interopRequireDefault(_StreamController);var _GapController=__webpack_require__(/*! ./controllers/GapController */ \\\"../node_modules/dashjs/build/es5/src/streaming/controllers/GapController.js\\\");var _GapController2=_interopRequireDefault(_GapController);var _MediaController=__webpack_require__(/*! ./controllers/MediaController */ \\\"../node_modules/dashjs/build/es5/src/streaming/controllers/MediaController.js\\\");var _MediaController2=_interopRequireDefault(_MediaController);var _BaseURLController=__webpack_require__(/*! ./controllers/BaseURLController */ \\\"../node_modules/dashjs/build/es5/src/streaming/controllers/BaseURLController.js\\\");var _BaseURLController2=_interopRequireDefault(_BaseURLController);var _ManifestLoader=__webpack_require__(/*! ./ManifestLoader */ \\\"../node_modules/dashjs/build/es5/src/streaming/ManifestLoader.js\\\");var _ManifestLoader2=_interopRequireDefault(_ManifestLoader);var _ErrorHandler=__webpack_require__(/*! ./utils/ErrorHandler */ \\\"../node_modules/dashjs/build/es5/src/streaming/utils/ErrorHandler.js\\\");var _ErrorHandler2=_interopRequireDefault(_ErrorHandler);var _Capabilities=__webpack_require__(/*! ./utils/Capabilities */ \\\"../node_modules/dashjs/build/es5/src/streaming/utils/Capabilities.js\\\");var _Capabilities2=_interopRequireDefault(_Capabilities);var _CapabilitiesFilter=__webpack_require__(/*! ./utils/CapabilitiesFilter */ \\\"../node_modules/dashjs/build/es5/src/streaming/utils/CapabilitiesFilter.js\\\");var _CapabilitiesFilter2=_interopRequireDefault(_CapabilitiesFilter);var _TextTracks=__webpack_require__(/*! ./text/TextTracks */ \\\"../node_modules/dashjs/build/es5/src/streaming/text/TextTracks.js\\\");var _TextTracks2=_interopRequireDefault(_TextTracks);var _RequestModifier=__webpack_require__(/*! ./utils/RequestModifier */ \\\"../node_modules/dashjs/build/es5/src/streaming/utils/RequestModifier.js\\\");var _RequestModifier2=_interopRequireDefault(_RequestModifier);var _TextController=__webpack_require__(/*! ./text/TextController */ \\\"../node_modules/dashjs/build/es5/src/streaming/text/TextController.js\\\");var _TextController2=_interopRequireDefault(_TextController);var _URIFragmentModel=__webpack_require__(/*! ./models/URIFragmentModel */ \\\"../node_modules/dashjs/build/es5/src/streaming/models/URIFragmentModel.js\\\");var _URIFragmentModel2=_interopRequireDefault(_URIFragmentModel);var _ManifestModel=__webpack_require__(/*! ./models/ManifestModel */ \\\"../node_modules/dashjs/build/es5/src/streaming/models/ManifestModel.js\\\");var _ManifestModel2=_interopRequireDefault(_ManifestModel);var _MediaPlayerModel=__webpack_require__(/*! ./models/MediaPlayerModel */ \\\"../node_modules/dashjs/build/es5/src/streaming/models/MediaPlayerModel.js\\\");var _MediaPlayerModel2=_interopRequireDefault(_MediaPlayerModel);var _AbrController=__webpack_require__(/*! ./controllers/AbrController */ \\\"../node_modules/dashjs/build/es5/src/streaming/controllers/AbrController.js\\\");var _AbrController2=_interopRequireDefault(_AbrController);var _SchemeLoaderFactory=__webpack_require__(/*! ./net/SchemeLoaderFactory */ \\\"../node_modules/dashjs/build/es5/src/streaming/net/SchemeLoaderFactory.js\\\");var _SchemeLoaderFactory2=_interopRequireDefault(_SchemeLoaderFactory);var _VideoModel=__webpack_require__(/*! ./models/VideoModel */ \\\"../node_modules/dashjs/build/es5/src/streaming/models/VideoModel.js\\\");var _VideoModel2=_interopRequireDefault(_VideoModel);var _CmcdModel=__webpack_require__(/*! ./models/CmcdModel */ \\\"../node_modules/dashjs/build/es5/src/streaming/models/CmcdModel.js\\\");var _CmcdModel2=_interopRequireDefault(_CmcdModel);var _DOMStorage=__webpack_require__(/*! ./utils/DOMStorage */ \\\"../node_modules/dashjs/build/es5/src/streaming/utils/DOMStorage.js\\\");var _DOMStorage2=_interopRequireDefault(_DOMStorage);var _Debug=__webpack_require__(/*! ./../core/Debug */ \\\"../node_modules/dashjs/build/es5/src/core/Debug.js\\\");var _Debug2=_interopRequireDefault(_Debug);var _Errors=__webpack_require__(/*! ./../core/errors/Errors */ \\\"../node_modules/dashjs/build/es5/src/core/errors/Errors.js\\\");var _Errors2=_interopRequireDefault(_Errors);var _EventBus=__webpack_require__(/*! ./../core/EventBus */ \\\"../node_modules/dashjs/build/es5/src/core/EventBus.js\\\");var _EventBus2=_interopRequireDefault(_EventBus);var _Events=__webpack_require__(/*! ./../core/events/Events */ \\\"../node_modules/dashjs/build/es5/src/core/events/Events.js\\\");var _Events2=_interopRequireDefault(_Events);var _MediaPlayerEvents=__webpack_require__(/*! ./MediaPlayerEvents */ \\\"../node_modules/dashjs/build/es5/src/streaming/MediaPlayerEvents.js\\\");var _MediaPlayerEvents2=_interopRequireDefault(_MediaPlayerEvents);var _FactoryMaker=__webpack_require__(/*! ../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _Settings=__webpack_require__(/*! ../core/Settings */ \\\"../node_modules/dashjs/build/es5/src/core/Settings.js\\\");var _Settings2=_interopRequireDefault(_Settings);var _Version=__webpack_require__(/*! ./../core/Version */ \\\"../node_modules/dashjs/build/es5/src/core/Version.js\\\");var _SegmentBaseController=__webpack_require__(/*! ../dash/controllers/SegmentBaseController */ \\\"../node_modules/dashjs/build/es5/src/dash/controllers/SegmentBaseController.js\\\");var _SegmentBaseController2=_interopRequireDefault(_SegmentBaseController);var _DashAdapter=__webpack_require__(/*! ../dash/DashAdapter */ \\\"../node_modules/dashjs/build/es5/src/dash/DashAdapter.js\\\");var _DashAdapter2=_interopRequireDefault(_DashAdapter);var _DashMetrics=__webpack_require__(/*! ../dash/DashMetrics */ \\\"../node_modules/dashjs/build/es5/src/dash/DashMetrics.js\\\");var _DashMetrics2=_interopRequireDefault(_DashMetrics);var _TimelineConverter=__webpack_require__(/*! ../dash/utils/TimelineConverter */ \\\"../node_modules/dashjs/build/es5/src/dash/utils/TimelineConverter.js\\\");var _TimelineConverter2=_interopRequireDefault(_TimelineConverter);var _HTTPRequest=__webpack_require__(/*! ./vo/metrics/HTTPRequest */ \\\"../node_modules/dashjs/build/es5/src/streaming/vo/metrics/HTTPRequest.js\\\");var _base=__webpack_require__(/*! ../../externals/base64 */ \\\"../node_modules/dashjs/build/es5/externals/base64.js\\\");var _base2=_interopRequireDefault(_base);var _codemIsoboxer=__webpack_require__(/*! codem-isoboxer */ \\\"../node_modules/codem-isoboxer/dist/iso_boxer.js\\\");var _codemIsoboxer2=_interopRequireDefault(_codemIsoboxer);var _DashJSError=__webpack_require__(/*! ./vo/DashJSError */ \\\"../node_modules/dashjs/build/es5/src/streaming/vo/DashJSError.js\\\");var _DashJSError2=_interopRequireDefault(_DashJSError);var _SupervisorTools=__webpack_require__(/*! ./utils/SupervisorTools */ \\\"../node_modules/dashjs/build/es5/src/streaming/utils/SupervisorTools.js\\\");var _ManifestUpdater=__webpack_require__(/*! ./ManifestUpdater */ \\\"../node_modules/dashjs/build/es5/src/streaming/ManifestUpdater.js\\\");var _ManifestUpdater2=_interopRequireDefault(_ManifestUpdater);var _URLUtils=__webpack_require__(/*! ../streaming/utils/URLUtils */ \\\"../node_modules/dashjs/build/es5/src/streaming/utils/URLUtils.js\\\");var _URLUtils2=_interopRequireDefault(_URLUtils);var _BoxParser=__webpack_require__(/*! ./utils/BoxParser */ \\\"../node_modules/dashjs/build/es5/src/streaming/utils/BoxParser.js\\\");var _BoxParser2=_interopRequireDefault(_BoxParser);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}/* jscs:disable *//**\\n * The media types\\n * @typedef {(\\\"video\\\" | \\\"audio\\\" | \\\"text\\\" | \\\"fragmentedText\\\" | \\\"embeddedText\\\" | \\\"image\\\")} MediaType\\n *//* jscs:enable *//**\\n * @module MediaPlayer\\n * @description The MediaPlayer is the primary dash.js Module and a Facade to build your player around.\\n * It will allow you access to all the important dash.js properties/methods via the public API and all the\\n * events to build a robust DASH media player.\\n *///Dash\\n/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */function MediaPlayer(){/**\\n * @constant {string} STREAMING_NOT_INITIALIZED_ERROR error string thrown when a function is called before the dash.js has been fully initialized\\n * @inner\\n */var STREAMING_NOT_INITIALIZED_ERROR='You must first call initialize() and set a source before calling this method';/**\\n * @constant {string} PLAYBACK_NOT_INITIALIZED_ERROR error string thrown when a function is called before the dash.js has been fully initialized\\n * @inner\\n */var PLAYBACK_NOT_INITIALIZED_ERROR='You must first call initialize() and set a valid source and view before calling this method';/**\\n * @constant {string} ELEMENT_NOT_ATTACHED_ERROR error string thrown when a function is called before the dash.js has received a reference of an HTML5 video element\\n * @inner\\n */var ELEMENT_NOT_ATTACHED_ERROR='You must first call attachView() to set the video element before calling this method';/**\\n * @constant {string} SOURCE_NOT_ATTACHED_ERROR error string thrown when a function is called before the dash.js has received a valid source stream.\\n * @inner\\n */var SOURCE_NOT_ATTACHED_ERROR='You must first call attachSource() with a valid source before calling this method';/**\\n * @constant {string} MEDIA_PLAYER_NOT_INITIALIZED_ERROR error string thrown when a function is called before the dash.js has been fully initialized.\\n * @inner\\n */var MEDIA_PLAYER_NOT_INITIALIZED_ERROR='MediaPlayer not initialized!';var context=this.context;var eventBus=(0,_EventBus2.default)(context).getInstance();var settings=(0,_Settings2.default)(context).getInstance();var debug=(0,_Debug2.default)(context).getInstance({settings:settings});var instance=void 0,logger=void 0,source=void 0,protectionData=void 0,mediaPlayerInitialized=void 0,streamingInitialized=void 0,playbackInitialized=void 0,autoPlay=void 0,abrController=void 0,schemeLoaderFactory=void 0,timelineConverter=void 0,mediaController=void 0,protectionController=void 0,metricsReportingController=void 0,mssHandler=void 0,offlineController=void 0,adapter=void 0,mediaPlayerModel=void 0,errHandler=void 0,baseURLController=void 0,capabilities=void 0,capabilitiesFilter=void 0,streamController=void 0,gapController=void 0,playbackController=void 0,dashMetrics=void 0,manifestModel=void 0,cmcdModel=void 0,videoModel=void 0,textController=void 0,uriFragmentModel=void 0,domStorage=void 0,segmentBaseController=void 0,licenseRequestFilters=void 0,licenseResponseFilters=void 0,customCapabilitiesFilters=void 0;/*\\n ---------------------------------------------------------------------------\\n\\n INIT FUNCTIONS\\n\\n ---------------------------------------------------------------------------\\n */function setup(){logger=debug.getLogger(instance);mediaPlayerInitialized=false;playbackInitialized=false;streamingInitialized=false;autoPlay=true;protectionController=null;offlineController=null;protectionData=null;adapter=null;segmentBaseController=null;_Events2.default.extend(_MediaPlayerEvents2.default);mediaPlayerModel=(0,_MediaPlayerModel2.default)(context).getInstance();videoModel=(0,_VideoModel2.default)(context).getInstance();uriFragmentModel=(0,_URIFragmentModel2.default)(context).getInstance();licenseRequestFilters=[];licenseResponseFilters=[];customCapabilitiesFilters=[];}/**\\n * Configure media player with customs controllers. Helpful for tests\\n *\\n * @param {object=} config controllers configuration\\n * @memberof module:MediaPlayer\\n * @instance\\n */function setConfig(config){if(!config){return;}if(config.capabilities){capabilities=config.capabilities;}if(config.capabilitiesFilter){capabilitiesFilter=config.capabilitiesFilter;}if(config.streamController){streamController=config.streamController;}if(config.gapController){gapController=config.gapController;}if(config.playbackController){playbackController=config.playbackController;}if(config.mediaPlayerModel){mediaPlayerModel=config.mediaPlayerModel;}if(config.abrController){abrController=config.abrController;}if(config.schemeLoaderFactory){schemeLoaderFactory=config.schemeLoaderFactory;}if(config.mediaController){mediaController=config.mediaController;}if(config.settings){settings=config.settings;}}/**\\n * Upon creating the MediaPlayer you must call initialize before you call anything else.\\n * There is one exception to this rule. It is crucial to call {@link module:MediaPlayer#extend extend()}\\n * with all your extensions prior to calling initialize.\\n *\\n * ALL arguments are optional and there are individual methods to set each argument later on.\\n * The args in this method are just for convenience and should only be used for a simple player setup.\\n *\\n * @param {HTML5MediaElement=} view - Optional arg to set the video element. {@link module:MediaPlayer#attachView attachView()}\\n * @param {string=} source - Optional arg to set the media source. {@link module:MediaPlayer#attachSource attachSource()}\\n * @param {boolean=} AutoPlay - Optional arg to set auto play. {@link module:MediaPlayer#setAutoPlay setAutoPlay()}\\n * @see {@link module:MediaPlayer#attachView attachView()}\\n * @see {@link module:MediaPlayer#attachSource attachSource()}\\n * @see {@link module:MediaPlayer#setAutoPlay setAutoPlay()}\\n * @memberof module:MediaPlayer\\n * @instance\\n */function initialize(view,source,AutoPlay){if(!capabilities){capabilities=(0,_Capabilities2.default)(context).getInstance();}errHandler=(0,_ErrorHandler2.default)(context).getInstance();if(!capabilities.supportsMediaSource()){errHandler.error(new _DashJSError2.default(_Errors2.default.CAPABILITY_MEDIASOURCE_ERROR_CODE,_Errors2.default.CAPABILITY_MEDIASOURCE_ERROR_MESSAGE));return;}if(mediaPlayerInitialized)return;mediaPlayerInitialized=true;// init some controllers and models\\ntimelineConverter=(0,_TimelineConverter2.default)(context).getInstance();if(!abrController){abrController=(0,_AbrController2.default)(context).getInstance();abrController.setConfig({settings:settings});}if(!schemeLoaderFactory){schemeLoaderFactory=(0,_SchemeLoaderFactory2.default)(context).getInstance();}if(!playbackController){playbackController=(0,_PlaybackController2.default)(context).getInstance();}if(!mediaController){mediaController=(0,_MediaController2.default)(context).getInstance();}if(!streamController){streamController=(0,_StreamController2.default)(context).getInstance();}if(!gapController){gapController=(0,_GapController2.default)(context).getInstance();}if(!capabilitiesFilter){capabilitiesFilter=(0,_CapabilitiesFilter2.default)(context).getInstance();}adapter=(0,_DashAdapter2.default)(context).getInstance();manifestModel=(0,_ManifestModel2.default)(context).getInstance();cmcdModel=(0,_CmcdModel2.default)(context).getInstance();dashMetrics=(0,_DashMetrics2.default)(context).getInstance({settings:settings});textController=(0,_TextController2.default)(context).getInstance();domStorage=(0,_DOMStorage2.default)(context).getInstance({settings:settings});adapter.setConfig({constants:_Constants2.default,cea608parser:_cea608Parser2.default,errHandler:errHandler,BASE64:_base2.default});if(!baseURLController){baseURLController=(0,_BaseURLController2.default)(context).create();}baseURLController.setConfig({adapter:adapter});segmentBaseController=(0,_SegmentBaseController2.default)(context).getInstance({dashMetrics:dashMetrics,mediaPlayerModel:mediaPlayerModel,errHandler:errHandler,baseURLController:baseURLController,events:_Events2.default,eventBus:eventBus,debug:debug,boxParser:(0,_BoxParser2.default)(context).getInstance(),requestModifier:(0,_RequestModifier2.default)(context).getInstance(),errors:_Errors2.default});segmentBaseController.initialize();// configure controllers\\nmediaController.setConfig({domStorage:domStorage,settings:settings});restoreDefaultUTCTimingSources();setAutoPlay(AutoPlay!==undefined?AutoPlay:true);// Detect and initialize offline module to support offline contents playback\\ndetectOffline();if(view){attachView(view);}if(source){attachSource(source);}logger.info('[dash.js '+getVersion()+'] '+'MediaPlayer has been initialized');}/**\\n * Sets the MPD source and the video element to null. You can also reset the MediaPlayer by\\n * calling attachSource with a new source file.\\n *\\n * This call does not destroy the MediaPlayer. To destroy the MediaPlayer and free all of its\\n * memory, call destroy().\\n *\\n * @memberof module:MediaPlayer\\n * @instance\\n */function reset(){attachSource(null);attachView(null);protectionData=null;if(protectionController){protectionController.reset();protectionController=null;}if(metricsReportingController){metricsReportingController.reset();metricsReportingController=null;}segmentBaseController.reset();settings.reset();if(offlineController){offlineController.reset();offlineController=null;}}/**\\n * Completely destroys the media player and frees all memory.\\n *\\n * @memberof module:MediaPlayer\\n * @instance\\n */function destroy(){reset();licenseRequestFilters=[];licenseResponseFilters=[];customCapabilitiesFilters=[];_FactoryMaker2.default.deleteSingletonInstances(context);}/**\\n * The ready state of the MediaPlayer based on both the video element and MPD source being defined.\\n *\\n * @returns {boolean} The current ready state of the MediaPlayer\\n * @see {@link module:MediaPlayer#attachView attachView()}\\n * @see {@link module:MediaPlayer#attachSource attachSource()}\\n * @memberof module:MediaPlayer\\n * @instance\\n */function isReady(){return!!source&&!!videoModel.getElement();}/**\\n * Use the on method to listen for public events found in MediaPlayer.events. {@link MediaPlayerEvents}\\n *\\n * @param {string} type - {@link MediaPlayerEvents}\\n * @param {Function} listener - callback method when the event fires.\\n * @param {Object} scope - context of the listener so it can be removed properly.\\n * @param {Object} options - object to define various options such as priority and mode\\n * @memberof module:MediaPlayer\\n * @instance\\n */function on(type,listener,scope,options){eventBus.on(type,listener,scope,options);}/**\\n * Use the off method to remove listeners for public events found in MediaPlayer.events. {@link MediaPlayerEvents}\\n *\\n * @param {string} type - {@link MediaPlayerEvents}\\n * @param {Function} listener - callback method when the event fires.\\n * @param {Object} scope - context of the listener so it can be removed properly.\\n * @memberof module:MediaPlayer\\n * @instance\\n */function off(type,listener,scope){eventBus.off(type,listener,scope);}/**\\n * Current version of Dash.js\\n * @returns {string} the current dash.js version string.\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getVersion(){return(0,_Version.getVersionString)();}/**\\n * Use this method to access the dash.js logging class.\\n *\\n * @returns {Debug}\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getDebug(){return debug;}/*\\n ---------------------------------------------------------------------------\\n\\n PLAYBACK FUNCTIONS\\n\\n ---------------------------------------------------------------------------\\n *//**\\n * Causes the player to begin streaming the media as set by the {@link module:MediaPlayer#attachSource attachSource()}\\n * method in preparation for playing. It specifically does not require a view to be attached with {@link module:MediaPlayer#attachSource attachView()} to begin preloading.\\n * When a view is attached after preloading, the buffered data is transferred to the attached mediaSource buffers.\\n *\\n * @see {@link module:MediaPlayer#attachSource attachSource()}\\n * @see {@link module:MediaPlayer#attachView attachView()}\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~SOURCE_NOT_ATTACHED_ERROR SOURCE_NOT_ATTACHED_ERROR} if called before attachSource function\\n * @instance\\n */function preload(){if(videoModel.getElement()||streamingInitialized){return false;}if(source){initializePlayback();}else{throw SOURCE_NOT_ATTACHED_ERROR;}}/**\\n * The play method initiates playback of the media defined by the {@link module:MediaPlayer#attachSource attachSource()} method.\\n * This method will call play on the native Video Element.\\n *\\n * @see {@link module:MediaPlayer#attachSource attachSource()}\\n * @throws {@link module:MediaPlayer~PLAYBACK_NOT_INITIALIZED_ERROR PLAYBACK_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @memberof module:MediaPlayer\\n * @instance\\n */function play(){if(!playbackInitialized){throw PLAYBACK_NOT_INITIALIZED_ERROR;}if(!autoPlay||isPaused()&&playbackInitialized){playbackController.play();}}/**\\n * This method will call pause on the native Video Element.\\n *\\n * @throws {@link module:MediaPlayer~PLAYBACK_NOT_INITIALIZED_ERROR PLAYBACK_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @memberof module:MediaPlayer\\n * @instance\\n */function pause(){if(!playbackInitialized){throw PLAYBACK_NOT_INITIALIZED_ERROR;}playbackController.pause();}/**\\n * Returns a Boolean that indicates whether the Video Element is paused.\\n * @return {boolean}\\n * @throws {@link module:MediaPlayer~PLAYBACK_NOT_INITIALIZED_ERROR PLAYBACK_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @memberof module:MediaPlayer\\n * @instance\\n */function isPaused(){if(!playbackInitialized){throw PLAYBACK_NOT_INITIALIZED_ERROR;}return playbackController.isPaused();}/**\\n * Sets the currentTime property of the attached video element. If it is a live stream with a\\n * timeShiftBufferLength, then the DVR window offset will be automatically calculated.\\n *\\n * @param {number} value - A relative time, in seconds, based on the return value of the {@link module:MediaPlayer#duration duration()} method is expected\\n * @see {@link module:MediaPlayer#getDVRSeekOffset getDVRSeekOffset()}\\n * @throws {@link module:MediaPlayer~PLAYBACK_NOT_INITIALIZED_ERROR PLAYBACK_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @throws {@link Constants#BAD_ARGUMENT_ERROR BAD_ARGUMENT_ERROR} if called with an invalid argument, not number type or is NaN.\\n * @memberof module:MediaPlayer\\n * @instance\\n */function seek(value){if(!playbackInitialized){throw PLAYBACK_NOT_INITIALIZED_ERROR;}(0,_SupervisorTools.checkParameterType)(value,'number');if(isNaN(value)){throw _Constants2.default.BAD_ARGUMENT_ERROR;}var s=playbackController.getIsDynamic()?getDVRSeekOffset(value):value;playbackController.seek(s);}/**\\n * Returns a Boolean that indicates whether the media is in the process of seeking to a new position.\\n * @return {boolean}\\n * @throws {@link module:MediaPlayer~PLAYBACK_NOT_INITIALIZED_ERROR PLAYBACK_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @memberof module:MediaPlayer\\n * @instance\\n */function isSeeking(){if(!playbackInitialized){throw PLAYBACK_NOT_INITIALIZED_ERROR;}return playbackController.isSeeking();}/**\\n * Returns a Boolean that indicates whether the media is in the process of dynamic.\\n * @return {boolean}\\n * @throws {@link module:MediaPlayer~PLAYBACK_NOT_INITIALIZED_ERROR PLAYBACK_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @memberof module:MediaPlayer\\n * @instance\\n */function isDynamic(){if(!playbackInitialized){throw PLAYBACK_NOT_INITIALIZED_ERROR;}return playbackController.getIsDynamic();}/**\\n * Use this method to set the native Video Element's playback rate.\\n * @param {number} value\\n * @memberof module:MediaPlayer\\n * @instance\\n */function setPlaybackRate(value){getVideoElement().playbackRate=value;}/**\\n * Returns the current playback rate.\\n * @returns {number}\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getPlaybackRate(){return getVideoElement().playbackRate;}/**\\n * Use this method to set the native Video Element's muted state. Takes a Boolean that determines whether audio is muted. true if the audio is muted and false otherwise.\\n * @param {boolean} value\\n * @memberof module:MediaPlayer\\n * @throws {@link Constants#BAD_ARGUMENT_ERROR BAD_ARGUMENT_ERROR} if called with an invalid argument, not boolean type.\\n * @instance\\n */function setMute(value){(0,_SupervisorTools.checkParameterType)(value,'boolean');getVideoElement().muted=value;}/**\\n * A Boolean that determines whether audio is muted.\\n * @returns {boolean}\\n * @memberof module:MediaPlayer\\n * @instance\\n */function isMuted(){return getVideoElement().muted;}/**\\n * A double indicating the audio volume, from 0.0 (silent) to 1.0 (loudest).\\n * @param {number} value\\n * @memberof module:MediaPlayer\\n * @throws {@link Constants#BAD_ARGUMENT_ERROR BAD_ARGUMENT_ERROR} if called with an invalid argument, not number type, or is NaN or not between 0 and 1.\\n * @instance\\n */function setVolume(value){if(typeof value!=='number'||isNaN(value)||value<0.0||value>1.0){throw _Constants2.default.BAD_ARGUMENT_ERROR;}getVideoElement().volume=value;}/**\\n * Returns the current audio volume, from 0.0 (silent) to 1.0 (loudest).\\n * @returns {number}\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getVolume(){return getVideoElement().volume;}/**\\n * The length of the buffer for a given media type, in seconds. Valid media\\n * types are \\\"video\\\", \\\"audio\\\" and \\\"fragmentedText\\\". If no type is passed\\n * in, then the minimum of video, audio and fragmentedText buffer length is\\n * returned. NaN is returned if an invalid type is requested, the\\n * presentation does not contain that type, or if no arguments are passed\\n * and the presentation does not include any adaption sets of valid media\\n * type.\\n *\\n * @param {MediaType} type - 'video', 'audio' or 'fragmentedText'\\n * @returns {number} The length of the buffer for the given media type, in\\n * seconds, or NaN\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getBufferLength(type){var types=[_Constants2.default.VIDEO,_Constants2.default.AUDIO,_Constants2.default.FRAGMENTED_TEXT];if(!type){var buffer=types.map(function(t){return getTracksFor(t).length>0?getDashMetrics().getCurrentBufferLevel(t):Number.MAX_VALUE;}).reduce(function(p,c){return Math.min(p,c);});return buffer===Number.MAX_VALUE?NaN:buffer;}else{if(types.indexOf(type)!==-1){var _buffer=getDashMetrics().getCurrentBufferLevel(type);return _buffer?_buffer:NaN;}else{logger.warn('getBufferLength requested for invalid type');return NaN;}}}/**\\n * The timeShiftBufferLength (DVR Window), in seconds.\\n *\\n * @returns {number} The window of allowable play time behind the live point of a live stream.\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getDVRWindowSize(){var metric=dashMetrics.getCurrentDVRInfo();if(!metric){return 0;}return metric.manifestInfo.DVRWindowSize;}/**\\n * This method should only be used with a live stream that has a valid timeShiftBufferLength (DVR Window).\\n * NOTE - If you do not need the raw offset value (i.e. media analytics, tracking, etc) consider using the {@link module:MediaPlayer#seek seek()} method\\n * which will calculate this value for you and set the video element's currentTime property all in one simple call.\\n *\\n * @param {number} value - A relative time, in seconds, based on the return value of the {@link module:MediaPlayer#duration duration()} method is expected.\\n * @returns {number} A value that is relative the available range within the timeShiftBufferLength (DVR Window).\\n * @see {@link module:MediaPlayer#seek seek()}\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getDVRSeekOffset(value){var metric=dashMetrics.getCurrentDVRInfo();if(!metric){return 0;}var liveDelay=playbackController.getLiveDelay();var val=metric.range.start+value;if(val>metric.range.end-liveDelay){val=metric.range.end-liveDelay;}return val;}/**\\n * Current time of the playhead, in seconds.\\n *\\n * If called with no arguments then the returned time value is time elapsed since the start point of the first stream, or if it is a live stream, then the time will be based on the return value of the {@link module:MediaPlayer#duration duration()} method.\\n * However if a stream ID is supplied then time is relative to the start of that stream, or is null if there is no such stream id in the manifest.\\n *\\n * @param {string} streamId - The ID of a stream that the returned playhead time must be relative to the start of. If undefined, then playhead time is relative to the first stream.\\n * @returns {number} The current playhead time of the media, or null.\\n * @throws {@link module:MediaPlayer~PLAYBACK_NOT_INITIALIZED_ERROR PLAYBACK_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @memberof module:MediaPlayer\\n * @instance\\n */function time(streamId){if(!playbackInitialized){throw PLAYBACK_NOT_INITIALIZED_ERROR;}var t=getVideoElement().currentTime;if(streamId!==undefined){t=streamController.getTimeRelativeToStreamId(t,streamId);}else if(playbackController.getIsDynamic()){var metric=dashMetrics.getCurrentDVRInfo();t=metric===null||t===0?0:Math.max(0,t-metric.range.start);}return t;}/**\\n * Duration of the media's playback, in seconds.\\n *\\n * @returns {number} The current duration of the media.\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~PLAYBACK_NOT_INITIALIZED_ERROR PLAYBACK_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @instance\\n */function duration(){if(!playbackInitialized){throw PLAYBACK_NOT_INITIALIZED_ERROR;}var d=getVideoElement().duration;if(playbackController.getIsDynamic()){var metric=dashMetrics.getCurrentDVRInfo();d=metric?metric.range.end-metric.range.start:0;}return d;}/**\\n * Use this method to get the current playhead time as an absolute value, the time in seconds since midnight UTC, Jan 1 1970.\\n * Note - this property only has meaning for live streams. If called before play() has begun, it will return a value of NaN.\\n *\\n * @returns {number} The current playhead time as UTC timestamp.\\n * @throws {@link module:MediaPlayer~PLAYBACK_NOT_INITIALIZED_ERROR PLAYBACK_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @memberof module:MediaPlayer\\n * @instance\\n */function timeAsUTC(){if(!playbackInitialized){throw PLAYBACK_NOT_INITIALIZED_ERROR;}if(time()<0){return NaN;}return getAsUTC(time());}/**\\n * Use this method to get the current duration as an absolute value, the time in seconds since midnight UTC, Jan 1 1970.\\n * Note - this property only has meaning for live streams.\\n *\\n * @returns {number} The current duration as UTC timestamp.\\n * @throws {@link module:MediaPlayer~PLAYBACK_NOT_INITIALIZED_ERROR PLAYBACK_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @memberof module:MediaPlayer\\n * @instance\\n */function durationAsUTC(){if(!playbackInitialized){throw PLAYBACK_NOT_INITIALIZED_ERROR;}return getAsUTC(duration());}/*\\n ---------------------------------------------------------------------------\\n\\n AUTO BITRATE\\n\\n ---------------------------------------------------------------------------\\n *//**\\n * Gets the top quality BitrateInfo checking portal limit and max allowed.\\n * It calls getTopQualityIndexFor internally\\n *\\n * @param {MediaType} type - 'video' or 'audio'\\n * @memberof module:MediaPlayer\\n * @returns {BitrateInfo | null}\\n * @throws {@link module:MediaPlayer~STREAMING_NOT_INITIALIZED_ERROR STREAMING_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @instance\\n */function getTopBitrateInfoFor(type){if(!streamingInitialized){throw STREAMING_NOT_INITIALIZED_ERROR;}return abrController.getTopBitrateInfoFor(type);}/**\\n * Gets the current download quality for media type video, audio or images. For video and audio types the ABR\\n * rules update this value before every new download unless setAutoSwitchQualityFor(type, false) is called. For 'image'\\n * type, thumbnails, there is no ABR algorithm and quality is set manually.\\n *\\n * @param {MediaType} type - 'video', 'audio' or 'image' (thumbnails)\\n * @returns {number} the quality index, 0 corresponding to the lowest bitrate\\n * @memberof module:MediaPlayer\\n * @see {@link module:MediaPlayer#setAutoSwitchQualityFor setAutoSwitchQualityFor()}\\n * @see {@link module:MediaPlayer#setQualityFor setQualityFor()}\\n * @throws {@link module:MediaPlayer~STREAMING_NOT_INITIALIZED_ERROR STREAMING_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @instance\\n */function getQualityFor(type){if(!streamingInitialized){throw STREAMING_NOT_INITIALIZED_ERROR;}if(type===_Constants2.default.IMAGE){var activeStream=getActiveStream();if(!activeStream){return-1;}var thumbnailController=activeStream.getThumbnailController();return!thumbnailController?-1:thumbnailController.getCurrentTrackIndex();}return abrController.getQualityFor(type);}/**\\n * Sets the current quality for media type instead of letting the ABR Heuristics automatically selecting it.\\n * This value will be overwritten by the ABR rules unless setAutoSwitchQualityFor(type, false) is called.\\n *\\n * @param {MediaType} type - 'video', 'audio' or 'image'\\n * @param {number} value - the quality index, 0 corresponding to the lowest bitrate\\n * @memberof module:MediaPlayer\\n * @see {@link module:MediaPlayer#setAutoSwitchQualityFor setAutoSwitchQualityFor()}\\n * @see {@link module:MediaPlayer#getQualityFor getQualityFor()}\\n * @throws {@link module:MediaPlayer~STREAMING_NOT_INITIALIZED_ERROR STREAMING_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @instance\\n */function setQualityFor(type,value){if(!streamingInitialized){throw STREAMING_NOT_INITIALIZED_ERROR;}if(type===_Constants2.default.IMAGE){var activeStream=getActiveStream();if(!activeStream){return;}var thumbnailController=activeStream.getThumbnailController();if(thumbnailController){thumbnailController.setTrackByIndex(value);}}abrController.setPlaybackQuality(type,streamController.getActiveStreamInfo(),value);}/**\\n * Update the video element size variables\\n * Should be called on window resize (or any other time player is resized). Fullscreen does trigger a window resize event.\\n *\\n * Once windowResizeEventCalled = true, abrController.checkPortalSize() will use element size variables rather than querying clientWidth every time.\\n *\\n * @memberof module:MediaPlayer\\n * @instance\\n */function updatePortalSize(){abrController.setElementSize();abrController.setWindowResizeEventCalled(true);}/*\\n ---------------------------------------------------------------------------\\n\\n MEDIA PLAYER CONFIGURATION\\n\\n ---------------------------------------------------------------------------\\n *//**\\n *

Set to false to prevent stream from auto-playing when the view is attached.

\\n *\\n * @param {boolean} value\\n * @default true\\n * @memberof module:MediaPlayer\\n * @see {@link module:MediaPlayer#attachView attachView()}\\n * @throws {@link Constants#BAD_ARGUMENT_ERROR BAD_ARGUMENT_ERROR} if called with an invalid argument, not boolean type.\\n * @instance\\n *\\n */function setAutoPlay(value){(0,_SupervisorTools.checkParameterType)(value,'boolean');autoPlay=value;}/**\\n * @returns {boolean} The current autoPlay state.\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getAutoPlay(){return autoPlay;}/**\\n * @memberof module:MediaPlayer\\n * @instance\\n * @returns {number|NaN} Current live stream latency in seconds. It is the difference between current time and time position at the playback head.\\n * @throws {@link module:MediaPlayer~MEDIA_PLAYER_NOT_INITIALIZED_ERROR MEDIA_PLAYER_NOT_INITIALIZED_ERROR} if called before initialize function\\n */function getCurrentLiveLatency(){if(!mediaPlayerInitialized){throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;}if(!playbackInitialized){return NaN;}return playbackController.getCurrentLiveLatency();}/**\\n * Add a custom ABR Rule\\n * Rule will be apply on next stream if a stream is being played\\n *\\n * @param {string} type - rule type (one of ['qualitySwitchRules','abandonFragmentRules'])\\n * @param {string} rulename - name of rule (used to identify custom rule). If one rule of same name has been added, then existing rule will be updated\\n * @param {object} rule - the rule object instance\\n * @memberof module:MediaPlayer\\n * @throws {@link Constants#BAD_ARGUMENT_ERROR BAD_ARGUMENT_ERROR} if called with invalid arguments.\\n * @instance\\n */function addABRCustomRule(type,rulename,rule){mediaPlayerModel.addABRCustomRule(type,rulename,rule);}/**\\n * Remove a custom ABR Rule\\n *\\n * @param {string} rulename - name of the rule to be removed\\n * @memberof module:MediaPlayer\\n * @instance\\n */function removeABRCustomRule(rulename){mediaPlayerModel.removeABRCustomRule(rulename);}/**\\n * Remove all custom rules\\n * @memberof module:MediaPlayer\\n * @instance\\n */function removeAllABRCustomRule(){mediaPlayerModel.removeABRCustomRule();}/**\\n *

Allows you to set a scheme and server source for UTC live edge detection for dynamic streams.\\n * If UTCTiming is defined in the manifest, it will take precedence over any time source manually added.

\\n *

If you have exposed the Date header, use the method {@link module:MediaPlayer#clearDefaultUTCTimingSources clearDefaultUTCTimingSources()}.\\n * This will allow the date header on the manifest to be used instead of a time server

\\n * @param {string} schemeIdUri -
    \\n *
  • urn:mpeg:dash:utc:http-head:2014
  • \\n *
  • urn:mpeg:dash:utc:http-xsdate:2014
  • \\n *
  • urn:mpeg:dash:utc:http-iso:2014
  • \\n *
  • urn:mpeg:dash:utc:direct:2014
  • \\n *
\\n *

Some specs referencing early ISO23009-1 drafts incorrectly use\\n * 2012 in the URI, rather than 2014. support these for now.

\\n *
    \\n *
  • urn:mpeg:dash:utc:http-head:2012
  • \\n *
  • urn:mpeg:dash:utc:http-xsdate:2012
  • \\n *
  • urn:mpeg:dash:utc:http-iso:2012
  • \\n *
  • urn:mpeg:dash:utc:direct:2012
  • \\n *
\\n * @param {string} value - Path to a time source.\\n * @default\\n *
    \\n *
  • schemeIdUri:urn:mpeg:dash:utc:http-xsdate:2014
  • \\n *
  • value:http://time.akamai.com/?iso&ms/li>\\n *
\\n * @memberof module:MediaPlayer\\n * @see {@link module:MediaPlayer#removeUTCTimingSource removeUTCTimingSource()}\\n * @instance\\n */function addUTCTimingSource(schemeIdUri,value){mediaPlayerModel.addUTCTimingSource(schemeIdUri,value);}/**\\n *

Allows you to remove a UTC time source. Both schemeIdUri and value need to match the Dash.vo.UTCTiming properties in order for the\\n * entry to be removed from the array

\\n * @param {string} schemeIdUri - see {@link module:MediaPlayer#addUTCTimingSource addUTCTimingSource()}\\n * @param {string} value - see {@link module:MediaPlayer#addUTCTimingSource addUTCTimingSource()}\\n * @memberof module:MediaPlayer\\n * @see {@link module:MediaPlayer#clearDefaultUTCTimingSources clearDefaultUTCTimingSources()}\\n * @throws {@link Constants#BAD_ARGUMENT_ERROR BAD_ARGUMENT_ERROR} if called with invalid arguments, schemeIdUri and value are not string type.\\n * @instance\\n */function removeUTCTimingSource(schemeIdUri,value){mediaPlayerModel.removeUTCTimingSource(schemeIdUri,value);}/**\\n *

Allows you to clear the stored array of time sources.

\\n *

Example use: If you have exposed the Date header, calling this method\\n * will allow the date header on the manifest to be used instead of the time server.

\\n *

Example use: Calling this method, assuming there is not an exposed date header on the manifest, will default back\\n * to using a binary search to discover the live edge

\\n *\\n * @memberof module:MediaPlayer\\n * @see {@link module:MediaPlayer#restoreDefaultUTCTimingSources restoreDefaultUTCTimingSources()}\\n * @instance\\n */function clearDefaultUTCTimingSources(){mediaPlayerModel.clearDefaultUTCTimingSources();}/**\\n *

Allows you to restore the default time sources after calling {@link module:MediaPlayer#clearDefaultUTCTimingSources clearDefaultUTCTimingSources()}

\\n *\\n * @default\\n *
    \\n *
  • schemeIdUri:urn:mpeg:dash:utc:http-xsdate:2014
  • \\n *
  • value:http://time.akamai.com/?iso&ms
  • \\n *
\\n *\\n * @memberof module:MediaPlayer\\n * @see {@link module:MediaPlayer#addUTCTimingSource addUTCTimingSource()}\\n * @instance\\n */function restoreDefaultUTCTimingSources(){mediaPlayerModel.restoreDefaultUTCTimingSources();}/**\\n * Returns the average throughput computed in the ABR logic\\n *\\n * @param {MediaType} type\\n * @return {number} value\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getAverageThroughput(type){var throughputHistory=abrController.getThroughputHistory();return throughputHistory?throughputHistory.getAverageThroughput(type):0;}/**\\n * Sets whether withCredentials on XHR requests for a particular request\\n * type is true or false\\n *\\n * @default false\\n * @param {string} type - one of HTTPRequest.*_TYPE\\n * @param {boolean} value\\n * @memberof module:MediaPlayer\\n * @instance\\n */function setXHRWithCredentialsForType(type,value){mediaPlayerModel.setXHRWithCredentialsForType(type,value);}/**\\n * Gets whether withCredentials on XHR requests for a particular request\\n * type is true or false\\n *\\n * @param {string} type - one of HTTPRequest.*_TYPE\\n * @return {boolean}\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getXHRWithCredentialsForType(type){return mediaPlayerModel.getXHRWithCredentialsForType(type);}/*\\n ---------------------------------------------------------------------------\\n\\n OFFLINE\\n\\n ---------------------------------------------------------------------------\\n *//**\\n * Detects if Offline is included and returns an instance of OfflineController.js\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getOfflineController(){return detectOffline();}/*\\n ---------------------------------------------------------------------------\\n\\n METRICS\\n\\n ---------------------------------------------------------------------------\\n *//**\\n * Returns the DashMetrics.js Module. You use this Module to get access to all the public metrics\\n * stored in dash.js\\n *\\n * @see {@link module:DashMetrics}\\n * @returns {Object}\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getDashMetrics(){return dashMetrics;}/*\\n ---------------------------------------------------------------------------\\n\\n TEXT MANAGEMENT\\n\\n ---------------------------------------------------------------------------\\n *//**\\n * Set default language for text. If default language is not one of text tracks, dash will choose the first one.\\n *\\n * @param {string} lang - default language\\n * @memberof module:MediaPlayer\\n * @instance\\n * @deprecated will be removed in version 3.2.0. Please use setInitialMediaSettingsFor(\\\"fragmentedText\\\", { lang: lang }) instead\\n */function setTextDefaultLanguage(lang){logger.warn('setTextDefaultLanguage is deprecated and will be removed in version 3.2.0. Please use setInitialMediaSettingsFor(\\\"fragmentedText\\\", { lang: lang }) instead');if(textController===undefined){textController=(0,_TextController2.default)(context).getInstance();}textController.setTextDefaultLanguage(lang);}/**\\n * Get default language for text.\\n *\\n * @return {string} the default language if it has been set using setTextDefaultLanguage\\n * @memberof module:MediaPlayer\\n * @instance\\n * @deprecated will be removed in version 3.2.0. Please use getInitialMediaSettingsFor(\\\"fragmentedText\\\").lang instead\\n */function getTextDefaultLanguage(){logger.warn('getTextDefaultLanguage is deprecated and will be removed in version 3.2.0. Please use getInitialMediaSettingsFor(\\\"fragmentedText\\\").lang instead');if(textController===undefined){textController=(0,_TextController2.default)(context).getInstance();}return textController.getTextDefaultLanguage();}/**\\n * Set enabled default state.\\n * This is used to enable/disable text when a file is loaded.\\n * During playback, use enableText to enable text for the file\\n *\\n * @param {boolean} enable - true to enable text, false otherwise\\n * @memberof module:MediaPlayer\\n * @instance\\n */function setTextDefaultEnabled(enable){if(textController===undefined){textController=(0,_TextController2.default)(context).getInstance();}textController.setTextDefaultEnabled(enable);}/**\\n * Get enabled default state.\\n *\\n * @return {boolean} default enable state\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getTextDefaultEnabled(){if(textController===undefined){textController=(0,_TextController2.default)(context).getInstance();}return textController.getTextDefaultEnabled();}/**\\n * Enable/disable text\\n * When enabling text, dash will choose the previous selected text track\\n *\\n * @param {boolean} enable - true to enable text, false otherwise (same as setTextTrack(-1))\\n * @memberof module:MediaPlayer\\n * @instance\\n */function enableText(enable){if(textController===undefined){textController=(0,_TextController2.default)(context).getInstance();}textController.enableText(enable);}/**\\n * Enable/disable text\\n * When enabling dash will keep downloading and process fragmented text tracks even if all tracks are in mode \\\"hidden\\\"\\n *\\n * @param {boolean} enable - true to enable text streaming even if all text tracks are hidden.\\n * @memberof module:MediaPlayer\\n * @instance\\n */function enableForcedTextStreaming(enable){if(textController===undefined){textController=(0,_TextController2.default)(context).getInstance();}textController.enableForcedTextStreaming(enable);}/**\\n * Return if text is enabled\\n *\\n * @return {boolean} return true if text is enabled, false otherwise\\n * @memberof module:MediaPlayer\\n * @instance\\n */function isTextEnabled(){if(textController===undefined){textController=(0,_TextController2.default)(context).getInstance();}return textController.isTextEnabled();}/**\\n * Use this method to change the current text track for both external time text files and fragmented text tracks. There is no need to\\n * set the track mode on the video object to switch a track when using this method.\\n * @param {number} idx - Index of track based on the order of the order the tracks are added Use -1 to disable all tracks. (turn captions off). Use module:MediaPlayer#dashjs.MediaPlayer.events.TEXT_TRACK_ADDED.\\n * @see {@link MediaPlayerEvents#event:TEXT_TRACK_ADDED dashjs.MediaPlayer.events.TEXT_TRACK_ADDED}\\n * @throws {@link module:MediaPlayer~PLAYBACK_NOT_INITIALIZED_ERROR PLAYBACK_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @memberof module:MediaPlayer\\n * @instance\\n */function setTextTrack(idx){if(!playbackInitialized){throw PLAYBACK_NOT_INITIALIZED_ERROR;}if(textController===undefined){textController=(0,_TextController2.default)(context).getInstance();}textController.setTextTrack(idx);}function getCurrentTextTrackIndex(){var idx=NaN;if(textController){idx=textController.getCurrentTrackIdx();}return idx;}/**\\n * This method serves to control captions z-index value. If 'true' is passed, the captions will have the highest z-index and be\\n * displayed on top of other html elements. Default value is 'false' (z-index is not set).\\n * @param {boolean} value\\n * @memberof module:MediaPlayer\\n * @instance\\n */function displayCaptionsOnTop(value){var textTracks=(0,_TextTracks2.default)(context).getInstance();textTracks.setConfig({videoModel:videoModel});textTracks.initialize();textTracks.setDisplayCConTop(value);}/*\\n ---------------------------------------------------------------------------\\n\\n VIDEO ELEMENT MANAGEMENT\\n\\n ---------------------------------------------------------------------------\\n *//**\\n * Returns instance of Video Element that was attached by calling attachView()\\n * @returns {Object}\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~ELEMENT_NOT_ATTACHED_ERROR ELEMENT_NOT_ATTACHED_ERROR} if called before attachView function\\n * @instance\\n */function getVideoElement(){if(!videoModel.getElement()){throw ELEMENT_NOT_ATTACHED_ERROR;}return videoModel.getElement();}/**\\n * Use this method to attach an HTML5 VideoElement for dash.js to operate upon.\\n *\\n * @param {Object} element - An HTMLMediaElement that has already been defined in the DOM (or equivalent stub).\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~MEDIA_PLAYER_NOT_INITIALIZED_ERROR MEDIA_PLAYER_NOT_INITIALIZED_ERROR} if called before initialize function\\n * @instance\\n */function attachView(element){if(!mediaPlayerInitialized){throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;}videoModel.setElement(element);if(element){detectProtection();detectMetricsReporting();detectMss();if(streamController){streamController.switchToVideoElement();}}if(playbackInitialized){//Reset if we have been playing before, so this is a new element.\\nresetPlaybackControllers();}initializePlayback();}/**\\n * Returns instance of Div that was attached by calling attachTTMLRenderingDiv()\\n * @returns {Object}\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getTTMLRenderingDiv(){return videoModel?videoModel.getTTMLRenderingDiv():null;}/**\\n * Use this method to attach an HTML5 div for dash.js to render rich TTML subtitles.\\n *\\n * @param {HTMLDivElement} div - An unstyled div placed after the video element. It will be styled to match the video size and overlay z-order.\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~ELEMENT_NOT_ATTACHED_ERROR ELEMENT_NOT_ATTACHED_ERROR} if called before attachView function\\n * @instance\\n */function attachTTMLRenderingDiv(div){if(!videoModel.getElement()){throw ELEMENT_NOT_ATTACHED_ERROR;}videoModel.setTTMLRenderingDiv(div);}/*\\n ---------------------------------------------------------------------------\\n\\n STREAM AND TRACK MANAGEMENT\\n\\n ---------------------------------------------------------------------------\\n *//**\\n * @param {MediaType} type\\n * @returns {Array}\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~STREAMING_NOT_INITIALIZED_ERROR STREAMING_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @instance\\n */function getBitrateInfoListFor(type){if(!streamingInitialized){throw STREAMING_NOT_INITIALIZED_ERROR;}var stream=getActiveStream();return stream?stream.getBitrateListFor(type):[];}/**\\n * This method returns the list of all available streams from a given manifest\\n * @param {Object} manifest\\n * @returns {Array} list of {@link StreamInfo}\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~STREAMING_NOT_INITIALIZED_ERROR STREAMING_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @instance\\n */function getStreamsFromManifest(manifest){if(!streamingInitialized){throw STREAMING_NOT_INITIALIZED_ERROR;}return adapter.getStreamsInfo(manifest);}/**\\n * This method returns the list of all available tracks for a given media type\\n * @param {MediaType} type\\n * @returns {Array} list of {@link MediaInfo}\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~STREAMING_NOT_INITIALIZED_ERROR STREAMING_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @instance\\n */function getTracksFor(type){if(!streamingInitialized){throw STREAMING_NOT_INITIALIZED_ERROR;}var streamInfo=streamController.getActiveStreamInfo();return mediaController.getTracksFor(type,streamInfo);}/**\\n * This method returns the list of all available tracks for a given media type and streamInfo from a given manifest\\n * @param {MediaType} type\\n * @param {Object} manifest\\n * @param {Object} streamInfo\\n * @returns {Array} list of {@link MediaInfo}\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~STREAMING_NOT_INITIALIZED_ERROR STREAMING_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @instance\\n */function getTracksForTypeFromManifest(type,manifest,streamInfo){if(!streamingInitialized){throw STREAMING_NOT_INITIALIZED_ERROR;}streamInfo=streamInfo||adapter.getStreamsInfo(manifest,1)[0];return streamInfo?adapter.getAllMediaInfoForType(streamInfo,type,manifest):[];}/**\\n * @param {MediaType} type\\n * @returns {Object|null} {@link MediaInfo}\\n *\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~STREAMING_NOT_INITIALIZED_ERROR STREAMING_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @instance\\n */function getCurrentTrackFor(type){if(!streamingInitialized){throw STREAMING_NOT_INITIALIZED_ERROR;}var streamInfo=streamController.getActiveStreamInfo();return mediaController.getCurrentTrackFor(type,streamInfo);}/**\\n * This method allows to set media settings that will be used to pick the initial track. Format of the settings\\n * is following:
\\n * {lang: langValue (can be either a string or a regex to match),\\n * index: indexValue,\\n * viewpoint: viewpointValue,\\n * audioChannelConfiguration: audioChannelConfigurationValue,\\n * accessibility: accessibilityValue,\\n * role: roleValue}\\n *\\n * @param {MediaType} type\\n * @param {Object} value\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~MEDIA_PLAYER_NOT_INITIALIZED_ERROR MEDIA_PLAYER_NOT_INITIALIZED_ERROR} if called before initialize function\\n * @instance\\n */function setInitialMediaSettingsFor(type,value){if(!mediaPlayerInitialized){throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;}mediaController.setInitialSettings(type,value);if(type===_Constants2.default.FRAGMENTED_TEXT){textController.setInitialSettings(value);}}/**\\n * This method returns media settings that is used to pick the initial track. Format of the settings\\n * is following:\\n * {lang: langValue,\\n * index: indexValue,\\n * viewpoint: viewpointValue,\\n * audioChannelConfiguration: audioChannelConfigurationValue,\\n * accessibility: accessibilityValue,\\n * role: roleValue}\\n * @param {MediaType} type\\n * @returns {Object}\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~MEDIA_PLAYER_NOT_INITIALIZED_ERROR MEDIA_PLAYER_NOT_INITIALIZED_ERROR} if called before initialize function\\n * @instance\\n */function getInitialMediaSettingsFor(type){if(!mediaPlayerInitialized){throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;}return mediaController.getInitialSettings(type);}/**\\n * @param {MediaInfo} track - instance of {@link MediaInfo}\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~STREAMING_NOT_INITIALIZED_ERROR STREAMING_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @instance\\n */function setCurrentTrack(track){if(!streamingInitialized){throw STREAMING_NOT_INITIALIZED_ERROR;}mediaController.setTrack(track);}/**\\n * This method returns the current track switch mode.\\n *\\n * @param {MediaType} type\\n * @returns {string} mode\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~MEDIA_PLAYER_NOT_INITIALIZED_ERROR MEDIA_PLAYER_NOT_INITIALIZED_ERROR} if called before initialize function\\n * @instance\\n */function getTrackSwitchModeFor(type){if(!mediaPlayerInitialized){throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;}return mediaController.getSwitchMode(type);}/**\\n * This method sets the current track switch mode. Available options are:\\n *\\n * Constants.TRACK_SWITCH_MODE_NEVER_REPLACE\\n * (used to forbid clearing the buffered data (prior to current playback position) after track switch.\\n * Defers to fastSwitchEnabled for placement of new data. Default for video)\\n *\\n * Constants.TRACK_SWITCH_MODE_ALWAYS_REPLACE\\n * (used to clear the buffered data (prior to current playback position) after track switch. Default for audio)\\n *\\n * @param {MediaType} type\\n * @param {string} mode\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~MEDIA_PLAYER_NOT_INITIALIZED_ERROR MEDIA_PLAYER_NOT_INITIALIZED_ERROR} if called before initialize function\\n * @instance\\n */function setTrackSwitchModeFor(type,mode){if(!mediaPlayerInitialized){throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;}mediaController.setSwitchMode(type,mode);}/**\\n * This method sets the selection mode for the initial track. This mode defines how the initial track will be selected\\n * if no initial media settings are set. If initial media settings are set this parameter will be ignored. Available options are:\\n *\\n * Constants.TRACK_SELECTION_MODE_HIGHEST_BITRATE\\n * This mode makes the player select the track with a highest bitrate. This mode is a default mode.\\n *\\n * Constants.TRACK_SELECTION_MODE_FIRST_TRACK\\n * This mode makes the player select the select the first track found in the manifest.\\n *\\n * Constants.TRACK_SELECTION_MODE_HIGHEST_EFFICIENCY\\n * This mode makes the player select the track with the lowest bitrate per pixel average.\\n *\\n * Constants.TRACK_SELECTION_MODE_WIDEST_RANGE\\n * This mode makes the player select the track with a widest range of bitrates.\\n *\\n * @param {string} mode\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~MEDIA_PLAYER_NOT_INITIALIZED_ERROR MEDIA_PLAYER_NOT_INITIALIZED_ERROR} if called before initialize function\\n * @instance\\n */function setSelectionModeForInitialTrack(mode){if(!mediaPlayerInitialized){throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;}mediaController.setSelectionModeForInitialTrack(mode);}/**\\n * This method returns the track selection mode.\\n *\\n * @returns {string} mode\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~MEDIA_PLAYER_NOT_INITIALIZED_ERROR MEDIA_PLAYER_NOT_INITIALIZED_ERROR} if called before initialize function\\n * @instance\\n */function getSelectionModeForInitialTrack(){if(!mediaPlayerInitialized){throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;}return mediaController.getSelectionModeForInitialTrack();}/*\\n ---------------------------------------------------------------------------\\n\\n PROTECTION MANAGEMENT\\n\\n ---------------------------------------------------------------------------\\n *//**\\n * Detects if Protection is included and returns an instance of ProtectionController.js\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getProtectionController(){return detectProtection();}/**\\n * Will override dash.js protection controller.\\n * @param {ProtectionController} value - valid protection controller instance.\\n * @memberof module:MediaPlayer\\n * @instance\\n */function attachProtectionController(value){protectionController=value;}/**\\n * Sets Protection Data required to setup the Protection Module (DRM). Protection Data must\\n * be set before initializing MediaPlayer or, once initialized, before PROTECTION_CREATED event is fired.\\n * @see {@link module:MediaPlayer#initialize initialize()}\\n * @see {@link ProtectionEvents#event:PROTECTION_CREATED dashjs.Protection.events.PROTECTION_CREATED}\\n * @param {ProtectionDataSet} value - object containing\\n * property names corresponding to key system name strings and associated\\n * values being instances of.\\n * @memberof module:MediaPlayer\\n * @instance\\n */function setProtectionData(value){protectionData=value;// Propagate changes in case StreamController is already created\\nif(streamController){streamController.setProtectionData(protectionData);}}/**\\n * Registers a license request filter. This enables application to manipulate/overwrite any request parameter and/or request data.\\n * The provided callback function shall return a promise that shall be resolved once the filter process is completed.\\n * The filters are applied in the order they are registered.\\n * @param {function} filter - the license request filter callback\\n * @memberof module:MediaPlayer\\n * @instance\\n */function registerLicenseRequestFilter(filter){licenseRequestFilters.push(filter);if(protectionController){protectionController.setLicenseRequestFilters(licenseRequestFilters);}}/**\\n * Registers a license response filter. This enables application to manipulate/overwrite the response data\\n * The provided callback function shall return a promise that shall be resolved once the filter process is completed.\\n * The filters are applied in the order they are registered.\\n * @param {function} filter - the license response filter callback\\n * @memberof module:MediaPlayer\\n * @instance\\n */function registerLicenseResponseFilter(filter){licenseResponseFilters.push(filter);if(protectionController){protectionController.setLicenseResponseFilters(licenseResponseFilters);}}/**\\n * Unregisters a license request filter.\\n * @param {function} filter - the license request filter callback\\n * @memberof module:MediaPlayer\\n * @instance\\n */function unregisterLicenseRequestFilter(filter){unregisterFilter(licenseRequestFilters,filter);if(protectionController){protectionController.setLicenseRequestFilters(licenseRequestFilters);}}/**\\n * Unregisters a license response filter.\\n * @param {function} filter - the license response filter callback\\n * @memberof module:MediaPlayer\\n * @instance\\n */function unregisterLicenseResponseFilter(filter){unregisterFilter(licenseResponseFilters,filter);if(protectionController){protectionController.setLicenseResponseFilters(licenseResponseFilters);}}/**\\n * Registers a custom capabilities filter. This enables application to filter representations to use.\\n * The provided callback function shall return a boolean based on whether or not to use the representation.\\n * The filters are applied in the order they are registered.\\n * @param {function} filter - the custom capabilities filter callback\\n * @memberof module:MediaPlayer\\n * @instance\\n */function registerCustomCapabilitiesFilter(filter){customCapabilitiesFilters.push(filter);if(capabilitiesFilter){capabilitiesFilter.setCustomCapabilitiesFilters(customCapabilitiesFilters);}}/**\\n * Unregisters a custom capabilities filter.\\n * @param {function} filter - the custom capabilities filter callback\\n * @memberof module:MediaPlayer\\n * @instance\\n */function unregisterCustomCapabilitiesFilter(filter){unregisterFilter(customCapabilitiesFilters,filter);if(capabilitiesFilter){capabilitiesFilter.setCustomCapabilitiesFilters(customCapabilitiesFilters);}}function unregisterFilter(filters,filter){var index=-1;filters.some(function(item,i){if(item===filter){index=i;return true;}});if(index<0)return;filters.splice(index,1);}/*\\n ---------------------------------------------------------------------------\\n\\n THUMBNAILS MANAGEMENT\\n\\n ---------------------------------------------------------------------------\\n *//**\\n * Provide the thumbnail at time position. This can be asynchronous, so you must provide a callback ro retrieve thumbnails informations\\n * @param {number} time - A relative time, in seconds, based on the return value of the {@link module:MediaPlayer#duration duration()} method is expected\\n * @param {function} callback - A Callback function provided when retrieving thumbnail the given time position. Thumbnail object is null in case there are is not a thumbnails representation or\\n * if it doesn't contain a thumbnail for the given time position.\\n * @memberof module:MediaPlayer\\n * @instance\\n */function provideThumbnail(time,callback){if(typeof callback!=='function'){return;}if(time<0){callback(null);return;}var s=playbackController.getIsDynamic()?getDVRSeekOffset(time):time;var stream=streamController.getStreamForTime(s);if(stream===null){callback(null);return;}var thumbnailController=stream.getThumbnailController();if(!thumbnailController){callback(null);return;}var timeInPeriod=streamController.getTimeRelativeToStreamId(s,stream.getId());return thumbnailController.provide(timeInPeriod,callback);}/*\\n ---------------------------------------------------------------------------\\n\\n TOOLS AND OTHERS FUNCTIONS\\n\\n ---------------------------------------------------------------------------\\n *//**\\n * Allows application to retrieve a manifest. Manifest loading is asynchro\\n * nous and\\n * requires the app-provided callback function\\n *\\n * @param {string} url - url the manifest url\\n * @param {function} callback - A Callback function provided when retrieving manifests\\n * @memberof module:MediaPlayer\\n * @instance\\n */function retrieveManifest(url,callback){var manifestLoader=createManifestLoader();var self=this;var handler=function handler(e){if(!e.error){callback(e.manifest);}else{callback(null,e.error);}eventBus.off(_Events2.default.INTERNAL_MANIFEST_LOADED,handler,self);manifestLoader.reset();};eventBus.on(_Events2.default.INTERNAL_MANIFEST_LOADED,handler,self);uriFragmentModel.initialize(url);manifestLoader.load(url);}/**\\n * Returns the source string or manifest that was attached by calling attachSource()\\n * @returns {string | manifest}\\n * @memberof module:MediaPlayer\\n * @throws {@link module:MediaPlayer~SOURCE_NOT_ATTACHED_ERROR SOURCE_NOT_ATTACHED_ERROR} if called before attachSource function\\n * @instance\\n */function getSource(){if(!source){throw SOURCE_NOT_ATTACHED_ERROR;}return source;}/**\\n * Use this method to set a source URL to a valid MPD manifest file OR\\n * a previously downloaded and parsed manifest object. Optionally, can\\n * also provide protection information\\n *\\n * @param {string|Object} urlOrManifest - A URL to a valid MPD manifest file, or a\\n * parsed manifest object.\\n *\\n *\\n * @throws {@link module:MediaPlayer~MEDIA_PLAYER_NOT_INITIALIZED_ERROR MEDIA_PLAYER_NOT_INITIALIZED_ERROR} if called before initialize function\\n *\\n * @memberof module:MediaPlayer\\n * @instance\\n */function attachSource(urlOrManifest){if(!mediaPlayerInitialized){throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;}if(typeof urlOrManifest==='string'){uriFragmentModel.initialize(urlOrManifest);}source=urlOrManifest;if(streamingInitialized||playbackInitialized){resetPlaybackControllers();}if(isReady()){initializePlayback();}}/**\\n * Get the current settings object being used on the player.\\n * @returns {PlayerSettings} The settings object being used.\\n *\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getSettings(){return settings.get();}/**\\n * @summary Update the current settings object being used on the player. Anything left unspecified is not modified.\\n * @param {PlayerSettings} settingsObj - An object corresponding to the settings definition.\\n * @description This function does not update the entire object, only properties in the passed in object are updated.\\n *\\n * This means that updateSettings({a: x}) and updateSettings({b: y}) are functionally equivalent to\\n * updateSettings({a: x, b: y}). If the default values are required again, @see{@link resetSettings}.\\n * @example\\n * player.updateSettings({\\n * streaming: {\\n * liveDelayFragmentCount: 8\\n * abr: {\\n * maxBitrate: { audio: 100, video: 1000 }\\n * }\\n * }\\n * });\\n * @memberof module:MediaPlayer\\n * @instance\\n */function updateSettings(settingsObj){settings.update(settingsObj);}/**\\n * Resets the settings object back to the default.\\n *\\n * @memberof module:MediaPlayer\\n * @instance\\n */function resetSettings(){settings.reset();}/**\\n * A utility methods which converts UTC timestamp value into a valid time and date string.\\n *\\n * @param {number} time - UTC timestamp to be converted into date and time.\\n * @param {string} locales - a region identifier (i.e. en_US).\\n * @param {boolean} hour12 - 12 vs 24 hour. Set to true for 12 hour time formatting.\\n * @param {boolean} withDate - default is false. Set to true to append current date to UTC time format.\\n * @returns {string} A formatted time and date string.\\n * @memberof module:MediaPlayer\\n * @instance\\n */function formatUTC(time,locales,hour12){var withDate=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;var dt=new Date(time*1000);var d=dt.toLocaleDateString(locales);var t=dt.toLocaleTimeString(locales,{hour12:hour12});return withDate?t+' '+d:t;}/**\\n * A utility method which converts seconds into TimeCode (i.e. 300 --> 05:00).\\n *\\n * @param {number} value - A number in seconds to be converted into a formatted time code.\\n * @returns {string} A formatted time code string.\\n * @memberof module:MediaPlayer\\n * @instance\\n */function convertToTimeCode(value){value=Math.max(value,0);var h=Math.floor(value/3600);var m=Math.floor(value%3600/60);var s=Math.floor(value%3600%60);return(h===0?'':h<10?'0'+h.toString()+':':h.toString()+':')+(m<10?'0'+m.toString():m.toString())+':'+(s<10?'0'+s.toString():s.toString());}/**\\n * This method should be used to extend or replace internal dash.js objects.\\n * There are two ways to extend dash.js (determined by the override argument):\\n *
    \\n *
  1. If you set override to true any public method or property in your custom object will\\n * override the dash.js parent object's property(ies) and will be used instead but the\\n * dash.js parent module will still be created.
  2. \\n *\\n *
  3. If you set override to false your object will completely replace the dash.js object.\\n * (Note: This is how it was in 1.x of Dash.js with Dijon).
  4. \\n *
\\n * When you extend you get access to this.context, this.factory and this.parent to operate with in your custom object.\\n *
    \\n *
  • this.context - can be used to pass context for singleton access.
  • \\n *
  • this.factory - can be used to call factory.getSingletonInstance().
  • \\n *
  • this.parent - is the reference of the parent object to call other public methods. (this.parent is excluded if you extend with override set to false or option 2)
  • \\n *
\\n * You must call extend before you call initialize\\n * @see {@link module:MediaPlayer#initialize initialize()}\\n * @param {string} parentNameString - name of parent module\\n * @param {Object} childInstance - overriding object\\n * @param {boolean} override - replace only some methods (true) or the whole object (false)\\n * @memberof module:MediaPlayer\\n * @instance\\n */function extend(parentNameString,childInstance,override){_FactoryMaker2.default.extend(parentNameString,childInstance,override,context);}/**\\n * This method returns the active stream\\n *\\n * @throws {@link module:MediaPlayer~STREAMING_NOT_INITIALIZED_ERROR STREAMING_NOT_INITIALIZED_ERROR} if called before initializePlayback function\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getActiveStream(){if(!streamingInitialized){throw STREAMING_NOT_INITIALIZED_ERROR;}var streamInfo=streamController.getActiveStreamInfo();return streamInfo?streamController.getStreamById(streamInfo.id):null;}//***********************************\\n// PRIVATE METHODS\\n//***********************************\\nfunction resetPlaybackControllers(){playbackInitialized=false;streamingInitialized=false;adapter.reset();streamController.reset();gapController.reset();playbackController.reset();abrController.reset();mediaController.reset();textController.reset();if(protectionController){if(settings.get().streaming.keepProtectionMediaKeys){protectionController.stop();}else{protectionController.reset();protectionController=null;detectProtection();}}cmcdModel.reset();}function createPlaybackControllers(){// creates or get objects instances\\nvar manifestLoader=createManifestLoader();if(!streamController){streamController=(0,_StreamController2.default)(context).getInstance();}capabilitiesFilter.setConfig({capabilities:capabilities,adapter:adapter,settings:settings});capabilitiesFilter.setCustomCapabilitiesFilters(customCapabilitiesFilters);streamController.setConfig({capabilities:capabilities,capabilitiesFilter:capabilitiesFilter,manifestLoader:manifestLoader,manifestModel:manifestModel,mediaPlayerModel:mediaPlayerModel,protectionController:protectionController,adapter:adapter,dashMetrics:dashMetrics,errHandler:errHandler,timelineConverter:timelineConverter,videoModel:videoModel,playbackController:playbackController,abrController:abrController,mediaController:mediaController,textController:textController,settings:settings,baseURLController:baseURLController});gapController.setConfig({settings:settings,playbackController:playbackController,streamController:streamController,videoModel:videoModel,timelineConverter:timelineConverter,adapter:adapter});playbackController.setConfig({streamController:streamController,dashMetrics:dashMetrics,mediaPlayerModel:mediaPlayerModel,adapter:adapter,videoModel:videoModel,timelineConverter:timelineConverter,uriFragmentModel:uriFragmentModel,settings:settings});abrController.setConfig({streamController:streamController,domStorage:domStorage,mediaPlayerModel:mediaPlayerModel,dashMetrics:dashMetrics,adapter:adapter,videoModel:videoModel,settings:settings});textController.setConfig({errHandler:errHandler,manifestModel:manifestModel,adapter:adapter,mediaController:mediaController,streamController:streamController,videoModel:videoModel});cmcdModel.setConfig({abrController:abrController,dashMetrics:dashMetrics,playbackController:playbackController});// initialises controller\\nstreamController.initialize(autoPlay,protectionData);gapController.initialize();cmcdModel.initialize();}function createManifestLoader(){return(0,_ManifestLoader2.default)(context).create({debug:debug,errHandler:errHandler,dashMetrics:dashMetrics,mediaPlayerModel:mediaPlayerModel,requestModifier:(0,_RequestModifier2.default)(context).getInstance(),mssHandler:mssHandler,settings:settings});}function detectProtection(){if(protectionController){return protectionController;}// do not require Protection as dependencies as this is optional and intended to be loaded separately\\nvar Protection=dashjs.Protection;/* jshint ignore:line */if(typeof Protection==='function'){//TODO need a better way to register/detect plugin components\\nvar protection=Protection(context).create();_Events2.default.extend(Protection.events);_MediaPlayerEvents2.default.extend(Protection.events,{publicOnly:true});_Errors2.default.extend(Protection.errors);if(!capabilities){capabilities=(0,_Capabilities2.default)(context).getInstance();}protectionController=protection.createProtectionSystem({debug:debug,errHandler:errHandler,videoModel:videoModel,capabilities:capabilities,eventBus:eventBus,events:_Events2.default,BASE64:_base2.default,constants:_Constants2.default,cmcdModel:cmcdModel,settings:settings});if(protectionController){protectionController.setLicenseRequestFilters(licenseRequestFilters);protectionController.setLicenseResponseFilters(licenseResponseFilters);}return protectionController;}return null;}function detectMetricsReporting(){if(metricsReportingController){return;}// do not require MetricsReporting as dependencies as this is optional and intended to be loaded separately\\nvar MetricsReporting=dashjs.MetricsReporting;/* jshint ignore:line */if(typeof MetricsReporting==='function'){//TODO need a better way to register/detect plugin components\\nvar metricsReporting=MetricsReporting(context).create();metricsReportingController=metricsReporting.createMetricsReporting({debug:debug,eventBus:eventBus,mediaElement:getVideoElement(),adapter:adapter,dashMetrics:dashMetrics,events:_Events2.default,constants:_Constants2.default,metricsConstants:_MetricsConstants2.default});}}function detectMss(){if(mssHandler){return;}// do not require MssHandler as dependencies as this is optional and intended to be loaded separately\\nvar MssHandler=dashjs.MssHandler;/* jshint ignore:line */if(typeof MssHandler==='function'){//TODO need a better way to register/detect plugin components\\n_Errors2.default.extend(MssHandler.errors);mssHandler=MssHandler(context).create({eventBus:eventBus,mediaPlayerModel:mediaPlayerModel,dashMetrics:dashMetrics,manifestModel:manifestModel,playbackController:playbackController,streamController:streamController,protectionController:protectionController,baseURLController:baseURLController,errHandler:errHandler,events:_Events2.default,constants:_Constants2.default,debug:debug,initSegmentType:_HTTPRequest.HTTPRequest.INIT_SEGMENT_TYPE,BASE64:_base2.default,ISOBoxer:_codemIsoboxer2.default,settings:settings});}}function detectOffline(){if(!mediaPlayerInitialized){throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;}if(offlineController){return offlineController;}// do not require Offline as dependencies as this is optional and intended to be loaded separately\\nvar OfflineController=dashjs.OfflineController;/* jshint ignore:line */if(typeof OfflineController==='function'){//TODO need a better way to register/detect plugin components\\n_Events2.default.extend(OfflineController.events);_MediaPlayerEvents2.default.extend(OfflineController.events,{publicOnly:true});_Errors2.default.extend(OfflineController.errors);var manifestLoader=createManifestLoader();var manifestUpdater=(0,_ManifestUpdater2.default)(context).create();manifestUpdater.setConfig({manifestModel:manifestModel,adapter:adapter,manifestLoader:manifestLoader,errHandler:errHandler});offlineController=OfflineController(context).create({debug:debug,manifestUpdater:manifestUpdater,baseURLController:baseURLController,manifestLoader:manifestLoader,manifestModel:manifestModel,mediaPlayerModel:mediaPlayerModel,abrController:abrController,playbackController:playbackController,adapter:adapter,errHandler:errHandler,dashMetrics:dashMetrics,timelineConverter:timelineConverter,schemeLoaderFactory:schemeLoaderFactory,eventBus:eventBus,events:_Events2.default,errors:_Errors2.default,constants:_Constants2.default,settings:settings,dashConstants:_DashConstants2.default,urlUtils:(0,_URLUtils2.default)(context).getInstance()});return offlineController;}return null;}function getAsUTC(valToConvert){var metric=dashMetrics.getCurrentDVRInfo();var availableFrom=void 0,utcValue=void 0;if(!metric){return 0;}availableFrom=metric.manifestInfo.availableFrom.getTime()/1000;utcValue=valToConvert+(availableFrom+metric.range.start);return utcValue;}function initializePlayback(){if(offlineController){offlineController.resetRecords();}if(!streamingInitialized&&source){streamingInitialized=true;logger.info('Streaming Initialized');createPlaybackControllers();if(typeof source==='string'){streamController.load(source);}else{streamController.loadWithManifest(source);}}if(!playbackInitialized&&isReady()){playbackInitialized=true;logger.info('Playback Initialized');}}/**\\n * Returns the DashAdapter.js Module.\\n *\\n * @see {@link module:DashAdapter}\\n * @returns {Object}\\n * @memberof module:MediaPlayer\\n * @instance\\n */function getDashAdapter(){return adapter;}instance={initialize:initialize,setConfig:setConfig,on:on,off:off,extend:extend,attachView:attachView,attachSource:attachSource,isReady:isReady,preload:preload,play:play,isPaused:isPaused,pause:pause,isSeeking:isSeeking,isDynamic:isDynamic,seek:seek,setPlaybackRate:setPlaybackRate,getPlaybackRate:getPlaybackRate,setMute:setMute,isMuted:isMuted,setVolume:setVolume,getVolume:getVolume,time:time,duration:duration,timeAsUTC:timeAsUTC,durationAsUTC:durationAsUTC,getActiveStream:getActiveStream,getDVRWindowSize:getDVRWindowSize,getDVRSeekOffset:getDVRSeekOffset,convertToTimeCode:convertToTimeCode,formatUTC:formatUTC,getVersion:getVersion,getDebug:getDebug,getBufferLength:getBufferLength,getTTMLRenderingDiv:getTTMLRenderingDiv,getVideoElement:getVideoElement,getSource:getSource,getCurrentLiveLatency:getCurrentLiveLatency,getTopBitrateInfoFor:getTopBitrateInfoFor,setAutoPlay:setAutoPlay,getAutoPlay:getAutoPlay,getDashMetrics:getDashMetrics,getQualityFor:getQualityFor,setQualityFor:setQualityFor,updatePortalSize:updatePortalSize,setTextDefaultLanguage:setTextDefaultLanguage,getTextDefaultLanguage:getTextDefaultLanguage,setTextDefaultEnabled:setTextDefaultEnabled,getTextDefaultEnabled:getTextDefaultEnabled,enableText:enableText,enableForcedTextStreaming:enableForcedTextStreaming,isTextEnabled:isTextEnabled,setTextTrack:setTextTrack,getBitrateInfoListFor:getBitrateInfoListFor,getStreamsFromManifest:getStreamsFromManifest,getTracksFor:getTracksFor,getTracksForTypeFromManifest:getTracksForTypeFromManifest,getCurrentTrackFor:getCurrentTrackFor,setInitialMediaSettingsFor:setInitialMediaSettingsFor,getInitialMediaSettingsFor:getInitialMediaSettingsFor,setCurrentTrack:setCurrentTrack,getTrackSwitchModeFor:getTrackSwitchModeFor,setTrackSwitchModeFor:setTrackSwitchModeFor,setSelectionModeForInitialTrack:setSelectionModeForInitialTrack,getSelectionModeForInitialTrack:getSelectionModeForInitialTrack,addABRCustomRule:addABRCustomRule,removeABRCustomRule:removeABRCustomRule,removeAllABRCustomRule:removeAllABRCustomRule,getAverageThroughput:getAverageThroughput,retrieveManifest:retrieveManifest,addUTCTimingSource:addUTCTimingSource,removeUTCTimingSource:removeUTCTimingSource,clearDefaultUTCTimingSources:clearDefaultUTCTimingSources,restoreDefaultUTCTimingSources:restoreDefaultUTCTimingSources,setXHRWithCredentialsForType:setXHRWithCredentialsForType,getXHRWithCredentialsForType:getXHRWithCredentialsForType,getProtectionController:getProtectionController,attachProtectionController:attachProtectionController,setProtectionData:setProtectionData,registerLicenseRequestFilter:registerLicenseRequestFilter,registerLicenseResponseFilter:registerLicenseResponseFilter,unregisterLicenseRequestFilter:unregisterLicenseRequestFilter,unregisterLicenseResponseFilter:unregisterLicenseResponseFilter,registerCustomCapabilitiesFilter:registerCustomCapabilitiesFilter,unregisterCustomCapabilitiesFilter:unregisterCustomCapabilitiesFilter,displayCaptionsOnTop:displayCaptionsOnTop,attachTTMLRenderingDiv:attachTTMLRenderingDiv,getCurrentTextTrackIndex:getCurrentTextTrackIndex,provideThumbnail:provideThumbnail,getDashAdapter:getDashAdapter,getOfflineController:getOfflineController,getSettings:getSettings,updateSettings:updateSettings,resetSettings:resetSettings,reset:reset,destroy:destroy};setup();return instance;}MediaPlayer.__dashjs_factory_name='MediaPlayer';var factory=_FactoryMaker2.default.getClassFactory(MediaPlayer);factory.events=_MediaPlayerEvents2.default;factory.errors=_Errors2.default;_FactoryMaker2.default.updateClassFactory(MediaPlayer.__dashjs_factory_name,factory);exports.default=factory;\\n//# sourceMappingURL=MediaPlayer.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/streaming/MediaPlayer.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/streaming/MediaPlayerEvents.js\":\n/*!***************************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/streaming/MediaPlayerEvents.js ***!\n \\***************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _EventsBase2=__webpack_require__(/*! ../core/events/EventsBase */ \\\"../node_modules/dashjs/build/es5/src/core/events/EventsBase.js\\\");var _EventsBase3=_interopRequireDefault(_EventsBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\\\"Cannot call a class as a function\\\");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError(\\\"this hasn't been initialised - super() hasn't been called\\\");}return call&&(typeof call===\\\"object\\\"||typeof call===\\\"function\\\")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!==\\\"function\\\"&&superClass!==null){throw new TypeError(\\\"Super expression must either be null or a function, not \\\"+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n *//**\\n * @class\\n * @implements EventsBase\\n */var MediaPlayerEvents=function(_EventsBase){_inherits(MediaPlayerEvents,_EventsBase);/**\\n * @description Public facing external events to be used when developing a player that implements dash.js.\\n */function MediaPlayerEvents(){_classCallCheck(this,MediaPlayerEvents);/**\\n * Triggered when playback will not start yet\\n * as the MPD's availabilityStartTime is in the future.\\n * Check delay property in payload to determine time before playback will start.\\n * @event MediaPlayerEvents#AST_IN_FUTURE\\n */var _this=_possibleConstructorReturn(this,(MediaPlayerEvents.__proto__||Object.getPrototypeOf(MediaPlayerEvents)).call(this));_this.AST_IN_FUTURE='astInFuture';/**\\n * Triggered when the video element's buffer state changes to stalled.\\n * Check mediaType in payload to determine type (Video, Audio, FragmentedText).\\n * @event MediaPlayerEvents#BUFFER_EMPTY\\n */_this.BUFFER_EMPTY='bufferStalled';/**\\n * Triggered when the video element's buffer state changes to loaded.\\n * Check mediaType in payload to determine type (Video, Audio, FragmentedText).\\n * @event MediaPlayerEvents#BUFFER_LOADED\\n */_this.BUFFER_LOADED='bufferLoaded';/**\\n * Triggered when the video element's buffer state changes, either stalled or loaded. Check payload for state.\\n * @event MediaPlayerEvents#BUFFER_LEVEL_STATE_CHANGED\\n */_this.BUFFER_LEVEL_STATE_CHANGED='bufferStateChanged';/**\\n * Triggered when a dynamic stream changed to static (transition phase between Live and On-Demand).\\n * @event MediaPlayerEvents#DYNAMIC_TO_STATIC\\n */_this.DYNAMIC_TO_STATIC='dynamicToStatic';/**\\n * Triggered when there is an error from the element or MSE source buffer.\\n * @event MediaPlayerEvents#ERROR\\n */_this.ERROR='error';/**\\n * Triggered when a fragment download has completed.\\n * @event MediaPlayerEvents#FRAGMENT_LOADING_COMPLETED\\n */_this.FRAGMENT_LOADING_COMPLETED='fragmentLoadingCompleted';/**\\n * Triggered when a partial fragment download has completed.\\n * @event MediaPlayerEvents#FRAGMENT_LOADING_PROGRESS\\n */_this.FRAGMENT_LOADING_PROGRESS='fragmentLoadingProgress';/**\\n * Triggered when a fragment download has started.\\n * @event MediaPlayerEvents#FRAGMENT_LOADING_STARTED\\n */_this.FRAGMENT_LOADING_STARTED='fragmentLoadingStarted';/**\\n * Triggered when a fragment download is abandoned due to detection of slow download base on the ABR abandon rule..\\n * @event MediaPlayerEvents#FRAGMENT_LOADING_ABANDONED\\n */_this.FRAGMENT_LOADING_ABANDONED='fragmentLoadingAbandoned';/**\\n * Triggered when {@link module:Debug} logger methods are called.\\n * @event MediaPlayerEvents#LOG\\n */_this.LOG='log';//TODO refactor with internal event\\n/**\\n * Triggered when the manifest load is complete\\n * @event MediaPlayerEvents#MANIFEST_LOADED\\n */_this.MANIFEST_LOADED='manifestLoaded';/**\\n * Triggered anytime there is a change to the overall metrics.\\n * @event MediaPlayerEvents#METRICS_CHANGED\\n */_this.METRICS_CHANGED='metricsChanged';/**\\n * Triggered when an individual metric is added, updated or cleared.\\n * @event MediaPlayerEvents#METRIC_CHANGED\\n */_this.METRIC_CHANGED='metricChanged';/**\\n * Triggered every time a new metric is added.\\n * @event MediaPlayerEvents#METRIC_ADDED\\n */_this.METRIC_ADDED='metricAdded';/**\\n * Triggered every time a metric is updated.\\n * @event MediaPlayerEvents#METRIC_UPDATED\\n */_this.METRIC_UPDATED='metricUpdated';/**\\n * Triggered at the stream end of a period.\\n * @event MediaPlayerEvents#PERIOD_SWITCH_COMPLETED\\n */_this.PERIOD_SWITCH_COMPLETED='periodSwitchCompleted';/**\\n * Triggered when a new period starts.\\n * @event MediaPlayerEvents#PERIOD_SWITCH_STARTED\\n */_this.PERIOD_SWITCH_STARTED='periodSwitchStarted';/**\\n * Triggered when an ABR up /down switch is initiated; either by user in manual mode or auto mode via ABR rules.\\n * @event MediaPlayerEvents#QUALITY_CHANGE_REQUESTED\\n */_this.QUALITY_CHANGE_REQUESTED='qualityChangeRequested';/**\\n * Triggered when the new ABR quality is being rendered on-screen.\\n * @event MediaPlayerEvents#QUALITY_CHANGE_RENDERED\\n */_this.QUALITY_CHANGE_RENDERED='qualityChangeRendered';/**\\n * Triggered when the new track is being rendered.\\n * @event MediaPlayerEvents#TRACK_CHANGE_RENDERED\\n */_this.TRACK_CHANGE_RENDERED='trackChangeRendered';/**\\n * Triggered when the source is setup and ready.\\n * @event MediaPlayerEvents#SOURCE_INITIALIZED\\n */_this.SOURCE_INITIALIZED='sourceInitialized';/**\\n * Triggered when a stream (period) is being loaded\\n * @event MediaPlayerEvents#STREAM_INITIALIZING\\n */_this.STREAM_INITIALIZING='streamInitializing';/**\\n * Triggered when a stream (period) is loaded\\n * @event MediaPlayerEvents#STREAM_UPDATED\\n */_this.STREAM_UPDATED='streamUpdated';/**\\n * Triggered when a stream (period) is updated\\n * @event MediaPlayerEvents#STREAM_INITIALIZED\\n */_this.STREAM_INITIALIZED='streamInitialized';/**\\n * Triggered when the player has been reset.\\n * @event MediaPlayerEvents#STREAM_TEARDOWN_COMPLETE\\n */_this.STREAM_TEARDOWN_COMPLETE='streamTeardownComplete';/**\\n * Triggered once all text tracks detected in the MPD are added to the video element.\\n * @event MediaPlayerEvents#TEXT_TRACKS_ADDED\\n */_this.TEXT_TRACKS_ADDED='allTextTracksAdded';/**\\n * Triggered when a text track is added to the video element's TextTrackList\\n * @event MediaPlayerEvents#TEXT_TRACK_ADDED\\n */_this.TEXT_TRACK_ADDED='textTrackAdded';/**\\n * Triggered when a ttml chunk is parsed.\\n * @event MediaPlayerEvents#TTML_PARSED\\n */_this.TTML_PARSED='ttmlParsed';/**\\n * Triggered when a ttml chunk has to be parsed.\\n * @event MediaPlayerEvents#TTML_TO_PARSE\\n */_this.TTML_TO_PARSE='ttmlToParse';/**\\n * Triggered when a caption is rendered.\\n * @event MediaPlayerEvents#CAPTION_RENDERED\\n */_this.CAPTION_RENDERED='captionRendered';/**\\n * Triggered when the caption container is resized.\\n * @event MediaPlayerEvents#CAPTION_CONTAINER_RESIZE\\n */_this.CAPTION_CONTAINER_RESIZE='captionContainerResize';/**\\n * Sent when enough data is available that the media can be played,\\n * at least for a couple of frames. This corresponds to the\\n * HAVE_ENOUGH_DATA readyState.\\n * @event MediaPlayerEvents#CAN_PLAY\\n */_this.CAN_PLAY='canPlay';/**\\n * Sent when playback completes.\\n * @event MediaPlayerEvents#PLAYBACK_ENDED\\n */_this.PLAYBACK_ENDED='playbackEnded';/**\\n * Sent when an error occurs. The element's error\\n * attribute contains more information.\\n * @event MediaPlayerEvents#PLAYBACK_ERROR\\n */_this.PLAYBACK_ERROR='playbackError';/**\\n * Sent when playback is not allowed (for example if user gesture is needed).\\n * @event MediaPlayerEvents#PLAYBACK_NOT_ALLOWED\\n */_this.PLAYBACK_NOT_ALLOWED='playbackNotAllowed';/**\\n * The media's metadata has finished loading; all attributes now\\n * contain as much useful information as they're going to.\\n * @event MediaPlayerEvents#PLAYBACK_METADATA_LOADED\\n */_this.PLAYBACK_METADATA_LOADED='playbackMetaDataLoaded';/**\\n * Sent when playback is paused.\\n * @event MediaPlayerEvents#PLAYBACK_PAUSED\\n */_this.PLAYBACK_PAUSED='playbackPaused';/**\\n * Sent when the media begins to play (either for the first time, after having been paused,\\n * or after ending and then restarting).\\n *\\n * @event MediaPlayerEvents#PLAYBACK_PLAYING\\n */_this.PLAYBACK_PLAYING='playbackPlaying';/**\\n * Sent periodically to inform interested parties of progress downloading\\n * the media. Information about the current amount of the media that has\\n * been downloaded is available in the media element's buffered attribute.\\n * @event MediaPlayerEvents#PLAYBACK_PROGRESS\\n */_this.PLAYBACK_PROGRESS='playbackProgress';/**\\n * Sent when the playback speed changes.\\n * @event MediaPlayerEvents#PLAYBACK_RATE_CHANGED\\n */_this.PLAYBACK_RATE_CHANGED='playbackRateChanged';/**\\n * Sent when a seek operation completes.\\n * @event MediaPlayerEvents#PLAYBACK_SEEKED\\n */_this.PLAYBACK_SEEKED='playbackSeeked';/**\\n * Sent when a seek operation begins.\\n * @event MediaPlayerEvents#PLAYBACK_SEEKING\\n */_this.PLAYBACK_SEEKING='playbackSeeking';/**\\n * Sent when a seek operation has been asked.\\n * @event MediaPlayerEvents#PLAYBACK_SEEK_ASKED\\n */_this.PLAYBACK_SEEK_ASKED='playbackSeekAsked';/**\\n * Sent when the video element reports stalled\\n * @event MediaPlayerEvents#PLAYBACK_STALLED\\n */_this.PLAYBACK_STALLED='playbackStalled';/**\\n * Sent when playback of the media starts after having been paused;\\n * that is, when playback is resumed after a prior pause event.\\n *\\n * @event MediaPlayerEvents#PLAYBACK_STARTED\\n */_this.PLAYBACK_STARTED='playbackStarted';/**\\n * The time indicated by the element's currentTime attribute has changed.\\n * @event MediaPlayerEvents#PLAYBACK_TIME_UPDATED\\n */_this.PLAYBACK_TIME_UPDATED='playbackTimeUpdated';/**\\n * Sent when the media playback has stopped because of a temporary lack of data.\\n *\\n * @event MediaPlayerEvents#PLAYBACK_WAITING\\n */_this.PLAYBACK_WAITING='playbackWaiting';/**\\n * Manifest validity changed - As a result of an MPD validity expiration event.\\n * @event MediaPlayerEvents#MANIFEST_VALIDITY_CHANGED\\n */_this.MANIFEST_VALIDITY_CHANGED='manifestValidityChanged';/**\\n * A gap occured in the timeline which requires a seek to the next period\\n * @event MediaPlayerEvents#GAP_CAUSED_SEEK_TO_PERIOD_END\\n */_this.GAP_CAUSED_SEEK_TO_PERIOD_END='gapCausedSeekToPeriodEnd';/**\\n * A gap occured in the timeline which requires an internal seek\\n * @event MediaPlayerEvents#GAP_CAUSED_INTERNAL_SEEK\\n */_this.GAP_CAUSED_INTERNAL_SEEK='gapCausedInternalSeek';/**\\n * Dash events are triggered at their respective start points on the timeline.\\n * @event MediaPlayerEvents#EVENT_MODE_ON_START\\n */_this.EVENT_MODE_ON_START='eventModeOnStart';/**\\n * Dash events are triggered as soon as they were parsed.\\n * @event MediaPlayerEvents#EVENT_MODE_ON_RECEIVE\\n */_this.EVENT_MODE_ON_RECEIVE='eventModeOnReceive';/**\\n * Event that is dispatched whenever the player encounters a potential conformance validation that might lead to unexpected/not optimal behavior\\n * @event MediaPlayerEvents#CONFORMANCE_VIOLATION\\n */_this.CONFORMANCE_VIOLATION='conformanceViolation';return _this;}return MediaPlayerEvents;}(_EventsBase3.default);var mediaPlayerEvents=new MediaPlayerEvents();exports.default=mediaPlayerEvents;\\n//# sourceMappingURL=MediaPlayerEvents.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/streaming/MediaPlayerEvents.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/streaming/MediaPlayerFactory.js\":\n/*!****************************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/streaming/MediaPlayerFactory.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _MediaPlayer=__webpack_require__(/*! ./MediaPlayer */ \\\"../node_modules/dashjs/build/es5/src/streaming/MediaPlayer.js\\\");var _MediaPlayer2=_interopRequireDefault(_MediaPlayer);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function MediaPlayerFactory(){/**\\n * mime-type identifier for any source content to be accepted as a dash manifest by the create() method.\\n * @type {string}\\n */var SUPPORTED_MIME_TYPE='application/dash+xml';var logger=void 0;/**\\n * A new MediaPlayer is instantiated for the supplied videoElement and optional source and context. If no context is provided,\\n * a default DashContext is used. If no source is provided, the videoElement is interrogated to extract the first source whose\\n * type is application/dash+xml.\\n * The autoplay property of the videoElement is preserved. Any preload attribute is ignored. This method should be called after the page onLoad event is dispatched.\\n * @param {HTMLMediaElement} video\\n * @param {HTMLSourceElement} source\\n * @param {Object} context\\n * @returns {MediaPlayer|null}\\n */function create(video,source,context){if(!video||!/^VIDEO$/i.test(video.nodeName))return null;if(video._dashjs_player)return video._dashjs_player;var player=void 0;var videoID=video.id||video.name||'video element';source=source||[].slice.call(video.querySelectorAll('source')).filter(function(s){return s.type==SUPPORTED_MIME_TYPE;})[0];if(!source&&video.src){source=document.createElement('source');source.src=video.src;}else if(!source&&!video.src){return null;}context=context||{};player=(0,_MediaPlayer2.default)(context).create();player.initialize(video,source.src,video.autoplay);if(!logger){logger=player.getDebug().getLogger();}logger.debug('Converted '+videoID+' to dash.js player and added content: '+source.src);// Store a reference to the player on the video element so it can be gotten at for debugging and so we know its\\n// already been setup.\\nvideo._dashjs_player=player;return player;}/**\\n * Searches the provided scope for all instances of the indicated selector. If no scope is provided, document is used. If no selector is\\n * specified, [data-dashjs-player] is used. The declarative setup also looks for source elements with the type attribute set to 'application/dash+xml'.\\n * It then looks for those video elements which have a source element defined with a type matching 'application/dash+xml'.\\n * A new MediaPlayer is instantiated for each matching video element and the appropriate source is assigned.\\n * The autoplay property of the video element is preserved. Any preload attribute is ignored. This method should be called after the page onLoad event is dispatched.\\n * Returns an array holding all the MediaPlayer instances that were added by this method.\\n * @param {string} selector - CSS selector\\n * @param {Object} scope\\n * @returns {Array} an array of MediaPlayer objects\\n */function createAll(selector,scope){var aPlayers=[];selector=selector||'[data-dashjs-player]';scope=scope||document;var videos=scope.querySelectorAll(selector);for(var i=0;istart));});//The opposite of the getChunks predicate.\\n}//Nothing async, nothing to abort.\\nfunction abort(){}function getAllBufferRanges(){var ranges=[];for(var i=0;iranges[ranges.length-1].end){ranges.push({start:chunk.start,end:chunk.end});}else{ranges[ranges.length-1].end=chunk.end;}}//Implements TimeRanges interface. So acts just like sourceBuffer.buffered.\\nvar timeranges={start:function start(n){return ranges[n].start;},end:function end(n){return ranges[n].end;}};Object.defineProperty(timeranges,'length',{get:function get(){return ranges.length;}});return timeranges;}function hasDiscontinuitiesAfter(){return false;}function updateTimestampOffset(){// Nothing to do\\n}function getBuffer(){return this;}/**\\n * Return the all chunks in the buffer the lie between times start and end.\\n * Because a chunk cannot be split, this returns the full chunk if any part of its time lies in the requested range.\\n * Chunks are removed from the buffer when they are discharged.\\n * @function PreBufferSink#discharge\\n * @param {?Number} start The start time from which to discharge from the buffer. If NaN, it is regarded as unbounded.\\n * @param {?Number} end The end time from which to discharge from the buffer. If NaN, it is regarded as unbounded.\\n * @returns {Array} The set of chunks from the buffer within the time ranges.\\n */function discharge(start,end){var result=getChunksAt(start,end);if(outstandingInit){result.push(outstandingInit);outstandingInit=null;}remove(start,end);return result;}function getChunksAt(start,end){return chunks.filter(function(a){return(isNaN(end)||a.startstart);});}function waitForUpdateEnd(callback){callback();}instance={getAllBufferRanges:getAllBufferRanges,append:append,remove:remove,abort:abort,discharge:discharge,reset:reset,updateTimestampOffset:updateTimestampOffset,hasDiscontinuitiesAfter:hasDiscontinuitiesAfter,waitForUpdateEnd:waitForUpdateEnd,getBuffer:getBuffer};setup();return instance;}PreBufferSink.__dashjs_factory_name='PreBufferSink';var factory=_FactoryMaker2.default.getClassFactory(PreBufferSink);exports.default=factory;\\n//# sourceMappingURL=PreBufferSink.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/streaming/PreBufferSink.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/streaming/SourceBufferSink.js\":\n/*!**************************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/streaming/SourceBufferSink.js ***!\n \\**************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _Debug=__webpack_require__(/*! ../core/Debug */ \\\"../node_modules/dashjs/build/es5/src/core/Debug.js\\\");var _Debug2=_interopRequireDefault(_Debug);var _DashJSError=__webpack_require__(/*! ./vo/DashJSError */ \\\"../node_modules/dashjs/build/es5/src/streaming/vo/DashJSError.js\\\");var _DashJSError2=_interopRequireDefault(_DashJSError);var _EventBus=__webpack_require__(/*! ../core/EventBus */ \\\"../node_modules/dashjs/build/es5/src/core/EventBus.js\\\");var _EventBus2=_interopRequireDefault(_EventBus);var _Events=__webpack_require__(/*! ../core/events/Events */ \\\"../node_modules/dashjs/build/es5/src/core/events/Events.js\\\");var _Events2=_interopRequireDefault(_Events);var _FactoryMaker=__webpack_require__(/*! ../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _TextController=__webpack_require__(/*! ./text/TextController */ \\\"../node_modules/dashjs/build/es5/src/streaming/text/TextController.js\\\");var _TextController2=_interopRequireDefault(_TextController);var _Errors=__webpack_require__(/*! ../core/errors/Errors */ \\\"../node_modules/dashjs/build/es5/src/core/errors/Errors.js\\\");var _Errors2=_interopRequireDefault(_Errors);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}var MAX_ALLOWED_DISCONTINUITY=0.1;// 100 milliseconds\\n/**\\n * @class SourceBufferSink\\n * @ignore\\n * @implements FragmentSink\\n *//**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */function SourceBufferSink(mediaSource,mediaInfo,onAppendedCallback,oldBuffer){var context=this.context;var eventBus=(0,_EventBus2.default)(context).getInstance();var instance=void 0,type=void 0,logger=void 0,buffer=void 0,isAppendingInProgress=void 0,intervalId=void 0;var callbacks=[];var appendQueue=[];var onAppended=onAppendedCallback;function setup(){logger=(0,_Debug2.default)(context).getInstance().getLogger(instance);isAppendingInProgress=false;type=mediaInfo.type;var codec=mediaInfo.codec;try{// Safari claims to support anything starting 'application/mp4'.\\n// it definitely doesn't understand 'application/mp4;codecs=\\\"stpp\\\"'\\n// - currently no browser does, so check for it and use our own\\n// implementation. The same is true for codecs=\\\"wvtt\\\".\\nif(codec.match(/application\\\\/mp4;\\\\s*codecs=\\\"(stpp|wvtt).*\\\"/i)){throw new Error('not really supported');}buffer=oldBuffer?oldBuffer:mediaSource.addSourceBuffer(codec);if(buffer.changeType&&oldBuffer){logger.debug('Doing period transition with changeType');buffer.changeType(codec);}updateAppendWindow();var CHECK_INTERVAL=50;// use updateend event if possible\\nif(typeof buffer.addEventListener==='function'){try{buffer.addEventListener('updateend',updateEndHandler,false);buffer.addEventListener('error',errHandler,false);buffer.addEventListener('abort',errHandler,false);}catch(err){// use setInterval to periodically check if updating has been completed\\nintervalId=setInterval(checkIsUpdateEnded,CHECK_INTERVAL);}}else{// use setInterval to periodically check if updating has been completed\\nintervalId=setInterval(checkIsUpdateEnded,CHECK_INTERVAL);}}catch(ex){// Note that in the following, the quotes are open to allow for extra text after stpp and wvtt\\nif(mediaInfo.isText||codec.indexOf('codecs=\\\"stpp')!==-1||codec.indexOf('codecs=\\\"wvtt')!==-1){var textController=(0,_TextController2.default)(context).getInstance();buffer=textController.getTextSourceBuffer();}else{throw ex;}}}function getType(){return type;}function reset(keepBuffer){if(buffer){if(typeof buffer.removeEventListener==='function'){buffer.removeEventListener('updateend',updateEndHandler,false);buffer.removeEventListener('error',errHandler,false);buffer.removeEventListener('abort',errHandler,false);}clearInterval(intervalId);callbacks=[];if(!keepBuffer){try{if(!buffer.getClassName||buffer.getClassName()!=='TextSourceBuffer'){logger.debug('Removing sourcebuffer from media source');mediaSource.removeSourceBuffer(buffer);}}catch(e){logger.error('Failed to remove source buffer from media source.');}buffer=null;}isAppendingInProgress=false;}appendQueue=[];onAppended=null;}function getBuffer(){return buffer;}function getAllBufferRanges(){try{return buffer.buffered;}catch(e){logger.error('getAllBufferRanges exception: '+e.message);return null;}}function hasDiscontinuitiesAfter(time){try{var ranges=getAllBufferRanges();if(ranges&&ranges.length>1){for(var i=0,len=ranges.length;i0){if(timeranges.end(i-1)+MAX_ALLOWED_DISCONTINUITY){return true;}}}}}catch(e){logger.error('hasDiscontinuities exception: '+e.message);}return false;}function append(chunk){if(!chunk){onAppended({chunk:chunk,error:new _DashJSError2.default(_Errors2.default.APPEND_ERROR_CODE,_Errors2.default.APPEND_ERROR_MESSAGE)});return;}appendQueue.push(chunk);if(!isAppendingInProgress){waitForUpdateEnd(appendNextInQueue.bind(this));}}function updateTimestampOffset(MSETimeOffset){if(buffer.timestampOffset!==MSETimeOffset&&!isNaN(MSETimeOffset)){waitForUpdateEnd(function(){if(MSETimeOffset<0){MSETimeOffset+=0.001;}buffer.timestampOffset=MSETimeOffset;});}}function updateAppendWindow(sInfo){if(!buffer){return;}waitForUpdateEnd(function(){try{var appendWindowEnd=mediaSource.duration;var appendWindowStart=0;if(sInfo&&!isNaN(sInfo.start)&&!isNaN(sInfo.duration)&&isFinite(sInfo.duration)){appendWindowEnd=sInfo.start+sInfo.duration;}if(sInfo&&!isNaN(sInfo.start)){appendWindowStart=sInfo.start;}buffer.appendWindowStart=0;buffer.appendWindowEnd=appendWindowEnd;buffer.appendWindowStart=appendWindowStart;logger.debug('Updated append window. Set start to '+buffer.appendWindowStart+' and end to '+buffer.appendWindowEnd);}catch(e){logger.warn('Failed to set append window');}});}function remove(start,end,forceRemoval){var sourceBufferSink=this;// make sure that the given time range is correct. Otherwise we will get InvalidAccessError\\nwaitForUpdateEnd(function(){try{if(start>=0&&end>start&&(forceRemoval||mediaSource.readyState!=='ended')){buffer.remove(start,end);}// updating is in progress, we should wait for it to complete before signaling that this operation is done\\nwaitForUpdateEnd(function(){eventBus.trigger(_Events2.default.SOURCEBUFFER_REMOVE_COMPLETED,{buffer:sourceBufferSink,from:start,to:end,unintended:false});});}catch(err){eventBus.trigger(_Events2.default.SOURCEBUFFER_REMOVE_COMPLETED,{buffer:sourceBufferSink,from:start,to:end,unintended:false,error:new _DashJSError2.default(err.code,err.message)});}});}function appendNextInQueue(){var sourceBufferSink=this;if(appendQueue.length>0){isAppendingInProgress=true;var nextChunk=appendQueue[0];appendQueue.splice(0,1);var oldRanges=[];var afterSuccess=function afterSuccess(){// Safari sometimes drops a portion of a buffer after appending. Handle these situations here\\nvar newRanges=getAllBufferRanges();checkBufferGapsAfterAppend(sourceBufferSink,oldRanges,newRanges,nextChunk);if(appendQueue.length>0){appendNextInQueue.call(this);}else{isAppendingInProgress=false;if(onAppended){onAppended({chunk:nextChunk});}}};try{if(nextChunk.bytes.length===0){afterSuccess.call(this);}else{oldRanges=getAllBufferRanges();if(buffer.appendBuffer){buffer.appendBuffer(nextChunk.bytes);}else{buffer.append(nextChunk.bytes,nextChunk);}// updating is in progress, we should wait for it to complete before signaling that this operation is done\\nwaitForUpdateEnd(afterSuccess.bind(this));}}catch(err){logger.fatal('SourceBuffer append failed \\\"'+err+'\\\"');if(appendQueue.length>0){appendNextInQueue();}else{isAppendingInProgress=false;}if(onAppended){onAppended({chunk:nextChunk,error:new _DashJSError2.default(err.code,err.message)});}}}}function checkBufferGapsAfterAppend(buffer,oldRanges,newRanges,chunk){if(oldRanges&&oldRanges.length>0&&oldRanges.length=start&&chunk.end<=end){return true;}}return false;}function abort(){try{if(mediaSource.readyState==='open'){buffer.abort();}else if(buffer.setTextTrack&&mediaSource.readyState==='ended'){buffer.abort();//The cues need to be removed from the TextSourceBuffer via a call to abort()\\n}}catch(ex){logger.error('SourceBuffer append abort failed: \\\"'+ex+'\\\"');}appendQueue=[];}function executeCallback(){if(callbacks.length>0){var cb=callbacks.shift();if(buffer.updating){waitForUpdateEnd(cb);}else{cb();// Try to execute next callback if still not updating\\nexecuteCallback();}}}function checkIsUpdateEnded(){// if updating is still in progress do nothing and wait for the next check again.\\nif(buffer.updating)return;// updating is completed, now we can stop checking and resolve the promise\\nexecuteCallback();}function updateEndHandler(){if(buffer.updating)return;executeCallback();}function errHandler(){logger.error('SourceBufferSink error');}function waitForUpdateEnd(callback){callbacks.push(callback);if(!buffer.updating){executeCallback();}}instance={getType:getType,getAllBufferRanges:getAllBufferRanges,getBuffer:getBuffer,append:append,remove:remove,abort:abort,reset:reset,updateTimestampOffset:updateTimestampOffset,hasDiscontinuitiesAfter:hasDiscontinuitiesAfter,waitForUpdateEnd:waitForUpdateEnd,updateAppendWindow:updateAppendWindow};setup();return instance;}SourceBufferSink.__dashjs_factory_name='SourceBufferSink';var factory=_FactoryMaker2.default.getClassFactory(SourceBufferSink);exports.default=factory;\\n//# sourceMappingURL=SourceBufferSink.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/streaming/SourceBufferSink.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/streaming/Stream.js\":\n/*!****************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/streaming/Stream.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _Constants=__webpack_require__(/*! ./constants/Constants */ \\\"../node_modules/dashjs/build/es5/src/streaming/constants/Constants.js\\\");var _Constants2=_interopRequireDefault(_Constants);var _DashConstants=__webpack_require__(/*! ../dash/constants/DashConstants */ \\\"../node_modules/dashjs/build/es5/src/dash/constants/DashConstants.js\\\");var _DashConstants2=_interopRequireDefault(_DashConstants);var _StreamProcessor=__webpack_require__(/*! ./StreamProcessor */ \\\"../node_modules/dashjs/build/es5/src/streaming/StreamProcessor.js\\\");var _StreamProcessor2=_interopRequireDefault(_StreamProcessor);var _FragmentController=__webpack_require__(/*! ./controllers/FragmentController */ \\\"../node_modules/dashjs/build/es5/src/streaming/controllers/FragmentController.js\\\");var _FragmentController2=_interopRequireDefault(_FragmentController);var _ThumbnailController=__webpack_require__(/*! ./thumbnail/ThumbnailController */ \\\"../node_modules/dashjs/build/es5/src/streaming/thumbnail/ThumbnailController.js\\\");var _ThumbnailController2=_interopRequireDefault(_ThumbnailController);var _EventBus=__webpack_require__(/*! ../core/EventBus */ \\\"../node_modules/dashjs/build/es5/src/core/EventBus.js\\\");var _EventBus2=_interopRequireDefault(_EventBus);var _Events=__webpack_require__(/*! ../core/events/Events */ \\\"../node_modules/dashjs/build/es5/src/core/events/Events.js\\\");var _Events2=_interopRequireDefault(_Events);var _Debug=__webpack_require__(/*! ../core/Debug */ \\\"../node_modules/dashjs/build/es5/src/core/Debug.js\\\");var _Debug2=_interopRequireDefault(_Debug);var _Errors=__webpack_require__(/*! ../core/errors/Errors */ \\\"../node_modules/dashjs/build/es5/src/core/errors/Errors.js\\\");var _Errors2=_interopRequireDefault(_Errors);var _FactoryMaker=__webpack_require__(/*! ../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _DashJSError=__webpack_require__(/*! ./vo/DashJSError */ \\\"../node_modules/dashjs/build/es5/src/streaming/vo/DashJSError.js\\\");var _DashJSError2=_interopRequireDefault(_DashJSError);var _BoxParser=__webpack_require__(/*! ./utils/BoxParser */ \\\"../node_modules/dashjs/build/es5/src/streaming/utils/BoxParser.js\\\");var _BoxParser2=_interopRequireDefault(_BoxParser);var _URLUtils=__webpack_require__(/*! ./utils/URLUtils */ \\\"../node_modules/dashjs/build/es5/src/streaming/utils/URLUtils.js\\\");var _URLUtils2=_interopRequireDefault(_URLUtils);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function Stream(config){config=config||{};var context=this.context;var eventBus=(0,_EventBus2.default)(context).getInstance();var urlUtils=(0,_URLUtils2.default)(context).getInstance();var manifestModel=config.manifestModel;var mediaPlayerModel=config.mediaPlayerModel;var manifestUpdater=config.manifestUpdater;var adapter=config.adapter;var capabilities=config.capabilities;var capabilitiesFilter=config.capabilitiesFilter;var errHandler=config.errHandler;var timelineConverter=config.timelineConverter;var dashMetrics=config.dashMetrics;var abrController=config.abrController;var playbackController=config.playbackController;var eventController=config.eventController;var mediaController=config.mediaController;var textController=config.textController;var protectionController=config.protectionController;var videoModel=config.videoModel;var settings=config.settings;var streamInfo=config.streamInfo;var instance=void 0,logger=void 0,streamProcessors=void 0,isStreamInitialized=void 0,isStreamActivated=void 0,isMediaInitialized=void 0,hasVideoTrack=void 0,hasAudioTrack=void 0,updateError=void 0,isUpdating=void 0,fragmentController=void 0,thumbnailController=void 0,preloaded=void 0,boxParser=void 0,preloadingScheduled=void 0,debug=void 0,isEndedEventSignaled=void 0,trackChangedEvent=void 0;function setup(){debug=(0,_Debug2.default)(context).getInstance();logger=debug.getLogger(instance);resetInitialSettings();boxParser=(0,_BoxParser2.default)(context).getInstance();fragmentController=(0,_FragmentController2.default)(context).create({streamInfo:streamInfo,mediaPlayerModel:mediaPlayerModel,dashMetrics:dashMetrics,errHandler:errHandler,settings:settings,boxParser:boxParser,dashConstants:_DashConstants2.default,urlUtils:urlUtils});}function initialize(){registerEvents();registerProtectionEvents();eventBus.trigger(_Events2.default.STREAM_UPDATED,{streamInfo:streamInfo});}function registerEvents(){eventBus.on(_Events2.default.BUFFERING_COMPLETED,onBufferingCompleted,instance);eventBus.on(_Events2.default.DATA_UPDATE_COMPLETED,onDataUpdateCompleted,instance);eventBus.on(_Events2.default.INBAND_EVENTS,onInbandEvents,instance);}function unRegisterEvents(){eventBus.off(_Events2.default.DATA_UPDATE_COMPLETED,onDataUpdateCompleted,instance);eventBus.off(_Events2.default.BUFFERING_COMPLETED,onBufferingCompleted,instance);eventBus.off(_Events2.default.INBAND_EVENTS,onInbandEvents,instance);}function registerProtectionEvents(){if(protectionController){eventBus.on(_Events2.default.KEY_ERROR,onProtectionError,instance);eventBus.on(_Events2.default.SERVER_CERTIFICATE_UPDATED,onProtectionError,instance);eventBus.on(_Events2.default.LICENSE_REQUEST_COMPLETE,onProtectionError,instance);eventBus.on(_Events2.default.KEY_SYSTEM_SELECTED,onProtectionError,instance);eventBus.on(_Events2.default.KEY_SESSION_CREATED,onProtectionError,instance);eventBus.on(_Events2.default.KEY_STATUSES_CHANGED,onProtectionError,instance);}}function unRegisterProtectionEvents(){if(protectionController){eventBus.off(_Events2.default.KEY_ERROR,onProtectionError,instance);eventBus.off(_Events2.default.SERVER_CERTIFICATE_UPDATED,onProtectionError,instance);eventBus.off(_Events2.default.LICENSE_REQUEST_COMPLETE,onProtectionError,instance);eventBus.off(_Events2.default.KEY_SYSTEM_SELECTED,onProtectionError,instance);eventBus.off(_Events2.default.KEY_SESSION_CREATED,onProtectionError,instance);eventBus.off(_Events2.default.KEY_STATUSES_CHANGED,onProtectionError,instance);}}function getStreamId(){return streamInfo?streamInfo.id:null;}/**\\n * Activates Stream by re-initializing some of its components\\n * @param {MediaSource} mediaSource\\n * @memberof Stream#\\n * @param {SourceBuffer} previousBuffers\\n */function activate(mediaSource,previousBuffers){if(!isStreamActivated){var result=void 0;eventBus.on(_Events2.default.CURRENT_TRACK_CHANGED,onCurrentTrackChanged,instance);if(!getPreloaded()){result=initializeMedia(mediaSource,previousBuffers);}else{initializeAfterPreload();result=previousBuffers;}isStreamActivated=true;return result;}return previousBuffers;}/**\\n * Partially resets some of the Stream elements\\n * @memberof Stream#\\n * @param {boolean} keepBuffers\\n */function deactivate(keepBuffers){var ln=streamProcessors?streamProcessors.length:0;var errored=false;for(var i=0;i1&&arguments[1]!==undefined?arguments[1]:null;return compareCodecs(newStream,_Constants2.default.VIDEO,previousStream)&&compareCodecs(newStream,_Constants2.default.AUDIO,previousStream);}function isProtectionCompatible(stream){var previousStream=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;return compareProtectionConfig(stream,_Constants2.default.VIDEO,previousStream)&&compareProtectionConfig(stream,_Constants2.default.AUDIO,previousStream);}function compareProtectionConfig(stream,type){var previousStream=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;if(!stream){return false;}var newStreamInfo=stream.getStreamInfo();var currentStreamInfo=previousStream?previousStream.getStreamInfo():getStreamInfo();if(!newStreamInfo||!currentStreamInfo){return false;}var newAdaptation=adapter.getAdaptationForType(newStreamInfo.index,type,newStreamInfo);var currentAdaptation=adapter.getAdaptationForType(currentStreamInfo.index,type,currentStreamInfo);if(!newAdaptation||!currentAdaptation){// If there is no adaptation for neither the old or the new stream they're compatible\\nreturn!newAdaptation&&!currentAdaptation;}// If the current period is unencrypted and the upcoming one is encrypted we need to reset sourcebuffers.\\nreturn!(!isAdaptationDrmProtected(currentAdaptation)&&isAdaptationDrmProtected(newAdaptation));}function isAdaptationDrmProtected(adaptation){if(!adaptation){// If there is no adaptation for neither the old or the new stream they're compatible\\nreturn false;}// If the current period is unencrypted and the upcoming one is encrypted we need to reset sourcebuffers.\\nreturn!!(adaptation.ContentProtection||adaptation.Representation&&adaptation.Representation.length>0&&adaptation.Representation[0].ContentProtection);}function compareCodecs(newStream,type){var previousStream=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;if(!newStream||!newStream.hasOwnProperty('getStreamInfo')){return false;}var newStreamInfo=newStream.getStreamInfo();var currentStreamInfo=previousStream?previousStream.getStreamInfo():getStreamInfo();if(!newStreamInfo||!currentStreamInfo){return false;}var newAdaptation=adapter.getAdaptationForType(newStreamInfo.index,type,newStreamInfo);var currentAdaptation=adapter.getAdaptationForType(currentStreamInfo.index,type,currentStreamInfo);if(!newAdaptation||!currentAdaptation){// If there is no adaptation for neither the old or the new stream they're compatible\\nreturn!newAdaptation&&!currentAdaptation;}var sameMimeType=newAdaptation&¤tAdaptation&&newAdaptation.mimeType===currentAdaptation.mimeType;var oldCodecs=currentAdaptation.Representation_asArray.map(function(representation){return representation.codecs;});var newCodecs=newAdaptation.Representation_asArray.map(function(representation){return representation.codecs;});var codecMatch=newCodecs.some(function(newCodec){return oldCodecs.indexOf(newCodec)>-1;});var partialCodecMatch=newCodecs.some(function(newCodec){return oldCodecs.some(function(oldCodec){return capabilities.codecRootCompatibleWithCodec(oldCodec,newCodec);});});return codecMatch||partialCodecMatch&&sameMimeType;}function setPreloaded(value){preloaded=value;}function getPreloaded(){return preloaded;}function preload(mediaSource,previousBuffers){if(!getPreloaded()){addInlineEvents();initializeMediaForType(_Constants2.default.VIDEO,mediaSource);initializeMediaForType(_Constants2.default.AUDIO,mediaSource);initializeMediaForType(_Constants2.default.TEXT,mediaSource);initializeMediaForType(_Constants2.default.FRAGMENTED_TEXT,mediaSource);initializeMediaForType(_Constants2.default.EMBEDDED_TEXT,mediaSource);initializeMediaForType(_Constants2.default.MUXED,mediaSource);initializeMediaForType(_Constants2.default.IMAGE,mediaSource);createBuffers(previousBuffers);eventBus.on(_Events2.default.CURRENT_TRACK_CHANGED,onCurrentTrackChanged,instance);for(var i=0;iplaybackController.getTime()){bufferingTime=e.from;bufferPruned=true;}}function onQuotaExceeded(e){bufferingTime=e.quotaExceededTime;bufferPruned=true;}function addDVRMetric(){var manifestInfo=streamInfo.manifestInfo;var isDynamic=manifestInfo.isDynamic;var range=timelineConverter.calcSegmentAvailabilityRange(representationController.getCurrentRepresentation(),isDynamic);dashMetrics.addDVRInfo(getType(),playbackController.getTime(),manifestInfo,range);}function getRepresentationController(){return representationController;}function getBuffer(){return bufferController?bufferController.getBuffer():null;}function setBuffer(buffer){bufferController.setBuffer(buffer);}function getBufferController(){return bufferController;}function getFragmentModel(){return fragmentModel;}function updateStreamInfo(newStreamInfo){streamInfo=newStreamInfo;if(settings.get().streaming.useAppendWindow){bufferController.updateAppendWindow();}}function getStreamInfo(){return streamInfo;}function selectMediaInfo(newMediaInfo){if(newMediaInfo!==mediaInfo&&(!newMediaInfo||!mediaInfo||newMediaInfo.type===mediaInfo.type)){mediaInfo=newMediaInfo;}var newRealAdaptation=adapter.getRealAdaptation(streamInfo,mediaInfo);var voRepresentations=adapter.getVoRepresentations(mediaInfo);if(representationController){var realAdaptation=representationController.getData();var maxQuality=abrController.getTopQualityIndexFor(type,streamInfo.id);var minIdx=abrController.getMinAllowedIndexFor(type);var quality=void 0,averageThroughput=void 0;var bitrate=null;if((realAdaptation===null||realAdaptation.id!=newRealAdaptation.id)&&type!==_Constants2.default.FRAGMENTED_TEXT){averageThroughput=abrController.getThroughputHistory().getAverageThroughput(type);bitrate=averageThroughput||abrController.getInitialBitrateFor(type);quality=abrController.getQualityForBitrate(mediaInfo,bitrate);}else{quality=abrController.getQualityFor(type);}if(minIdx!==undefined&&qualitymaxQuality){quality=maxQuality;}indexHandler.setMimeType(mediaInfo?mediaInfo.mimeType:null);representationController.updateData(newRealAdaptation,voRepresentations,type,quality);}}function addMediaInfo(newMediaInfo,selectNewMediaInfo){if(mediaInfoArr.indexOf(newMediaInfo)===-1){mediaInfoArr.push(newMediaInfo);}if(selectNewMediaInfo){this.selectMediaInfo(newMediaInfo);}}function getMediaInfoArr(){return mediaInfoArr;}function getMediaInfo(){return mediaInfo;}function getMediaSource(){return bufferController.getMediaSource();}function setMediaSource(mediaSource){bufferController.setMediaSource(mediaSource,getMediaInfoArr());}function dischargePreBuffer(){bufferController.dischargePreBuffer();}function getScheduleController(){return scheduleController;}/**\\n * Get a specific voRepresentation. If quality parameter is defined, this function will return the voRepresentation for this quality.\\n * Otherwise, this function will return the current voRepresentation used by the representationController.\\n * @param {number} quality - quality index of the voRepresentaion expected.\\n */function getRepresentationInfo(quality){var voRepresentation=void 0;if(quality!==undefined){(0,_SupervisorTools.checkInteger)(quality);voRepresentation=representationController?representationController.getRepresentationForQuality(quality):null;}else{voRepresentation=representationController?representationController.getCurrentRepresentation():null;}return adapter.convertDataToRepresentationInfo(voRepresentation);}function isBufferingCompleted(){return bufferController?bufferController.getIsBufferingCompleted():false;}function getBufferLevel(){return bufferController?bufferController.getBufferLevel():0;}function onInitFragmentNeeded(e){// Event propagation may have been stopped (see MssHandler)\\nif(!e.sender)return;if(adapter.getIsTextTrack(mimeType)&&!textController.isTextEnabled())return;if(bufferController&&e.representationId){if(!bufferController.appendInitSegment(e.representationId)){// Init segment not in cache, send new request\\nvar request=indexHandler?indexHandler.getInitRequest(getMediaInfo(),representationController.getCurrentRepresentation()):null;scheduleController.processInitRequest(request);}}}function onMediaFragmentNeeded(e){var request=void 0;// Don't schedule next fragments while pruning to avoid buffer inconsistencies\\nif(!bufferController.getIsPruningInProgress()){request=findNextRequest(e.seekTarget,e.replacement);if(request){scheduleController.setSeekTarget(NaN);if(!e.replacement){if(!isNaN(request.startTime+request.duration)){bufferingTime=request.startTime+request.duration;}request.delayLoadingTime=new Date().getTime()+scheduleController.getTimeToLoadDelay();scheduleController.setTimeToLoadDelay(0);}}}scheduleController.processMediaRequest(request);}/**\\n * Probe the next request. This is used in the CMCD model to get information about the upcoming request. Note: No actual request is performed here.\\n * @return {FragmentRequest|null}\\n */function probeNextRequest(){var representationInfo=getRepresentationInfo();var representation=representationController&&representationInfo?representationController.getRepresentationForQuality(representationInfo.quality):null;var request=indexHandler.getNextSegmentRequestIdempotent(getMediaInfo(),representation);return request;}function findNextRequest(seekTarget,requestToReplace){var representationInfo=getRepresentationInfo();var hasSeekTarget=!isNaN(seekTarget);var currentTime=playbackController.getNormalizedTime();var time=hasSeekTarget?seekTarget:bufferingTime;var bufferIsDivided=false;var request=void 0;if(isNaN(time)||getType()===_Constants2.default.FRAGMENTED_TEXT&&!textController.isTextEnabled()){return null;}/**\\n * This is critical for IE/Safari/EDGE\\n * */if(bufferController){var range=bufferController.getRangeAt(time);var playingRange=bufferController.getRangeAt(currentTime);if((range!==null||playingRange!==null)&&!hasSeekTarget){if(!range||playingRange&&playingRange.start!=range.start&&playingRange.end!=range.end){var hasDiscontinuities=bufferController.getBuffer().hasDiscontinuitiesAfter(currentTime);if(hasDiscontinuities&&getType()!==_Constants2.default.FRAGMENTED_TEXT){fragmentModel.removeExecutedRequestsAfterTime(playingRange.end);bufferIsDivided=true;}}}}if(requestToReplace){time=requestToReplace.startTime+requestToReplace.duration/2;request=getFragmentRequest(representationInfo,time,{timeThreshold:0,ignoreIsFinished:true});}else{// Use time just whenever is strictly needed\\nvar useTime=hasSeekTarget||bufferPruned||bufferIsDivided;request=getFragmentRequest(representationInfo,useTime?time:undefined,{keepIdx:!useTime});bufferPruned=false;// Then, check if this request was downloaded or not\\nwhile(request&&request.action!==_FragmentRequest2.default.ACTION_COMPLETE&&fragmentModel.isFragmentLoaded(request)){// loop until we found not loaded fragment, or no fragment\\nrequest=getFragmentRequest(representationInfo);}}return request;}function onMediaFragmentLoaded(e){var chunk=e.chunk;var bytes=chunk.bytes;var quality=chunk.quality;var currentRepresentation=getRepresentationInfo(quality);var voRepresentation=representationController&¤tRepresentation?representationController.getRepresentationForQuality(currentRepresentation.quality):null;var eventStreamMedia=adapter.getEventsFor(currentRepresentation.mediaInfo);var eventStreamTrack=adapter.getEventsFor(currentRepresentation,voRepresentation);if(eventStreamMedia&&eventStreamMedia.length>0||eventStreamTrack&&eventStreamTrack.length>0){var request=fragmentModel.getRequests({state:_FragmentModel2.default.FRAGMENT_MODEL_EXECUTED,quality:quality,index:chunk.index})[0];var events=handleInbandEvents(bytes,request,eventStreamMedia,eventStreamTrack);eventBus.trigger(_Events2.default.INBAND_EVENTS,{events:events},{streamId:streamInfo.id});}}function handleInbandEvents(data,request,mediaInbandEvents,trackInbandEvents){try{var eventStreams={};var events=[];/* Extract the possible schemeIdUri : If a DASH client detects an event message box with a scheme that is not defined in MPD, the client is expected to ignore it */var inbandEvents=mediaInbandEvents.concat(trackInbandEvents);for(var i=0,ln=inbandEvents.length;i-1){var representation=adapter.getAdaptationForType(0,type).Representation;if(Array.isArray(representation)){var repIdx=Math.max(Math.round(representation.length*configRatio)-1,0);configBitrate=representation[repIdx].bandwidth;}else{configBitrate=0;}}else if(!isNaN(savedBitrate)){configBitrate=savedBitrate;}else{configBitrate=type===_Constants2.default.VIDEO?DEFAULT_VIDEO_BITRATE:DEFAULT_AUDIO_BITRATE;}}return configBitrate;}function getMaxAllowedBitrateFor(type){return settings.get().streaming.abr.maxBitrate[type];}function getMinAllowedBitrateFor(type){return settings.get().streaming.abr.minBitrate[type];}function getMaxAllowedIndexFor(type){var maxBitrate=getMaxAllowedBitrateFor(type);if(maxBitrate>-1){return getQualityForBitrate(streamProcessorDict[type].getMediaInfo(),maxBitrate);}else{return undefined;}}function getMinAllowedIndexFor(type){var minBitrate=getMinAllowedBitrateFor(type);if(minBitrate>-1){var mediaInfo=streamProcessorDict[type].getMediaInfo();var bitrateList=getBitrateList(mediaInfo);// This returns the quality index <= for the given bitrate\\nvar minIdx=getQualityForBitrate(mediaInfo,minBitrate);if(bitrateList[minIdx]&&minIdx_SwitchRequest2.default.NO_CHANGE?newQuality:oldQuality)topQualityIdx){newQuality=topQualityIdx;}switchHistoryDict[type].push({oldValue:oldQuality,newValue:newQuality});if(newQuality>_SwitchRequest2.default.NO_CHANGE&&newQuality!=oldQuality){if(abandonmentStateDict[type].state===_MetricsConstants2.default.ALLOW_LOAD||newQuality>oldQuality){changeQuality(type,oldQuality,newQuality,topQualityIdx,switchRequest.reason);}}else if(settings.get().debug.logLevel===_Debug2.default.LOG_LEVEL_DEBUG){var bufferLevel=dashMetrics.getCurrentBufferLevel(type,true);logger.debug('['+type+'] stay on '+oldQuality+'/'+topQualityIdx+' (buffer: '+bufferLevel+')');}}}}function setPlaybackQuality(type,streamInfo,newQuality,reason){var id=streamInfo.id;var oldQuality=getQualityFor(type);(0,_SupervisorTools.checkInteger)(newQuality);var topQualityIdx=getTopQualityIndexFor(type,id);if(newQuality!==oldQuality&&newQuality>=0&&newQuality<=topQualityIdx){changeQuality(type,oldQuality,newQuality,topQualityIdx,reason);}}function changeQuality(type,oldQuality,newQuality,topQualityIdx,reason){if(type&&streamProcessorDict[type]){var streamInfo=streamProcessorDict[type].getStreamInfo();var id=streamInfo?streamInfo.id:null;if(settings.get().debug.logLevel===_Debug2.default.LOG_LEVEL_DEBUG){var bufferLevel=dashMetrics.getCurrentBufferLevel(type);logger.info('['+type+'] switch from '+oldQuality+' to '+newQuality+'/'+topQualityIdx+' (buffer: '+bufferLevel+') '+(reason?JSON.stringify(reason):'.'));}setQualityFor(type,id,newQuality);eventBus.trigger(_Events2.default.QUALITY_CHANGE_REQUESTED,{oldQuality:oldQuality,newQuality:newQuality,reason:reason},{streamId:streamInfo.id,mediaType:type});var bitrate=throughputHistory.getAverageThroughput(type);if(!isNaN(bitrate)){domStorage.setSavedBitrateSettings(type,bitrate);}}}function setAbandonmentStateFor(type,state){abandonmentStateDict[type].state=state;}function getAbandonmentStateFor(type){return abandonmentStateDict[type]?abandonmentStateDict[type].state:null;}/**\\n * @param {MediaInfo} mediaInfo\\n * @param {number} bitrate A bitrate value, kbps\\n * @param {number} latency Expected latency of connection, ms\\n * @returns {number} A quality index <= for the given bitrate\\n * @memberof AbrController#\\n */function getQualityForBitrate(mediaInfo,bitrate,latency){var voRepresentation=mediaInfo&&mediaInfo.type?streamProcessorDict[mediaInfo.type].getRepresentationInfo():null;if(settings.get().streaming.abr.useDeadTimeLatency&&latency&&voRepresentation&&voRepresentation.fragmentDuration){latency=latency/1000;var fragmentDuration=voRepresentation.fragmentDuration;if(latency>fragmentDuration){return 0;}else{var deadTimeRatio=latency/fragmentDuration;bitrate=bitrate*(1-deadTimeRatio);}}var bitrateList=getBitrateList(mediaInfo);for(var i=bitrateList.length-1;i>=0;i--){var bitrateInfo=bitrateList[i];if(bitrate*1000>=bitrateInfo.bitrate){return i;}}return QUALITY_DEFAULT;}/**\\n * @param {MediaInfo} mediaInfo\\n * @returns {Array|null} A list of {@link BitrateInfo} objects\\n * @memberof AbrController#\\n */function getBitrateList(mediaInfo){var infoList=[];if(!mediaInfo||!mediaInfo.bitrateList)return infoList;var bitrateList=mediaInfo.bitrateList;var type=mediaInfo.type;var bitrateInfo=void 0;for(var i=0,ln=bitrateList.length;i(useBufferABR?switchOffThreshold:switchOnThreshold);// use hysteresis to avoid oscillating rules\\nisUsingBufferOccupancyABRDict[mediaType]=newUseBufferABR;if(newUseBufferABR!==useBufferABR){if(newUseBufferABR){logger.info('['+mediaType+'] switching from throughput to buffer occupancy ABR rule (buffer: '+bufferLevel.toFixed(3)+').');}else{logger.info('['+mediaType+'] switching from buffer occupancy to throughput ABR rule (buffer: '+bufferLevel.toFixed(3)+').');}}}function useBufferOccupancyABR(mediaType){return isUsingBufferOccupancyABRDict[mediaType];}function useL2AABR(mediaType){return isUsingL2AABRDict[mediaType];}function useLoLPABR(mediaType){return isUsingLoLPBRDict[mediaType];}function getThroughputHistory(){return throughputHistory;}function updateTopQualityIndex(mediaInfo){var type=mediaInfo.type;var streamId=mediaInfo.streamInfo.id;var max=mediaInfo.representationCount-1;setTopQualityIndex(type,streamId,max);return max;}function isPlayingAtTopQuality(streamInfo){var streamId=streamInfo?streamInfo.id:null;var audioQuality=getQualityFor(_Constants2.default.AUDIO);var videoQuality=getQualityFor(_Constants2.default.VIDEO);var isAtTop=audioQuality===getTopQualityIndexFor(_Constants2.default.AUDIO,streamId)&&videoQuality===getTopQualityIndexFor(_Constants2.default.VIDEO,streamId);return isAtTop;}function getQualityFor(type){if(type&&streamProcessorDict[type]){var streamInfo=streamProcessorDict[type].getStreamInfo();var id=streamInfo?streamInfo.id:null;var quality=void 0;if(id){qualityDict[id]=qualityDict[id]||{};if(!qualityDict[id].hasOwnProperty(type)){qualityDict[id][type]=QUALITY_DEFAULT;}quality=qualityDict[id][type];return quality;}}return QUALITY_DEFAULT;}function setQualityFor(type,id,value){qualityDict[id]=qualityDict[id]||{};qualityDict[id][type]=value;}function setTopQualityIndex(type,id,value){topQualities[id]=topQualities[id]||{};topQualities[id][type]=value;}function checkMaxBitrate(idx,type){var newIdx=idx;if(!streamProcessorDict[type]){return newIdx;}var minIdx=getMinAllowedIndexFor(type);if(minIdx!==undefined){newIdx=Math.max(idx,minIdx);}var maxIdx=getMaxAllowedIndexFor(type);if(maxIdx!==undefined){newIdx=Math.min(newIdx,maxIdx);}return newIdx;}function checkMaxRepresentationRatio(idx,type,maxIdx){var maxRepresentationRatio=settings.get().streaming.abr.maxRepresentationRatio[type];if(isNaN(maxRepresentationRatio)||maxRepresentationRatio>=1||maxRepresentationRatio<0){return idx;}return Math.min(idx,Math.round(maxIdx*maxRepresentationRatio));}function setWindowResizeEventCalled(value){windowResizeEventCalled=value;}function setElementSize(){if(videoModel){var hasPixelRatio=settings.get().streaming.abr.usePixelRatioInLimitBitrateByPortal&&window.hasOwnProperty('devicePixelRatio');var pixelRatio=hasPixelRatio?window.devicePixelRatio:1;elementWidth=videoModel.getClientWidth()*pixelRatio;elementHeight=videoModel.getClientHeight()*pixelRatio;}}function checkPortalSize(idx,type){if(type!==_Constants2.default.VIDEO||!settings.get().streaming.abr.limitBitrateByPortal||!streamProcessorDict[type]){return idx;}if(!windowResizeEventCalled){setElementSize();}var representation=adapter.getAdaptationForType(0,type).Representation;var newIdx=idx;if(elementWidth>0&&elementHeight>0){while(newIdx>0&&representation[newIdx]&&elementWidth_SwitchRequest2.default.NO_CHANGE){var fragmentModel=streamProcessor.getFragmentModel();var request=fragmentModel.getRequests({state:_FragmentModel2.default.FRAGMENT_MODEL_LOADING,index:e.request.index})[0];if(request){//TODO Check if we should abort or if better to finish download. check bytesLoaded/Total\\nfragmentModel.abortRequests();setAbandonmentStateFor(type,_MetricsConstants2.default.ABANDON_LOAD);switchHistoryDict[type].reset();switchHistoryDict[type].push({oldValue:getQualityFor(type),newValue:switchRequest.quality,confidence:1,reason:switchRequest.reason});setPlaybackQuality(type,streamController.getActiveStreamInfo(),switchRequest.quality,switchRequest.reason);clearTimeout(abandonmentTimeout);abandonmentTimeout=setTimeout(function(){setAbandonmentStateFor(type,_MetricsConstants2.default.ALLOW_LOAD);abandonmentTimeout=null;},settings.get().streaming.abandonLoadTimeout);}}}}instance={isPlayingAtTopQuality:isPlayingAtTopQuality,updateTopQualityIndex:updateTopQualityIndex,getThroughputHistory:getThroughputHistory,getBitrateList:getBitrateList,getQualityForBitrate:getQualityForBitrate,getTopBitrateInfoFor:getTopBitrateInfoFor,getMaxAllowedIndexFor:getMaxAllowedIndexFor,getMinAllowedIndexFor:getMinAllowedIndexFor,getInitialBitrateFor:getInitialBitrateFor,getQualityFor:getQualityFor,getAbandonmentStateFor:getAbandonmentStateFor,setPlaybackQuality:setPlaybackQuality,checkPlaybackQuality:checkPlaybackQuality,getTopQualityIndexFor:getTopQualityIndexFor,setElementSize:setElementSize,setWindowResizeEventCalled:setWindowResizeEventCalled,createAbrRulesCollection:createAbrRulesCollection,registerStreamType:registerStreamType,unRegisterStreamType:unRegisterStreamType,setConfig:setConfig,reset:reset};setup();return instance;}AbrController.__dashjs_factory_name='AbrController';var factory=_FactoryMaker2.default.getSingletonFactory(AbrController);factory.QUALITY_DEFAULT=QUALITY_DEFAULT;_FactoryMaker2.default.updateSingletonFactory(AbrController.__dashjs_factory_name,factory);exports.default=factory;\\n//# sourceMappingURL=AbrController.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/streaming/controllers/AbrController.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/streaming/controllers/BaseURLController.js\":\n/*!***************************************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/streaming/controllers/BaseURLController.js ***!\n \\***************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _BaseURLTreeModel=__webpack_require__(/*! ../models/BaseURLTreeModel */ \\\"../node_modules/dashjs/build/es5/src/streaming/models/BaseURLTreeModel.js\\\");var _BaseURLTreeModel2=_interopRequireDefault(_BaseURLTreeModel);var _BaseURLSelector=__webpack_require__(/*! ../utils/BaseURLSelector */ \\\"../node_modules/dashjs/build/es5/src/streaming/utils/BaseURLSelector.js\\\");var _BaseURLSelector2=_interopRequireDefault(_BaseURLSelector);var _URLUtils=__webpack_require__(/*! ../utils/URLUtils */ \\\"../node_modules/dashjs/build/es5/src/streaming/utils/URLUtils.js\\\");var _URLUtils2=_interopRequireDefault(_URLUtils);var _BaseURL=__webpack_require__(/*! ../../dash/vo/BaseURL */ \\\"../node_modules/dashjs/build/es5/src/dash/vo/BaseURL.js\\\");var _BaseURL2=_interopRequireDefault(_BaseURL);var _FactoryMaker=__webpack_require__(/*! ../../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _EventBus=__webpack_require__(/*! ../../core/EventBus */ \\\"../node_modules/dashjs/build/es5/src/core/EventBus.js\\\");var _EventBus2=_interopRequireDefault(_EventBus);var _Events=__webpack_require__(/*! ../../core/events/Events */ \\\"../node_modules/dashjs/build/es5/src/core/events/Events.js\\\");var _Events2=_interopRequireDefault(_Events);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function BaseURLController(){var instance=void 0,adapter=void 0;var context=this.context;var eventBus=(0,_EventBus2.default)(context).getInstance();var urlUtils=(0,_URLUtils2.default)(context).getInstance();var baseURLTreeModel=void 0,baseURLSelector=void 0;function onBlackListChanged(e){baseURLTreeModel.invalidateSelectedIndexes(e.entry);}function setup(){baseURLTreeModel=(0,_BaseURLTreeModel2.default)(context).create();baseURLSelector=(0,_BaseURLSelector2.default)(context).create();eventBus.on(_Events2.default.SERVICE_LOCATION_BLACKLIST_CHANGED,onBlackListChanged,instance);}function setConfig(config){if(config.baseURLTreeModel){baseURLTreeModel=config.baseURLTreeModel;}if(config.baseURLSelector){baseURLSelector=config.baseURLSelector;}if(config.adapter){adapter=config.adapter;}}function update(manifest){baseURLTreeModel.update(manifest);baseURLSelector.chooseSelector(adapter.getIsDVB(manifest));}function resolve(path){var baseUrls=baseURLTreeModel.getForPath(path);var baseUrl=baseUrls.reduce(function(p,c){var b=baseURLSelector.select(c);if(b){if(!urlUtils.isRelative(b.url)){p.url=b.url;p.serviceLocation=b.serviceLocation;}else{p.url=urlUtils.resolve(b.url,p.url);}p.availabilityTimeOffset=b.availabilityTimeOffset;p.availabilityTimeComplete=b.availabilityTimeComplete;}else{return new _BaseURL2.default();}return p;},new _BaseURL2.default());if(!urlUtils.isRelative(baseUrl.url)){return baseUrl;}}function reset(){baseURLTreeModel.reset();baseURLSelector.reset();}function initialize(data){// report config to baseURLTreeModel and baseURLSelector\\nbaseURLTreeModel.setConfig({adapter:adapter});update(data);}instance={reset:reset,initialize:initialize,resolve:resolve,setConfig:setConfig};setup();return instance;}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */BaseURLController.__dashjs_factory_name='BaseURLController';exports.default=_FactoryMaker2.default.getClassFactory(BaseURLController);\\n//# sourceMappingURL=BaseURLController.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/streaming/controllers/BaseURLController.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/streaming/controllers/BlacklistController.js\":\n/*!*****************************************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/streaming/controllers/BlacklistController.js ***!\n \\*****************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _FactoryMaker=__webpack_require__(/*! ../../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _EventBus=__webpack_require__(/*! ../../core/EventBus */ \\\"../node_modules/dashjs/build/es5/src/core/EventBus.js\\\");var _EventBus2=_interopRequireDefault(_EventBus);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */function BlackListController(config){config=config||{};var instance=void 0;var blacklist=[];var eventBus=(0,_EventBus2.default)(this.context).getInstance();var updateEventName=config.updateEventName;var addBlacklistEventName=config.addBlacklistEventName;function contains(query){if(!blacklist.length||!query||!query.length){return false;}return blacklist.indexOf(query)!==-1;}function add(entry){if(blacklist.indexOf(entry)!==-1){return;}blacklist.push(entry);eventBus.trigger(updateEventName,{entry:entry});}function onAddBlackList(e){add(e.entry);}function setup(){if(addBlacklistEventName){eventBus.on(addBlacklistEventName,onAddBlackList,instance);}}function reset(){blacklist=[];}instance={add:add,contains:contains,reset:reset};setup();return instance;}BlackListController.__dashjs_factory_name='BlackListController';exports.default=_FactoryMaker2.default.getClassFactory(BlackListController);\\n//# sourceMappingURL=BlacklistController.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/streaming/controllers/BlacklistController.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/streaming/controllers/BufferController.js\":\n/*!**************************************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/streaming/controllers/BufferController.js ***!\n \\**************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _Constants=__webpack_require__(/*! ../constants/Constants */ \\\"../node_modules/dashjs/build/es5/src/streaming/constants/Constants.js\\\");var _Constants2=_interopRequireDefault(_Constants);var _MetricsConstants=__webpack_require__(/*! ../constants/MetricsConstants */ \\\"../node_modules/dashjs/build/es5/src/streaming/constants/MetricsConstants.js\\\");var _MetricsConstants2=_interopRequireDefault(_MetricsConstants);var _FragmentModel=__webpack_require__(/*! ../models/FragmentModel */ \\\"../node_modules/dashjs/build/es5/src/streaming/models/FragmentModel.js\\\");var _FragmentModel2=_interopRequireDefault(_FragmentModel);var _SourceBufferSink=__webpack_require__(/*! ../SourceBufferSink */ \\\"../node_modules/dashjs/build/es5/src/streaming/SourceBufferSink.js\\\");var _SourceBufferSink2=_interopRequireDefault(_SourceBufferSink);var _PreBufferSink=__webpack_require__(/*! ../PreBufferSink */ \\\"../node_modules/dashjs/build/es5/src/streaming/PreBufferSink.js\\\");var _PreBufferSink2=_interopRequireDefault(_PreBufferSink);var _AbrController=__webpack_require__(/*! ./AbrController */ \\\"../node_modules/dashjs/build/es5/src/streaming/controllers/AbrController.js\\\");var _AbrController2=_interopRequireDefault(_AbrController);var _EventBus=__webpack_require__(/*! ../../core/EventBus */ \\\"../node_modules/dashjs/build/es5/src/core/EventBus.js\\\");var _EventBus2=_interopRequireDefault(_EventBus);var _Events=__webpack_require__(/*! ../../core/events/Events */ \\\"../node_modules/dashjs/build/es5/src/core/events/Events.js\\\");var _Events2=_interopRequireDefault(_Events);var _FactoryMaker=__webpack_require__(/*! ../../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _Debug=__webpack_require__(/*! ../../core/Debug */ \\\"../node_modules/dashjs/build/es5/src/core/Debug.js\\\");var _Debug2=_interopRequireDefault(_Debug);var _InitCache=__webpack_require__(/*! ../utils/InitCache */ \\\"../node_modules/dashjs/build/es5/src/streaming/utils/InitCache.js\\\");var _InitCache2=_interopRequireDefault(_InitCache);var _DashJSError=__webpack_require__(/*! ../vo/DashJSError */ \\\"../node_modules/dashjs/build/es5/src/streaming/vo/DashJSError.js\\\");var _DashJSError2=_interopRequireDefault(_DashJSError);var _Errors=__webpack_require__(/*! ../../core/errors/Errors */ \\\"../node_modules/dashjs/build/es5/src/core/errors/Errors.js\\\");var _Errors2=_interopRequireDefault(_Errors);var _HTTPRequest=__webpack_require__(/*! ../vo/metrics/HTTPRequest */ \\\"../node_modules/dashjs/build/es5/src/streaming/vo/metrics/HTTPRequest.js\\\");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */var BUFFERING_COMPLETED_THRESHOLD=0.1;var BUFFER_END_THRESHOLD=0.5;var BUFFER_RANGE_CALCULATION_THRESHOLD=0.01;var QUOTA_EXCEEDED_ERROR_CODE=22;var BUFFER_CONTROLLER_TYPE='BufferController';function BufferController(config){config=config||{};var context=this.context;var eventBus=(0,_EventBus2.default)(context).getInstance();var errHandler=config.errHandler;var fragmentModel=config.fragmentModel;var representationController=config.representationController;var mediaController=config.mediaController;var adapter=config.adapter;var textController=config.textController;var abrController=config.abrController;var playbackController=config.playbackController;var streamInfo=config.streamInfo;var type=config.type;var settings=config.settings;var instance=void 0,logger=void 0,requiredQuality=void 0,isBufferingCompleted=void 0,bufferLevel=void 0,criticalBufferLevel=void 0,mediaSource=void 0,maxAppendedIndex=void 0,lastIndex=void 0,buffer=void 0,dischargeBuffer=void 0,dischargeFragments=void 0,bufferState=void 0,appendedBytesInfo=void 0,wallclockTicked=void 0,isPruningInProgress=void 0,isQuotaExceeded=void 0,initCache=void 0,seekTarget=void 0,seekClearedBufferingCompleted=void 0,pendingPruningRanges=void 0,replacingBuffer=void 0,mediaChunk=void 0;function setup(){logger=(0,_Debug2.default)(context).getInstance().getLogger(instance);initCache=(0,_InitCache2.default)(context).getInstance();resetInitialSettings();}function getBufferControllerType(){return BUFFER_CONTROLLER_TYPE;}function initialize(Source){setMediaSource(Source);requiredQuality=abrController.getQualityFor(type);eventBus.on(_Events2.default.DATA_UPDATE_COMPLETED,onDataUpdateCompleted,this);eventBus.on(_Events2.default.INIT_FRAGMENT_LOADED,onInitFragmentLoaded,this);eventBus.on(_Events2.default.MEDIA_FRAGMENT_LOADED,onMediaFragmentLoaded,this);eventBus.on(_Events2.default.QUALITY_CHANGE_REQUESTED,onQualityChanged,this);eventBus.on(_Events2.default.STREAM_COMPLETED,onStreamCompleted,this);eventBus.on(_Events2.default.PLAYBACK_PLAYING,onPlaybackPlaying,this);eventBus.on(_Events2.default.PLAYBACK_PROGRESS,onPlaybackProgression,this);eventBus.on(_Events2.default.PLAYBACK_TIME_UPDATED,onPlaybackProgression,this);eventBus.on(_Events2.default.PLAYBACK_RATE_CHANGED,onPlaybackRateChanged,this);eventBus.on(_Events2.default.PLAYBACK_SEEKING,onPlaybackSeeking,this);eventBus.on(_Events2.default.PLAYBACK_SEEKED,onPlaybackSeeked,this);eventBus.on(_Events2.default.PLAYBACK_STALLED,onPlaybackStalled,this);eventBus.on(_Events2.default.WALLCLOCK_TIME_UPDATED,onWallclockTimeUpdated,this);eventBus.on(_Events2.default.CURRENT_TRACK_CHANGED,onCurrentTrackChanged,this,{priority:_EventBus2.default.EVENT_PRIORITY_HIGH});eventBus.on(_Events2.default.SOURCEBUFFER_REMOVE_COMPLETED,onRemoved,this);}function getStreamId(){return streamInfo.id;}function getType(){return type;}function getRepresentationInfo(quality){return adapter.convertDataToRepresentationInfo(representationController.getRepresentationForQuality(quality));}function createBuffer(mediaInfoArr,oldBuffers){if(!initCache||!mediaInfoArr)return null;var mediaInfo=mediaInfoArr[0];if(mediaSource){try{if(oldBuffers&&oldBuffers[type]){buffer=(0,_SourceBufferSink2.default)(context).create(mediaSource,mediaInfo,onAppended.bind(this),oldBuffers[type]);}else{buffer=(0,_SourceBufferSink2.default)(context).create(mediaSource,mediaInfo,onAppended.bind(this),null);}if(settings.get().streaming.useAppendWindow){buffer.updateAppendWindow(streamInfo);}if(typeof buffer.getBuffer().initialize==='function'){buffer.getBuffer().initialize(type,streamInfo,mediaInfoArr,fragmentModel);}}catch(e){logger.fatal('Caught error on create SourceBuffer: '+e);errHandler.error(new _DashJSError2.default(_Errors2.default.MEDIASOURCE_TYPE_UNSUPPORTED_CODE,_Errors2.default.MEDIASOURCE_TYPE_UNSUPPORTED_MESSAGE+type));}}else{buffer=(0,_PreBufferSink2.default)(context).create(onAppended.bind(this));}updateBufferTimestampOffset(getRepresentationInfo(requiredQuality));return buffer;}function dischargePreBuffer(){if(buffer&&dischargeBuffer&&typeof dischargeBuffer.discharge==='function'){var ranges=dischargeBuffer.getAllBufferRanges();if(ranges.length>0){var rangeStr='Beginning '+type+'PreBuffer discharge, adding buffer for:';for(var i=0;i0&&playbackController.getTimeToStreamEnd()>settings.get().streaming.stallThreshold){logger.debug('Clearing buffer because track changed - '+(ranges.end(ranges.length-1)+BUFFER_END_THRESHOLD));clearBuffers([{start:0,end:ranges.end(ranges.length-1)+BUFFER_END_THRESHOLD,force:true// Force buffer removal even when buffering is completed and MediaSource is ended\\n}]);}}else{appendToBuffer(chunk);}}function appendToBuffer(chunk){buffer.append(chunk);if(chunk.mediaInfo.type===_Constants2.default.VIDEO){triggerEvent(_Events2.default.VIDEO_CHUNK_RECEIVED,{chunk:chunk});}}function showBufferRanges(ranges){if(ranges&&ranges.length>0){for(var i=0,len=ranges.length;i0){// recalculate buffer lengths according to criticalBufferLevel\\nvar bufferToKeep=Math.max(0.2*criticalBufferLevel,1);var bufferAhead=criticalBufferLevel-bufferToKeep;var bufferTimeAtTopQuality=Math.min(settings.get().streaming.bufferTimeAtTopQuality,bufferAhead*0.9);var bufferTimeAtTopQualityLongForm=Math.min(settings.get().streaming.bufferTimeAtTopQualityLongForm,bufferAhead*0.9);var s={streaming:{bufferToKeep:parseFloat(bufferToKeep.toFixed(5)),bufferTimeAtTopQuality:parseFloat(bufferTimeAtTopQuality.toFixed(5)),bufferTimeAtTopQualityLongForm:parseFloat(bufferTimeAtTopQualityLongForm.toFixed(5))}};settings.update(s);}}if(e.error.code===QUOTA_EXCEEDED_ERROR_CODE||!hasEnoughSpaceToAppend()){logger.warn('Clearing playback buffer to overcome quota exceed situation');// Notify Schedulecontroller to stop scheduling until buffer has been pruned\\ntriggerEvent(_Events2.default.QUOTA_EXCEEDED,{criticalBufferLevel:criticalBufferLevel,quotaExceededTime:e.chunk.start});clearBuffers(getClearRanges());}return;}isQuotaExceeded=false;appendedBytesInfo=e.chunk;if(appendedBytesInfo&&!isNaN(appendedBytesInfo.index)){maxAppendedIndex=Math.max(appendedBytesInfo.index,maxAppendedIndex);checkIfBufferingCompleted();}var ranges=buffer.getAllBufferRanges();if(appendedBytesInfo.segmentType===_HTTPRequest.HTTPRequest.MEDIA_SEGMENT_TYPE){showBufferRanges(ranges);onPlaybackProgression();adjustSeekTarget();}else if(replacingBuffer){// When replacing buffer due to switch track, and once new initialization segment has been appended\\n// (and previous buffered data removed) then seek stream to current time\\nvar currentTime=playbackController.getTime();logger.debug('AppendToBuffer seek target should be '+currentTime);triggerEvent(_Events2.default.SEEK_TARGET,{time:currentTime});}var suppressAppendedEvent=false;if(dischargeFragments){if(dischargeFragments.indexOf(appendedBytesInfo)>0){suppressAppendedEvent=true;}dischargeFragments=null;}if(appendedBytesInfo&&!suppressAppendedEvent){triggerEvent(appendedBytesInfo.endFragment?_Events2.default.BYTES_APPENDED_END_FRAGMENT:_Events2.default.BYTES_APPENDED,{quality:appendedBytesInfo.quality,startTime:appendedBytesInfo.start,index:appendedBytesInfo.index,bufferedRanges:ranges,mediaType:type});}}function adjustSeekTarget(){// Check buffered data only for audio and video\\nif(type!==_Constants2.default.AUDIO&&type!==_Constants2.default.VIDEO)return;if(isNaN(seekTarget))return;// Check if current buffered range already contains seek target (and current video element time)\\nvar currentTime=playbackController.getTime();var range=getRangeAt(seekTarget,0);if(currentTime===seekTarget&&range)return;// Get buffered range corresponding to the seek target\\nvar segmentDuration=representationController.getCurrentRepresentation().segmentDuration;range=getRangeAt(seekTarget,segmentDuration);if(!range)return;if(Math.abs(currentTime-seekTarget)>segmentDuration){// If current video model time is decorrelated from seek target (and appended buffer) then seek video element\\n// (in case of live streams on some browsers/devices for which we can't set video element time at unavalaible range)\\n// Check if appended segment is not anterior from seek target (segments timeline/template tolerance)\\nif(seekTarget<=range.end){// Seek video element to seek target or range start if appended buffer starts after seek target (segments timeline/template tolerance)\\nplaybackController.seek(Math.max(seekTarget,range.start),false,true);seekTarget=NaN;}}else if(currentTimeranges.start(0)){clearRanges.push(behindRange);}// Build buffer ahead range. To avoid pruning time around current time position,\\n// we include fragment right after the one in current time position\\nvar aheadRange={start:currentTimeRequest.startTime+currentTimeRequest.duration+settings.get().streaming.stallThreshold,end:endOfBuffer};var nextReq=fragmentModel.getRequests({state:_FragmentModel2.default.FRAGMENT_MODEL_EXECUTED,time:currentTimeRequest.startTime+currentTimeRequest.duration+settings.get().streaming.stallThreshold,threshold:BUFFER_RANGE_CALCULATION_THRESHOLD})[0];if(nextReq&&nextReq.startTime!==currentTimeRequest.startTime){aheadRange.start=nextReq.startTime+nextReq.duration+settings.get().streaming.stallThreshold;}if(aheadRange.start=start&&time=lastIndex-1;// Handles 0 and non 0 based request index\\nif(isLastIdxAppended&&!isBufferingCompleted&&buffer.discharge===undefined){isBufferingCompleted=true;logger.debug('checkIfBufferingCompleted trigger BUFFERING_COMPLETED for '+type);triggerEvent(_Events2.default.BUFFERING_COMPLETED);}}function checkIfSufficientBuffer(){// No need to check buffer if type is not audio or video (for example if several errors occur during text parsing, so that the buffer cannot be filled, no error must occur on video playback)\\nif(type!==_Constants2.default.AUDIO&&type!==_Constants2.default.VIDEO)return;if(seekClearedBufferingCompleted&&!isBufferingCompleted&&bufferLevel>0&&playbackController&&playbackController.getTimeToStreamEnd()-bufferLevel=streamInfo.manifestInfo.minBufferTime){notifyBufferStateChanged(_MetricsConstants2.default.BUFFER_LOADED);}}}function notifyBufferStateChanged(state){if(bufferState===state||state===_MetricsConstants2.default.BUFFER_EMPTY&&playbackController.getTime()===0||// Don't trigger BUFFER_EMPTY if it's initial loading\\ntype===_Constants2.default.FRAGMENTED_TEXT&&!textController.isTextEnabled()){return;}bufferState=state;triggerEvent(_Events2.default.BUFFER_LEVEL_STATE_CHANGED,{state:state});triggerEvent(state===_MetricsConstants2.default.BUFFER_LOADED?_Events2.default.BUFFER_LOADED:_Events2.default.BUFFER_EMPTY);logger.debug(state===_MetricsConstants2.default.BUFFER_LOADED?'Got enough buffer to start':'Waiting for more buffer before starting playback');}/* prune buffer on our own in background to avoid browsers pruning buffer silently */function pruneBuffer(){if(!buffer||type===_Constants2.default.FRAGMENTED_TEXT){return;}if(!isBufferingCompleted){clearBuffers(getClearRanges());}}function getClearRanges(){var clearRanges=[];var ranges=buffer.getAllBufferRanges();if(!ranges||ranges.length===0){return clearRanges;}var currentTime=playbackController.getTime();var startRangeToKeep=Math.max(0,currentTime-settings.get().streaming.bufferToKeep);var currentTimeRequest=fragmentModel.getRequests({state:_FragmentModel2.default.FRAGMENT_MODEL_EXECUTED,time:currentTime,threshold:BUFFER_RANGE_CALCULATION_THRESHOLD})[0];// Ensure we keep full range of current fragment\\nif(currentTimeRequest){startRangeToKeep=Math.min(currentTimeRequest.startTime,startRangeToKeep);}else if(currentTime===0&&playbackController.getIsDynamic()){// Don't prune before the live stream starts, it messes with low latency\\nreturn[];}if(ranges.start(0)<=startRangeToKeep){var behindRange={start:0,end:startRangeToKeep};for(var i=0;i0&&playbackController.getTimeToStreamEnd()>settings.get().streaming.stallThreshold){isBufferingCompleted=false;lastIndex=Number.POSITIVE_INFINITY;}}}function onWallclockTimeUpdated(){wallclockTicked++;var secondsElapsed=wallclockTicked*(settings.get().streaming.wallclockTimeUpdateInterval/1000);if(secondsElapsed>=settings.get().streaming.bufferPruningInterval){wallclockTicked=0;pruneBuffer();}}function onPlaybackRateChanged(){checkIfSufficientBuffer();}function getBuffer(){return buffer;}function setBuffer(newBuffer){buffer=newBuffer;}function getBufferLevel(){return bufferLevel;}function setMediaSource(value,mediaInfo){mediaSource=value;if(buffer&&mediaInfo){//if we have a prebuffer, we should prepare to discharge it, and make a new sourceBuffer ready\\nif(typeof buffer.discharge==='function'){dischargeBuffer=buffer;createBuffer(mediaInfo);}}}function getMediaSource(){return mediaSource;}function replaceBuffer(){replacingBuffer=true;}function getIsBufferingCompleted(){return isBufferingCompleted;}function getIsPruningInProgress(){return isPruningInProgress;}function getTotalBufferedTime(){var ranges=buffer.getAllBufferRanges();var totalBufferedTime=0;var ln=void 0,i=void 0;if(!ranges)return totalBufferedTime;for(i=0,ln=ranges.length;i} values\\n */function addInlineEvents(values){try{checkConfig();if(values){for(var i=0;i} values\\n */function addInbandEvents(values){try{checkConfig();for(var i=0;i2&&arguments[2]!==undefined?arguments[2]:false;var schemeIdUri=event.eventStream.schemeIdUri;var value=event.eventStream.value;var id=event.id;var eventState=EVENT_HANDLED_STATES.DISCARDED;if(!events[schemeIdUri]){events[schemeIdUri]=[];}var indexOfExistingEvent=events[schemeIdUri].findIndex(function(e){return(!value||e.eventStream.value&&e.eventStream.value===value)&&e.id===id;});if(indexOfExistingEvent===-1){events[schemeIdUri].push(event);eventState=EVENT_HANDLED_STATES.ADDED;}else if(shouldOverwriteExistingEvents){events[schemeIdUri][indexOfExistingEvent]=event;eventState=EVENT_HANDLED_STATES.UPDATED;}return eventState;}/**\\n * Triggers an MPD reload\\n * @param {object} event\\n * @private\\n */function _handleManifestReloadEvent(event){try{if(event.eventStream.value==MPD_RELOAD_VALUE){var validUntil=event.calculatedPresentationTime;var newDuration=void 0;if(event.calculatedPresentationTime==0xFFFFFFFF){//0xFF... means remaining duration unknown\\nnewDuration=NaN;}else{newDuration=event.calculatedPresentationTime+event.duration;}//logger.info('Manifest validity changed: Valid until: ' + validUntil + '; remaining duration: ' + newDuration);\\neventBus.trigger(_MediaPlayerEvents2.default.MANIFEST_VALIDITY_CHANGED,{id:event.id,validUntil:validUntil,newDuration:newDuration,newManifestValidAfter:NaN//event.message_data - this is an arraybuffer with a timestring in it, but not used yet\\n},{mode:_MediaPlayerEvents2.default.EVENT_MODE_ON_START});}}catch(e){}}/**\\n * Iterate through the eventList and trigger the events\\n */function _onEventTimer(){try{if(!eventHandlingInProgress){eventHandlingInProgress=true;var currentVideoTime=playbackController.getTime();var presentationTimeThreshold=currentVideoTime-lastEventTimerCall;// For dynamic streams lastEventTimeCall will be large in the first iteration. Avoid firing all events at once.\\npresentationTimeThreshold=lastEventTimerCall>0?Math.max(0,presentationTimeThreshold):0;_triggerEvents(inbandEvents,presentationTimeThreshold,currentVideoTime);_triggerEvents(inlineEvents,presentationTimeThreshold,currentVideoTime);lastEventTimerCall=currentVideoTime;eventHandlingInProgress=false;}}catch(e){eventHandlingInProgress=false;}}/**\\n * When the EventController is stopped this callback is triggered. Starts the remaining events.\\n * @private\\n */function _onStopEventController(){try{// EventController might be stopped before the period is over. Before we stop the event controller we check for events that needs to be triggered at the period boundary.\\n_triggerRemainingEvents(inbandEvents);_triggerRemainingEvents(inlineEvents);}catch(e){}}/**\\n * Iterate over a list of events and trigger the ones for which the presentation time is within the current timing interval\\n * @param {object} events\\n * @param {number} presentationTimeThreshold\\n * @param {number} currentVideoTime\\n * @private\\n */function _triggerEvents(events,presentationTimeThreshold,currentVideoTime){try{var callback=function callback(event){if(event!==undefined){var duration=!isNaN(event.duration)?event.duration:0;// The event is either about to start or has already been started and we are within its duration\\nif(event.calculatedPresentationTime<=currentVideoTime&&event.calculatedPresentationTime+presentationTimeThreshold+duration>=currentVideoTime){_startEvent(event,events,_MediaPlayerEvents2.default.EVENT_MODE_ON_START);}else if(_eventHasExpired(currentVideoTime,duration+presentationTimeThreshold,event.calculatedPresentationTime)||_eventIsInvalid(event)){logger.debug('Deleting event '+event.id+' as it is expired or invalid');_removeEvent(events,event);}}};_iterateAndTriggerCallback(events,callback);}catch(e){}}/**\\n * Triggers the remaining events after the EventController has been stopped\\n * @param {object} events\\n * @private\\n */function _triggerRemainingEvents(events){try{var currentTime=playbackController.getTime();var callback=function callback(event){var periodDuration=event.eventStream&&event.eventStream.period&&!isNaN(event.eventStream.period.duration)?event.eventStream.period.duration:NaN;var periodStart=event.eventStream&&event.eventStream.period&&!isNaN(event.eventStream.period.start)?event.eventStream.period.start:NaN;if(isNaN(periodDuration)||isNaN(periodStart)){return;}var calculatedPresentationTimeInSeconds=event.calculatedPresentationTime;if(Math.abs(calculatedPresentationTimeInSeconds-currentTime)calculatedPresentationTimeInSeconds;}catch(e){return false;}}/**\\n * Checks if an event is invalid. This is the case if the end time of the parent period is smaller than the presentation time of the event.\\n * @param {object} event\\n * @return {boolean}\\n * @private\\n */function _eventIsInvalid(event){try{var periodEndTime=event.eventStream.period.start+event.eventStream.period.duration;return event.calculatedPresentationTime>periodEndTime;}catch(e){return false;}}/**\\n * Starts an event. Depending on the schemeIdUri we distinguis between\\n * - MPD Reload events\\n * - MPD Callback events\\n * - Events to be dispatched to the application\\n * Events should be removed from the list before beeing triggered. Otherwise the event handler might cause an error and the remove function will not be called.\\n * @param {object} event\\n * @param {object} events\\n * @param {String} mode\\n * @private\\n */function _startEvent(event,events,mode){try{var currentVideoTime=playbackController.getTime();var eventId=event.id;if(mode===_MediaPlayerEvents2.default.EVENT_MODE_ON_RECEIVE){logger.debug('Received event '+eventId);eventBus.trigger(event.eventStream.schemeIdUri,{event:event},{mode:mode});return;}if(event.eventStream.schemeIdUri===MPD_RELOAD_SCHEME&&event.eventStream.value===MPD_RELOAD_VALUE){if(event.duration!==0||event.presentationTimeDelta!==0){//If both are set to zero, it indicates the media is over at this point. Don't reload the manifest.\\nlogger.debug('Starting manifest refresh event '+eventId+' at '+currentVideoTime);_removeEvent(events,event);_refreshManifest();}}else if(event.eventStream.schemeIdUri===MPD_CALLBACK_SCHEME&&event.eventStream.value===MPD_CALLBACK_VALUE){logger.debug('Starting callback event '+eventId+' at '+currentVideoTime);_removeEvent(events,event);_sendCallbackRequest(event.messageData);}else{logger.debug('Starting event '+eventId+' at '+currentVideoTime);_removeEvent(events,event);eventBus.trigger(event.eventStream.schemeIdUri,{event:event},{mode:mode});}}catch(e){}}/**\\n * Removes an event from the list. If this is the last event of type \\\"schemeIdUri\\\" the corresponding schemeIdUri Object in the list of events is deleted.\\n * @param {object} events\\n * @param {object} event\\n * @private\\n */function _removeEvent(events,event){var schemeIdUri=event.eventStream.schemeIdUri;var value=event.eventStream.value;var id=event.id;events[schemeIdUri]=events[schemeIdUri].filter(function(e){return value&&e.eventStream.value&&e.eventStream.value!==value||e.id!==id;});if(events[schemeIdUri].length===0){delete events[schemeIdUri];}}/**\\n * Refresh the manifest\\n * @private\\n */function _refreshManifest(){try{checkConfig();manifestUpdater.refreshManifest();}catch(e){}}/**\\n * Send a callback request\\n * @param {String} url\\n * @private\\n */function _sendCallbackRequest(url){try{var loader=(0,_XHRLoader2.default)(context).create({});loader.load({method:'get',url:url,request:{responseType:'arraybuffer'}});}catch(e){throw e;}}/**\\n * Set the config of the EventController\\n * @param {object} config\\n */function setConfig(config){try{if(!config){return;}if(config.manifestUpdater){manifestUpdater=config.manifestUpdater;}if(config.playbackController){playbackController=config.playbackController;}if(config.settings){settings=config.settings;}}catch(e){throw e;}}/**\\n * Returns all inline events that have not been triggered yet\\n * @return {object}\\n */function getInlineEvents(){return inlineEvents;}/**\\n * Returns all inband events that have not been triggered yet\\n * @return {object}\\n */function getInbandEvents(){return inbandEvents;}/**\\n * Stop the EventController and reset all initial settings\\n */function reset(){_stop();_resetInitialSettings();}instance={addInlineEvents:addInlineEvents,addInbandEvents:addInbandEvents,getInbandEvents:getInbandEvents,getInlineEvents:getInlineEvents,start:start,setConfig:setConfig,reset:reset};_setup();return instance;}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */EventController.__dashjs_factory_name='EventController';exports.default=_FactoryMaker2.default.getSingletonFactory(EventController);\\n//# sourceMappingURL=EventController.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/streaming/controllers/EventController.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/streaming/controllers/FragmentController.js\":\n/*!****************************************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/streaming/controllers/FragmentController.js ***!\n \\****************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _Constants=__webpack_require__(/*! ../constants/Constants */ \\\"../node_modules/dashjs/build/es5/src/streaming/constants/Constants.js\\\");var _Constants2=_interopRequireDefault(_Constants);var _DataChunk=__webpack_require__(/*! ../vo/DataChunk */ \\\"../node_modules/dashjs/build/es5/src/streaming/vo/DataChunk.js\\\");var _DataChunk2=_interopRequireDefault(_DataChunk);var _FragmentModel=__webpack_require__(/*! ../models/FragmentModel */ \\\"../node_modules/dashjs/build/es5/src/streaming/models/FragmentModel.js\\\");var _FragmentModel2=_interopRequireDefault(_FragmentModel);var _FragmentLoader=__webpack_require__(/*! ../FragmentLoader */ \\\"../node_modules/dashjs/build/es5/src/streaming/FragmentLoader.js\\\");var _FragmentLoader2=_interopRequireDefault(_FragmentLoader);var _RequestModifier=__webpack_require__(/*! ../utils/RequestModifier */ \\\"../node_modules/dashjs/build/es5/src/streaming/utils/RequestModifier.js\\\");var _RequestModifier2=_interopRequireDefault(_RequestModifier);var _EventBus=__webpack_require__(/*! ../../core/EventBus */ \\\"../node_modules/dashjs/build/es5/src/core/EventBus.js\\\");var _EventBus2=_interopRequireDefault(_EventBus);var _Events=__webpack_require__(/*! ../../core/events/Events */ \\\"../node_modules/dashjs/build/es5/src/core/events/Events.js\\\");var _Events2=_interopRequireDefault(_Events);var _Errors=__webpack_require__(/*! ../../core/errors/Errors */ \\\"../node_modules/dashjs/build/es5/src/core/errors/Errors.js\\\");var _Errors2=_interopRequireDefault(_Errors);var _FactoryMaker=__webpack_require__(/*! ../../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _Debug=__webpack_require__(/*! ../../core/Debug */ \\\"../node_modules/dashjs/build/es5/src/core/Debug.js\\\");var _Debug2=_interopRequireDefault(_Debug);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */function FragmentController(config){config=config||{};var context=this.context;var eventBus=(0,_EventBus2.default)(context).getInstance();var errHandler=config.errHandler;var mediaPlayerModel=config.mediaPlayerModel;var dashMetrics=config.dashMetrics;var debug=(0,_Debug2.default)(context).getInstance();var streamInfo=config.streamInfo;var instance=void 0,logger=void 0,fragmentModels=void 0;function setup(){logger=debug.getLogger(instance);resetInitialSettings();eventBus.on(_Events2.default.FRAGMENT_LOADING_COMPLETED,onFragmentLoadingCompleted,instance);eventBus.on(_Events2.default.FRAGMENT_LOADING_PROGRESS,onFragmentLoadingCompleted,instance);}function getStreamId(){return streamInfo.id;}function getModel(type){var model=fragmentModels[type];if(!model){model=(0,_FragmentModel2.default)(context).create({streamInfo:streamInfo,type:type,dashMetrics:dashMetrics,fragmentLoader:(0,_FragmentLoader2.default)(context).create({dashMetrics:dashMetrics,mediaPlayerModel:mediaPlayerModel,errHandler:errHandler,requestModifier:(0,_RequestModifier2.default)(context).getInstance(),settings:config.settings,boxParser:config.boxParser,eventBus:eventBus,events:_Events2.default,errors:_Errors2.default,dashConstants:config.dashConstants,urlUtils:config.urlUtils}),debug:debug,eventBus:eventBus,events:_Events2.default});fragmentModels[type]=model;}return model;}function resetInitialSettings(){for(var model in fragmentModels){fragmentModels[model].reset();}fragmentModels={};}function reset(){eventBus.off(_Events2.default.FRAGMENT_LOADING_COMPLETED,onFragmentLoadingCompleted,this);eventBus.off(_Events2.default.FRAGMENT_LOADING_PROGRESS,onFragmentLoadingCompleted,this);resetInitialSettings();}function createDataChunk(bytes,request,streamId,endFragment){var chunk=new _DataChunk2.default();chunk.streamId=streamId;chunk.mediaInfo=request.mediaInfo;chunk.segmentType=request.type;chunk.start=request.startTime;chunk.duration=request.duration;chunk.end=chunk.start+chunk.duration;chunk.bytes=bytes;chunk.index=request.index;chunk.quality=request.quality;chunk.representationId=request.representationId;chunk.endFragment=endFragment;return chunk;}function onFragmentLoadingCompleted(e){// Event propagation may have been stopped (see MssHandler)\\nif(!e.sender)return;var request=e.request;var bytes=e.response;var isInit=request.isInitializationRequest();var strInfo=request.mediaInfo.streamInfo;if(e.error){if(request.mediaType===_Constants2.default.AUDIO||request.mediaType===_Constants2.default.VIDEO||request.mediaType===_Constants2.default.FRAGMENTED_TEXT){// add service location to blacklist controller - only for audio or video. text should not set errors\\neventBus.trigger(_Events2.default.SERVICE_LOCATION_BLACKLIST_ADD,{entry:e.request.serviceLocation});}}if(!bytes||!strInfo){logger.warn('No '+request.mediaType+' bytes to push or stream is inactive.');return;}var chunk=createDataChunk(bytes,request,streamInfo.id,e.type!==_Events2.default.FRAGMENT_LOADING_PROGRESS);eventBus.trigger(isInit?_Events2.default.INIT_FRAGMENT_LOADED:_Events2.default.MEDIA_FRAGMENT_LOADED,{chunk:chunk,request:request},{streamId:strInfo.id,mediaType:request.mediaType});}instance={getStreamId:getStreamId,getModel:getModel,reset:reset};setup();return instance;}FragmentController.__dashjs_factory_name='FragmentController';exports.default=_FactoryMaker2.default.getClassFactory(FragmentController);\\n//# sourceMappingURL=FragmentController.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/streaming/controllers/FragmentController.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/streaming/controllers/GapController.js\":\n/*!***********************************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/streaming/controllers/GapController.js ***!\n \\***********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _FactoryMaker=__webpack_require__(/*! ../../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _Debug=__webpack_require__(/*! ../../core/Debug */ \\\"../node_modules/dashjs/build/es5/src/core/Debug.js\\\");var _Debug2=_interopRequireDefault(_Debug);var _Events=__webpack_require__(/*! ../../core/events/Events */ \\\"../node_modules/dashjs/build/es5/src/core/events/Events.js\\\");var _Events2=_interopRequireDefault(_Events);var _EventBus=__webpack_require__(/*! ../../core/EventBus */ \\\"../node_modules/dashjs/build/es5/src/core/EventBus.js\\\");var _EventBus2=_interopRequireDefault(_EventBus);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */var GAP_HANDLER_INTERVAL=100;var THRESHOLD_TO_STALLS=30;var GAP_THRESHOLD=0.1;function GapController(){var context=this.context;var eventBus=(0,_EventBus2.default)(context).getInstance();var instance=void 0,lastPlaybackTime=void 0,settings=void 0,wallclockTicked=void 0,gapHandlerInterval=void 0,lastGapJumpPosition=void 0,playbackController=void 0,streamController=void 0,videoModel=void 0,timelineConverter=void 0,adapter=void 0,jumpTimeoutHandler=void 0,logger=void 0;function initialize(){registerEvents();}function setup(){logger=(0,_Debug2.default)(context).getInstance().getLogger(instance);reset();}function reset(){stopGapHandler();unregisterEvents();resetInitialSettings();}function resetInitialSettings(){gapHandlerInterval=null;lastGapJumpPosition=NaN;wallclockTicked=0;jumpTimeoutHandler=null;}function setConfig(config){if(!config){return;}if(config.settings){settings=config.settings;}if(config.playbackController){playbackController=config.playbackController;}if(config.streamController){streamController=config.streamController;}if(config.videoModel){videoModel=config.videoModel;}if(config.timelineConverter){timelineConverter=config.timelineConverter;}if(config.adapter){adapter=config.adapter;}}function registerEvents(){eventBus.on(_Events2.default.WALLCLOCK_TIME_UPDATED,_onWallclockTimeUpdated,this);eventBus.on(_Events2.default.PLAYBACK_SEEKING,_onPlaybackSeeking,this);eventBus.on(_Events2.default.BYTES_APPENDED_END_FRAGMENT,onBytesAppended,instance);}function unregisterEvents(){eventBus.off(_Events2.default.WALLCLOCK_TIME_UPDATED,_onWallclockTimeUpdated,this);eventBus.off(_Events2.default.PLAYBACK_SEEKING,_onPlaybackSeeking,this);eventBus.off(_Events2.default.BYTES_APPENDED_END_FRAGMENT,onBytesAppended,instance);}function onBytesAppended(){if(!gapHandlerInterval){startGapHandler();}}function _onPlaybackSeeking(){if(jumpTimeoutHandler){clearTimeout(jumpTimeoutHandler);jumpTimeoutHandler=null;}}function _onWallclockTimeUpdated()/*e*/{if(!_shouldCheckForGaps()){return;}wallclockTicked++;if(wallclockTicked>=THRESHOLD_TO_STALLS){var currentTime=playbackController.getTime();if(lastPlaybackTime===currentTime){jumpGap(currentTime,true);}else{lastPlaybackTime=currentTime;lastGapJumpPosition=NaN;}wallclockTicked=0;}}function _shouldCheckForGaps(){return settings.get().streaming.jumpGaps&&streamController.getActiveStreamProcessors().length>0&&(!playbackController.isSeeking()||streamController.hasStreamFinishedBuffering(streamController.getActiveStream()))&&!playbackController.isPaused()&&!streamController.getIsStreamSwitchInProgress()&&!streamController.getHasMediaOrIntialisationError();}function getNextRangeIndex(ranges,currentTime){try{if(!ranges||ranges.length<=1&¤tTime>0){return NaN;}var nextRangeIndex=NaN;var j=0;while(isNaN(nextRangeIndex)&&j0?ranges.end(j-1):0;if(currentTime1&&arguments[1]!==undefined?arguments[1]:false;var smallGapLimit=settings.get().streaming.smallGapLimit;var jumpLargeGaps=settings.get().streaming.jumpLargeGaps;var ranges=videoModel.getBufferRange();var nextRangeIndex=void 0;var seekToPosition=NaN;var jumpToStreamEnd=false;// Get the range just after current time position\\nnextRangeIndex=getNextRangeIndex(ranges,currentTime);if(!isNaN(nextRangeIndex)){var start=ranges.start(nextRangeIndex);var gap=start-currentTime;if(gap>0&&(gap<=smallGapLimit||jumpLargeGaps)){seekToPosition=start;}}// Playback has stalled before period end. We seek to the end of the period\\nvar timeToStreamEnd=playbackController.getTimeToStreamEnd();if(isNaN(seekToPosition)&&playbackStalled&&isFinite(timeToStreamEnd)&&!isNaN(timeToStreamEnd)&&timeToStreamEnd0&&lastGapJumpPosition!==seekToPosition&&seekToPosition>currentTime&&!jumpTimeoutHandler){var timeUntilGapEnd=seekToPosition-currentTime;if(jumpToStreamEnd){logger.warn('Jumping to end of stream because of gap from '+currentTime+' to '+seekToPosition+'. Gap duration: '+timeUntilGapEnd);eventBus.trigger(_Events2.default.GAP_CAUSED_SEEK_TO_PERIOD_END,{seekTime:seekToPosition,duration:timeUntilGapEnd});}else{var isDynamic=playbackController.getIsDynamic();var _start=nextRangeIndex>0?ranges.end(nextRangeIndex-1):currentTime;var timeToWait=!isDynamic?0:timeUntilGapEnd*1000;jumpTimeoutHandler=window.setTimeout(function(){playbackController.seek(seekToPosition,true,true);logger.warn('Jumping gap starting at '+_start+' and ending at '+seekToPosition+'. Jumping by: '+timeUntilGapEnd);eventBus.trigger(_Events2.default.GAP_CAUSED_INTERNAL_SEEK,{seekTime:seekToPosition,duration:timeUntilGapEnd});jumpTimeoutHandler=null;},timeToWait);}lastGapJumpPosition=seekToPosition;}}instance={reset:reset,setConfig:setConfig,initialize:initialize};setup();return instance;}GapController.__dashjs_factory_name='GapController';exports.default=_FactoryMaker2.default.getSingletonFactory(GapController);\\n//# sourceMappingURL=GapController.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/streaming/controllers/GapController.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/streaming/controllers/MediaController.js\":\n/*!*************************************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/streaming/controllers/MediaController.js ***!\n \\*************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _Constants=__webpack_require__(/*! ../constants/Constants */ \\\"../node_modules/dashjs/build/es5/src/streaming/constants/Constants.js\\\");var _Constants2=_interopRequireDefault(_Constants);var _Events=__webpack_require__(/*! ../../core/events/Events */ \\\"../node_modules/dashjs/build/es5/src/core/events/Events.js\\\");var _Events2=_interopRequireDefault(_Events);var _EventBus=__webpack_require__(/*! ../../core/EventBus */ \\\"../node_modules/dashjs/build/es5/src/core/EventBus.js\\\");var _EventBus2=_interopRequireDefault(_EventBus);var _FactoryMaker=__webpack_require__(/*! ../../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _Debug=__webpack_require__(/*! ../../core/Debug */ \\\"../node_modules/dashjs/build/es5/src/core/Debug.js\\\");var _Debug2=_interopRequireDefault(_Debug);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function MediaController(){var context=this.context;var eventBus=(0,_EventBus2.default)(context).getInstance();var instance=void 0,logger=void 0,tracks=void 0,settings=void 0,initialSettings=void 0,domStorage=void 0;var validTrackSwitchModes=[_Constants2.default.TRACK_SWITCH_MODE_ALWAYS_REPLACE,_Constants2.default.TRACK_SWITCH_MODE_NEVER_REPLACE];var validTrackSelectionModes=[_Constants2.default.TRACK_SELECTION_MODE_HIGHEST_BITRATE,_Constants2.default.TRACK_SELECTION_MODE_FIRST_TRACK,_Constants2.default.TRACK_SELECTION_MODE_HIGHEST_EFFICIENCY,_Constants2.default.TRACK_SELECTION_MODE_WIDEST_RANGE];function setup(){logger=(0,_Debug2.default)(context).getInstance().getLogger(instance);reset();}/**\\n * @param {string} type\\n * @param {StreamInfo} streamInfo\\n * @memberof MediaController#\\n */function checkInitialMediaSettingsForType(type,streamInfo){var settings=getInitialSettings(type);var tracksForType=getTracksFor(type,streamInfo);var tracks=[];if(!settings){settings=domStorage.getSavedMediaSettings(type);setInitialSettings(type,settings);}if(!tracksForType||tracksForType.length===0)return;if(settings){tracksForType.forEach(function(track){if(matchSettings(settings,track)){tracks.push(track);}});}if(tracks.length===0){setTrack(this.selectInitialTrack(type,tracksForType),true);}else{if(tracks.length>1){setTrack(this.selectInitialTrack(type,tracks));}else{setTrack(tracks[0]);}}}/**\\n * @param {MediaInfo} track\\n * @memberof MediaController#\\n */function addTrack(track){if(!track)return;var mediaType=track.type;if(!isMultiTrackSupportedByType(mediaType))return;var streamId=track.streamInfo.id;if(!tracks[streamId]){tracks[streamId]=createTrackInfo();}var mediaTracks=tracks[streamId][mediaType].list;for(var i=0,len=mediaTracks.length;i0||settings.accessibility&&settings.accessibility.length>0||settings.audioChannelConfiguration&&settings.audioChannelConfiguration.length>0;return notEmpty?settings:null;}function matchSettings(settings,track){var matchLang=!settings.lang||track.lang.match(settings.lang);var matchIndex=settings.index===undefined||settings.index===null||track.index===settings.index;var matchViewPoint=!settings.viewpoint||settings.viewpoint===track.viewpoint;var matchRole=!settings.role||!!track.roles.filter(function(item){return item===settings.role;})[0];var matchAccessibility=!settings.accessibility||!!track.accessibility.filter(function(item){return item===settings.accessibility;})[0];var matchAudioChannelConfiguration=!settings.audioChannelConfiguration||!!track.audioChannelConfiguration.filter(function(item){return item===settings.audioChannelConfiguration;})[0];return matchLang&&matchIndex&&matchViewPoint&&matchRole&&matchAccessibility&&matchAudioChannelConfiguration;}function resetInitialSettings(){initialSettings={audio:null,video:null,fragmentedText:null};}function getTracksWithHighestBitrate(trackArr){var max=0;var result=[];var tmp=void 0;trackArr.forEach(function(track){tmp=Math.max.apply(Math,track.bitrateList.map(function(obj){return obj.bandwidth;}));if(tmp>max){max=tmp;result=[track];}else if(tmp===max){result.push(track);}});return result;}function getTracksWithHighestEfficiency(trackArr){var min=Infinity;var result=[];var tmp=void 0;trackArr.forEach(function(track){var sum=track.bitrateList.reduce(function(acc,obj){var resolution=Math.max(1,obj.width*obj.height);var efficiency=obj.bandwidth/resolution;return acc+efficiency;},0);tmp=sum/track.bitrateList.length;if(tmpmax){max=tmp;result=[track];}else if(tmp===max){result.push(track);}});return result;}function selectInitialTrack(type,tracks){if(type===_Constants2.default.FRAGMENTED_TEXT)return tracks[0];var mode=getSelectionModeForInitialTrack();var tmpArr=[];switch(mode){case _Constants2.default.TRACK_SELECTION_MODE_HIGHEST_BITRATE:tmpArr=getTracksWithHighestBitrate(tracks);if(tmpArr.length>1){tmpArr=getTracksWithWidestRange(tmpArr);}break;case _Constants2.default.TRACK_SELECTION_MODE_FIRST_TRACK:tmpArr.push(tracks[0]);break;case _Constants2.default.TRACK_SELECTION_MODE_HIGHEST_EFFICIENCY:tmpArr=getTracksWithHighestEfficiency(tracks);if(tmpArr.length>1){tmpArr=getTracksWithHighestBitrate(tmpArr);}break;case _Constants2.default.TRACK_SELECTION_MODE_WIDEST_RANGE:tmpArr=getTracksWithWidestRange(tracks);if(tmpArr.length>1){tmpArr=getTracksWithHighestBitrate(tracks);}break;default:logger.warn('Track selection mode is not supported: '+mode);break;}return tmpArr[0];}function createTrackInfo(){return{audio:{list:[],storeLastSettings:true,current:null},video:{list:[],storeLastSettings:true,current:null},text:{list:[],storeLastSettings:true,current:null},fragmentedText:{list:[],storeLastSettings:true,current:null},image:{list:[],storeLastSettings:true,current:null}};}instance={checkInitialMediaSettingsForType:checkInitialMediaSettingsForType,addTrack:addTrack,getTracksFor:getTracksFor,getCurrentTrackFor:getCurrentTrackFor,isCurrentTrack:isCurrentTrack,setTrack:setTrack,setInitialSettings:setInitialSettings,getInitialSettings:getInitialSettings,setSwitchMode:setSwitchMode,getSwitchMode:getSwitchMode,selectInitialTrack:selectInitialTrack,getTracksWithHighestBitrate:getTracksWithHighestBitrate,getTracksWithHighestEfficiency:getTracksWithHighestEfficiency,getTracksWithWidestRange:getTracksWithWidestRange,setSelectionModeForInitialTrack:setSelectionModeForInitialTrack,getSelectionModeForInitialTrack:getSelectionModeForInitialTrack,isMultiTrackSupportedByType:isMultiTrackSupportedByType,isTracksEqual:isTracksEqual,matchSettings:matchSettings,saveTextSettingsDisabled:saveTextSettingsDisabled,setConfig:setConfig,reset:reset};setup();return instance;}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */MediaController.__dashjs_factory_name='MediaController';var factory=_FactoryMaker2.default.getSingletonFactory(MediaController);_FactoryMaker2.default.updateSingletonFactory(MediaController.__dashjs_factory_name,factory);exports.default=factory;\\n//# sourceMappingURL=MediaController.js.map\\n\\n\\n//# sourceURL=webpack://cloudinaryVideoPlayer/../node_modules/dashjs/build/es5/src/streaming/controllers/MediaController.js?\");\n\n/***/ }),\n\n/***/ \"../node_modules/dashjs/build/es5/src/streaming/controllers/MediaSourceController.js\":\n/*!*******************************************************************************************!*\\\n !*** ../node_modules/dashjs/build/es5/src/streaming/controllers/MediaSourceController.js ***!\n \\*******************************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"Object.defineProperty(exports,\\\"__esModule\\\",{value:true});var _FactoryMaker=__webpack_require__(/*! ../../core/FactoryMaker */ \\\"../node_modules/dashjs/build/es5/src/core/FactoryMaker.js\\\");var _FactoryMaker2=_interopRequireDefault(_FactoryMaker);var _Debug=__webpack_require__(/*! ../../core/Debug */ \\\"../node_modules/dashjs/build/es5/src/core/Debug.js\\\");var _Debug2=_interopRequireDefault(_Debug);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}/**\\n * The copyright in this software is being made available under the BSD License,\\n * included below. This software may be subject to other third party and contributor\\n * rights, including patent rights, and no such rights are granted under this license.\\n *\\n * Copyright (c) 2013, Dash Industry Forum.\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without modification,\\n * are permitted provided that the following conditions are met:\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation and/or\\n * other materials provided with the distribution.\\n * * Neither the name of Dash Industry Forum nor the names of its\\n * contributors may be used to endorse or promote products derived from this software\\n * without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\\n * POSSIBILITY OF SUCH DAMAGE.\\n */function MediaSourceController(){var instance=void 0,logger=void 0;var context=this.context;function setup(){logger=(0,_Debug2.default)(context).getInstance().getLogger(instance);}function createMediaSource(){var hasWebKit='WebKitMediaSource'in window;var hasMediaSource='MediaSource'in window;if(hasMediaSource){return new MediaSource();}else if(hasWebKit){return new WebKitMediaSource();}return null;}function attachMediaSource(source,videoModel){var objectURL=window.URL.createObjectURL(source);videoModel.setSource(objectURL);return objectURL;}function detachMediaSource(videoModel){videoModel.setSource(null);}function setDuration(source,value){if(!source||source.readyState!=='open')return;if(value===null&&isNaN(value))return;if(source.duration===value)return;if(!isBufferUpdating(source)){logger.info('Set MediaSource duration:'+value);source.duration=value;}else{setTimeout(setDuration.bind(null,source,value),50);}}function setSeekable(source,start,end){if(source&&typeof source.setLiveSeekableRange==='function'&&typeof source.clearLiveSeekableRange==='function'&&source.readyState==='open'&&start>=0&&starttimeOffset){t-=timeOffset;}}return t;}function getPlaybackRate(){return streamInfo&&videoModel?videoModel.getPlaybackRate():null;}function getPlayedRanges(){return streamInfo&&videoModel?videoModel.getPlayedRanges():null;}function getEnded(){return streamInfo&&videoModel?videoModel.getEnded():null;}function getIsDynamic(){return isDynamic;}function getStreamController(){return streamController;}/**\\n * Computes the desirable delay for the live edge to avoid a risk of getting 404 when playing at the bleeding edge\\n * @param {number} fragmentDuration - seconds?\\n * @param {number} dvrWindowSize - seconds?\\n * @param {number} minBufferTime - seconds?\\n * @returns {number} object\\n * @memberof PlaybackController#\\n */function computeAndSetLiveDelay(fragmentDuration,dvrWindowSize,minBufferTime){var delay=void 0,ret=void 0,startTime=void 0;var END_OF_PLAYLIST_PADDING=10;var MIN_BUFFER_TIME_FACTOR=4;var FRAGMENT_DURATION_FACTOR=4;var adjustedFragmentDuration=!isNaN(fragmentDuration)&&isFinite(fragmentDuration)?fragmentDuration:NaN;var suggestedPresentationDelay=adapter.getSuggestedPresentationDelay();if(settings.get().streaming.lowLatencyEnabled){delay=0;}else if(mediaPlayerModel.getLiveDelay()){delay=mediaPlayerModel.getLiveDelay();// If set by user, this value takes precedence\\n}else if(settings.get().streaming.liveDelayFragmentCount!==null&&!isNaN(settings.get().streaming.liveDelayFragmentCount)&&!isNaN(adjustedFragmentDuration)){delay=adjustedFragmentDuration*settings.get().streaming.liveDelayFragmentCount;}else if(settings.get().streaming.useSuggestedPresentationDelay===true&&suggestedPresentationDelay!==null&&!isNaN(suggestedPresentationDelay)&&suggestedPresentationDelay>0){delay=suggestedPresentationDelay;}else if(!isNaN(adjustedFragmentDuration)){delay=adjustedFragmentDuration*FRAGMENT_DURATION_FACTOR;}else{delay=!isNaN(minBufferTime)?minBufferTime*MIN_BUFFER_TIME_FACTOR:streamInfo.manifestInfo.minBufferTime*MIN_BUFFER_TIME_FACTOR;}startTime=adapter.getAvailabilityStartTime();if(startTime!==null){availabilityStartTime=startTime;}if(dvrWindowSize>0){// cap target latency to:\\n// - dvrWindowSize / 2 for short playlists\\n// - dvrWindowSize - END_OF_PLAYLIST_PADDING for longer playlists\\nvar targetDelayCapping=Math.max(dvrWindowSize-END_OF_PLAYLIST_PADDING,dvrWindowSize/2);ret=Math.min(delay,targetDelayCapping);}else{ret=delay;}liveDelay=ret;return ret;}function getLiveDelay(){return liveDelay;}function setLiveDelay(value){var useMaxValue=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(useMaxValue&&value\\\" : time is relative to 1st period start\\n// \\\"t=posix: