!function(a,b){"undefined"!=typeof module&&module.exports?module.exports=b():"function"==typeof define&&define.amd?define([],b):a.canvid=b()}(this,function(){function a(a){function b(a,b){function c(){e--,0===e&&b(null,d)}var d={},e=Object.keys(a).length;if(0===e)return b("You need to define at least one video object.");for(var f in a)d[f]=new Image,d[f].onload=c,d[f].onerror=b,d[f].src=a[f].src}function c(){var a=document.createElement("canvas");return a.width=m.width,a.height=m.height,a.classList.add("canvid"),n.appendChild(a),a.getContext("2d")}function d(){[].forEach.call(n.children,function(a){a.classList.contains("canvid")||(a.style.display="none")})}function e(){[].forEach.call(n.children,function(a){a.classList.contains("canvid")&&n.removeChild(a)})}function f(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||function(a){return setTimeout(a,1e3/60)}}function g(){var a=document.createElement("canvas");return!(!a.getContext||!a.getContext("2d"))}function h(a){return"function"==typeof a||!!(a&&a.constructor&&a.call&&a.apply)}function i(){for(var a,b={},c=0;c=p.frames&&(t=0),(c?t!=p.frames-1:t)||w++,p.loops&&w>=p.loops&&(v=!1,p.onEnd&&h(p.onEnd)&&p.onEnd())),u=(u+1)%x,v&&p.frames>1&&i(j)}function n(a){var b=Math.floor(a%p.cols)*q,c=Math.floor(a/p.cols)*r;g.clearRect(0,0,m.width,m.height),g.drawImage(o,b,c,q,r,0,0,m.width,m.height)}l.pause&&l.pause();var o=b[a],p=m.videos[a],q=o.width/p.cols,r=o.height/Math.ceil(p.frames/p.cols),s=f||p.fps||15,t=c?p.frames-1:0,u=0,v=!0,w=0,x=60/s;i(j),l.resume=function(){v=!0,i(j)},l.pause=function(){v=!1,i(j)},l.isPlaying=function(){return v},l.destroy=function(){l.pause(),e()},l.getCurrentFrame=function(){return t},l.setCurrentFrame=function(a){return!(a<0||a>=p.frames)&&(l.isPlaying()||n(a),void(t=a))},k&&(k=!1,d())},h(m.loaded)&&m.loaded(l)});else if(opts.srcGif){var o=new Image;o.src=opts.srcGif,n.appendChild(o)}return l}return window.canvid=a,a});var enableInlineVideo=function(){"use strict";function a(a,b,c,d){function e(c){f=b(e,d),a(c-(g||c)),g=c}var f,g;return{start:function(){f||e(0)},stop:function(){c(f),f=null,g=0}}}function b(b){return a(b,requestAnimationFrame,cancelAnimationFrame)}function c(a,b,c){function d(d){c&&!c(a,b)||d.stopImmediatePropagation()}return a.addEventListener(b,d),d}function d(a,b,c,d){function e(){return c[b]}function f(a){c[b]=a}d&&f(a[b]),Object.defineProperty(a,b,{get:e,set:f})}function e(a,b,c){c.addEventListener(b,function(){return a.dispatchEvent(new Event(b))})}function f(a,b){Promise.resolve().then(function(){a.dispatchEvent(new Event(b))})}function g(a){var b=new Audio;return e(a,"play",b),e(a,"playing",b),e(a,"pause",b),b.crossOrigin=a.crossOrigin,b.src=a.src||a.currentSrc||"data:",b}function h(a,b,c){(q||0)+200=a.video.duration}function j(a){var b=this;b.video.readyState>=b.video.HAVE_FUTURE_DATA?(b.hasAudio||(b.driver.currentTime=b.video.currentTime+a*b.video.playbackRate/1e3,b.video.loop&&i(b)&&(b.driver.currentTime=0)),h(b.video,b.driver.currentTime)):b.video.networkState===b.video.NETWORK_IDLE&&0===b.video.buffered.length&&b.video.load(),b.video.ended&&(delete b.video[t],b.video.pause(!0))}function k(){var a=this,b=a[s];return a.webkitDisplayingFullscreen?void a[u]():("data:"!==b.driver.src&&b.driver.src!==a.src&&(h(a,0,!0),b.driver.src=a.src),void(a.paused&&(b.paused=!1,0===a.buffered.length&&a.load(),b.driver.play(),b.updater.start(),b.hasAudio||(f(a,"play"),b.video.readyState>=b.video.HAVE_ENOUGH_DATA&&f(a,"playing")))))}function l(a){var b=this,c=b[s];c.driver.pause(),c.updater.stop(),b.webkitDisplayingFullscreen&&b[v](),c.paused&&!a||(c.paused=!0,c.hasAudio||f(b,"pause"),b.ended&&!b.webkitDisplayingFullscreen&&(b[t]=!0,f(b,"ended")))}function m(a,c){var d={};a[s]=d,d.paused=!0,d.hasAudio=c,d.video=a,d.updater=b(j.bind(d)),c?d.driver=g(a):(a.addEventListener("canplay",function(){a.paused||f(a,"playing")}),d.driver={src:a.src||a.currentSrc||"data:",muted:!0,paused:!0,pause:function(){d.driver.paused=!0},play:function(){d.driver.paused=!1,i(d)&&h(a,0)},get ended(){return i(d)}}),a.addEventListener("emptied",function(){var b=!d.driver.src||"data:"===d.driver.src;d.driver.src&&d.driver.src!==a.src&&(h(a,0,!0),d.driver.src=a.src,b||!c&&a.autoplay?d.driver.play():d.updater.stop())},!1),a.addEventListener("webkitbeginfullscreen",function(){a.paused?c&&0===d.driver.buffered.length&&d.driver.load():(a.pause(),a[u]())}),c&&(a.addEventListener("webkitendfullscreen",function(){d.driver.currentTime=a.currentTime}),a.addEventListener("seeking",function(){w.indexOf(100*a.currentTime|0)<0&&(d.driver.currentTime=a.currentTime)}))}function n(a){var b=a[t];return delete a[t],!a.webkitDisplayingFullscreen&&!b}function o(a){var b=a[s];a[u]=a.play,a[v]=a.pause,a.play=k,a.pause=l,d(a,"paused",b.driver),d(a,"muted",b.driver,!0),d(a,"playbackRate",b.driver,!0),d(a,"ended",b.driver),d(a,"loop",b.driver,!0),c(a,"seeking",function(a){return!a.webkitDisplayingFullscreen}),c(a,"seeked",function(a){return!a.webkitDisplayingFullscreen}),c(a,"timeupdate",n),c(a,"ended",n)}function p(a,b){if(void 0===b&&(b={}),!a[s]){if(!b.everywhere){if(!r)return;if(!(b.iPad||b.ipad?/iPhone|iPod|iPad/:/iPhone|iPod/).test(navigator.userAgent))return}a.pause();var c=a.autoplay;a.autoplay=!1,m(a,!a.muted),o(a),a.classList.add("IIV"),a.muted&&c&&(a.play(),a.addEventListener("playing",function d(){a.autoplay=!0,a.removeEventListener("playing",d)})),/iPhone|iPod|iPad/.test(navigator.platform)||console.warn("iphone-inline-video is not guaranteed to work in emulated environments")}}var q,r="object"==typeof document&&"object-fit"in document.head.style&&!matchMedia("(-webkit-video-playable-inline)").matches,s="bfred-it:iphone-inline-video",t="bfred-it:iphone-inline-video:event",u="bfred-it:iphone-inline-video:nativeplay",v="bfred-it:iphone-inline-video:nativepause",w=[],x=0;return p}();!function(a,b,c,d,e){"use strict";function f(){var a,b,c="";for(a=0;a"}function g(){function c(){void 0!==a.addEventListener&&a.addEventListener("touchstart",function b(){qa&&f("avp:device_touched:attempting_force_autoplay");for(var a=0;a>pa.length;a+=1)pa[a].play();this.removeEventListener("touchstart",b)})}function e(){var a=d.createElement("video"),b=d.createElement("source");b.src=ya,a.appendChild(b),a.id="base64_test_video",a.autoplay=!0,a.style.position="fixed",a.style.left="5000px",d.getElementsByTagName("body")[0].appendChild(a),ka=d.getElementById("base64_test_video")}function g(){return qa&&f("Detected PC"+!/Android|webOS|iPhone|iPad|iPod|BlackBerry|Opera Mini|UCWeb|UCBrowser/i.test(b.userAgent)),!/Android|webOS|iPhone|iPad|iPod|BlackBerry|Opera Mini|UCWeb|UCBrowser/i.test(b.userAgent)}function h(){return qa&&f("Detected Android Device"+!/iP(hone|od|ad)/.test(b.userAgent)||/SAMSUNG/.test(b.userAgent)),!/iP(hone|od|ad)/.test(b.userAgent)||/SAMSUNG/.test(b.userAgent)}function i(){var a=b.userAgent;return a.indexOf("Mozilla/5.0")>-1&&a.indexOf("Android ")>-1&&a.indexOf("AppleWebKit")>-1&&!(a.indexOf("Chrome")>-1)}function j(){return qa&&f("Detected UC Browser"+/UCWeb|UCBrowser/i.test(b.userAgent)),/UCWeb|UCBrowser/i.test(b.userAgent)}function k(){return qa&&f("Detected Opera Browser"+/OPR|Opera/i.test(b.userAgent)),/Opera/i.test(b.userAgent)}function l(){return qa&&f("Detected Apple Device"),/iP(hone|od|ad|Safari)/.test(b.userAgent)&&!/(Windows Phone|SAMSUNG)/.test(b.userAgent)}function m(){if(/iP(hone|od|ad)/.test(b.userAgent)){var a=b.userAgent.match(/OS (\d+)_(\d+)_?(\d+)?/);return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3]||0,10)]}return null}function n(){return!!/iPad/.test(b.userAgent)}function o(){var a=b.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);return!!a&&parseInt(a[2],10)}function p(){return/Chrome/.test(b.userAgent)&&o()>=32||/Opera/i.test(b.userAgent)&&a.opera&&a.opera.version()>=19}function q(){var a=d.createElement("canvas");return!(!a.getContext||!a.getContext("2d"))}function r(){var a=d.getElementById("video");la=a.attributes["data-webp-canvid"].value,ma=a.attributes["data-jpg-canvid"].value,a.parentElement.removeChild(a),D()}function s(a){var b=d.createElement("IMG"),c=a;b.className="fallback_image",p()||ra?(qa&&f("avp:"+c+":loadPlayerFallback:WEBP:"+pa[c].attributes["data-webp"].value),b.src=pa[c].attributes["data-webp"].value+"?rand="+Math.ceil(1e6*Math.random()),pa[c].parentElement.appendChild(b),ha=pa[c].attributes["data-webp"].value):(qa&&f("avp:"+c+":loadPlayerFallback:GIF:"+pa[c].attributes["data-gif"].value),b.src=pa[c].attributes["data-gif"].value,pa[c].parentElement.appendChild(b),ha=pa[c].attributes["data-gif"].value,pa[c].parentElement.removeChild(pa[c]))}function t(){qa&&f("avp:oadPlayerFallback2"+pa.length);for(var a=0;a>> "+d.cookie)}function v(a){for(var b=a+"=",c=decodeURIComponent(d.cookie),e=c.split(";"),g=0;g>"+h.substring(b.length,h.length)),h.substring(b.length,h.length)}return qa&&f("No cookie set"),null}function w(){return"undefined"!=typeof Storage&&(qa&&f("LocalStorage Supported"),!0)}function x(a){return qa&&f("Get sessionStoreage >>>"+sessionStorage.getItem(a)),sessionStorage.getItem(a)}function y(a,b){qa&&f("set session Storage"),sessionStorage.setItem(a,b)}function z(a){va=a}function A(a){wa=a}function B(){return wa}function C(){var a=.005,b=1e3*a,c=Math.floor(1e5*Math.random());$=c<=b}function D(){if(qa&&f("Play Canvid"),b.userAgent.indexOf("Chrome")>-1||M()){ha=la;var a=canvid({videos:{clip1:{src:la,frames:102,cols:6,loops:10,fps:10,onEnd:function(){}}},width:na,height:oa,loaded:function(){a.play("clip1")}})}else{ha=ma;var a=canvid({videos:{clip1:{src:ma,frames:102,cols:6,loops:10,fps:10,onEnd:function(){}}},width:na,height:oa,loaded:function(){a.play("clip1")}})}}function E(){var a=B();null!==a&&"cellular"===a&&(qa&&f("avp:Android:setAutoPlayDetectionTimeout:connectioneType:"+a),ta=ua)}function F(){xa=w()?x("autoplay_detected"):v("autoplay_detected"),"connection"in b&&"saveData"in b.connection&&(qa&&f("navigator.connection supported"),b.connection.saveData?(sa=!1,w()?y("autoplay_detected",sa):u("autoplay_detected",sa),xa="false"):(sa=!0,w()?y("autoplay_detected",sa):u("autoplay_detected",sa),xa="true")),"true"!==xa&&e(),qa&&f("getAutoPlayDetectedFlag:"+sa)}function G(){qa&&f("setAutoPlayCookie:");var a;for(void 0===ka||ka.paused||(sa=!0,qa&&f("avp:Android:autoplay:supported:from_test_file")),a=0;a=8){qa&&f("avp:iphone-inline-video is not guaranteed to work in emulated environments");try{var b;for(b=0;b