diff --git a/dist/app.js b/dist/app.js index deb7204..bf428f2 100644 --- a/dist/app.js +++ b/dist/app.js @@ -2385,6 +2385,9 @@ function audioImplementation(homePage) { })(navigator.userAgent || navigator.vendor || window.opera); return check; }; + const isMobile = mobileCheck(); + // Exit early if on mobile to prevent loading or playing UI sounds + if (isMobile) return; // MUTE STATE let isMuted = false; let linkClicked = false; @@ -2828,8 +2831,8 @@ parcelHelpers.export(exports, "showreelHome", ()=>showreelHome); // NAV SHOWREEL parcelHelpers.export(exports, "showreelNav", ()=>showreelNav); function showreelHome(audio) { - const fadeMusicToggle = audio.fadeToggle; - const showreelMuteState = audio.getShowreelMuteState; + const fadeMusicToggle = audio?.fadeToggle; + const showreelMuteState = audio?.getShowreelMuteState; const homeBlock = document.querySelector("#showreel_block_home"); const showreelVideo = document.querySelector("#showreel_video"); const clickToUnmuteUI = document.querySelector(".showreel-ui-wrapper"); @@ -2860,14 +2863,14 @@ function showreelHome(audio) { showreelVideo.currentTime = 0; //restart video clickToUnmuteUI.style.display = "none"; //hide unmute ui clickToMuteUI.style.opacity = 0; // set mute opacity to 0 - if (!showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade + if (fadeMusicToggle && showreelMuteState && !showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade clickLogic = "once"; //update click logic outOfView = false; //ensure out of view logic is false } // SECOND CLICK LOGIC function secondClickLogic() { showreelVideo.muted = true; //mute video again - if (!showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade + if (fadeMusicToggle && showreelMuteState && !showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade clickToUnmuteUI.style.opacity = "100"; // set unmute opacity to 100 clickToUnmuteUI.style.display = "flex"; // display unmute ui clickToMuteUI.style.display = "none"; // hide mute ui @@ -2876,7 +2879,7 @@ function showreelHome(audio) { // THIRD CLICK LOGIC function thirdClickLogic() { showreelVideo.muted = false; //unmute video - if (!showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade + if (fadeMusicToggle && showreelMuteState && !showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade clickToUnmuteUI.style.display = "none"; //hide unmute ui clickLogic = "once"; //update click logic outOfView = false; //ensure out of view logic is false @@ -2917,8 +2920,8 @@ function showreelHome(audio) { }); } function showreelNav(audio) { - const fadeMusicToggle = audio.fadeToggle; - const showreelMuteState = audio.getShowreelMuteState; + const fadeMusicToggle = audio?.fadeToggle; + const showreelMuteState = audio?.getShowreelMuteState; const navPlayReel = document.querySelector(".navbar_playreel-wrapper"); const wave = document.querySelectorAll(".wave"); const showreelVideo = document.querySelector("#showreelNavXL_video"); @@ -2927,7 +2930,7 @@ function showreelNav(audio) { navPlayReel.addEventListener("click", ()=>{ showreelVideo.muted = false; //unmute video showreelVideo.currentTime = 0; //restart video - if (!showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade + if (fadeMusicToggle && showreelMuteState && !showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade wave.forEach((stroke)=>{ stroke.style.fill = "#F5F4F2"; //set mute svg fill back to white }); @@ -2935,7 +2938,7 @@ function showreelNav(audio) { // when user navigates away from showreel showreelVideo.addEventListener("pause", function() { if (showreelVideo.muted == false && document.visibilityState == "visible") { - if (!showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade + if (fadeMusicToggle && showreelMuteState && !showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade } }, false); } @@ -2969,10 +2972,7 @@ function setVideoSource(video) { else if (window.innerWidth <= 1680) videoSrc = getURL(video, "laptop"); else videoSrc = getURL(video, "desktop"); // Check if the current source is already set - if (videoElem.getAttribute("src") !== videoSrc) { - videoElem.src = videoSrc; - if (video == "metamorphoses") videoElem.play(); - } + if (videoElem.getAttribute("src") !== videoSrc) videoElem.src = videoSrc; // Preload only if the video is already in the viewport const isInViewport = (elem)=>{ const rect = elem.getBoundingClientRect(); diff --git a/dist/app.js.map b/dist/app.js.map index fc4fdd1..8d47d7e 100644 --- a/dist/app.js.map +++ b/dist/app.js.map @@ -1 +1 @@ -{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,IAAI,WAAW,IAAI;AAAC,IAAI,WAAW;AAAM,IAAI,aAAa,KAAK;AAAC,IAAI,eAAe;AAAmB,OAAO,MAAM,CAAC,aAAa,GAAG;AAAmB;AAEvJ,6JAA6J,GAE7J;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,GACA,IAAI,aAAa;AACjB,IAAI,YAAY,OAAO,MAAM,CAAC,MAAM;AAEpC,SAAS,OAAO,UAAU,EAAE;IAC1B,UAAU,IAAI,CAAC,IAAI,EAAE;IACrB,IAAI,CAAC,GAAG,GAAG;QACT,MAAM,OAAO,MAAM,CAAC,OAAO;QAC3B,kBAAkB,EAAE;QACpB,mBAAmB,EAAE;QACrB,QAAQ,SAAU,EAAE,EAAE;YACpB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,WAAY,CAAC;QAChD;QACA,SAAS,SAAU,EAAE,EAAE;YACrB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAC9B;IACF;IACA,OAAO,MAAM,CAAC,OAAO,GAAG;AAC1B;AAEA,OAAO,MAAM,CAAC,MAAM,GAAG;AACvB,IAAI,eAEF,gBAEA,eACF,mCAAmC;AAGnC,SAAS,cAAc;IACrB,OAAO,YAAa,CAAA,SAAS,QAAQ,CAAC,OAAO,CAAC,YAAY,IAAI,SAAS,QAAQ,GAAG,WAAW,AAAD;AAC9F;AAEA,SAAS,UAAU;IACjB,OAAO,YAAY,SAAS,IAAI;AAClC,EAAE,wCAAwC;AAG1C,IAAI,SAAS,OAAO,MAAM,CAAC,MAAM;AAEjC,IAAI,AAAC,CAAA,CAAC,UAAU,CAAC,OAAO,eAAe,AAAD,KAAM,OAAO,cAAc,aAAa;IAC5E,IAAI,WAAW;IACf,IAAI,OAAO;IACX,IAAI,WAAW,cAAc,SAAS,QAAQ,IAAI,YAAY,CAAC,8BAA8B,IAAI,CAAC,YAAY,QAAQ,IAAI;IAC1H,IAAI,KAAK,IAAI,UAAU,WAAW,QAAQ,WAAY,CAAA,OAAO,MAAM,OAAO,EAAE,AAAD,IAAK,MAAM,wBAAwB;IAE9G,IAAI,SAAS,OAAO,WAAW,cAAc,OAAO,YAAY,cAAc,IAAI,GAAG,OAAO,GAAG,MAAM,EAAE,oDAAoD;IAC3J,0DAA0D;IAE1D,IAAI,oBAAoB,KAAK;IAE7B,IAAI;QACD,CAAA,GAAG,IAAI,AAAD,EAAG;IACZ,EAAE,OAAO,KAAK;QACZ,oBAAoB,IAAI,KAAK,CAAC,QAAQ,CAAC;IACzC,EAAE,aAAa;IAGf,GAAG,SAAS,GAAG,eAAgB,KAAK,EAElC;QACA,gBAAgB,CAAC,EACjB,0BAA0B;QAE1B,iBAAiB,CAAC,EAClB,0BAA0B;QAE1B,iBAAiB,EAAE;QACnB,IAAI,OAEF,KAAK,KAAK,CAAC,MAAM,IAAI;QAEvB,IAAI,KAAK,IAAI,KAAK,UAAU;YAC1B,uCAAuC;YACvC,IAAI,OAAO,aAAa,aACtB;YAGF,IAAI,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,CAAA,QAAS,MAAM,OAAO,KAAK,eAAe,oBAAoB;YAE9F,IAAI,UAAU,OAAO,KAAK,CAAC,CAAA,QAAS;gBAClC,OAAO,MAAM,IAAI,KAAK,SAAS,MAAM,IAAI,KAAK,QAAQ,eAAe,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,YAAY;YACvH;YAEA,IAAI,SAAS;gBACX,QAAQ,KAAK,IAAI,yEAAyE;gBAE1F,IAAI,OAAO,WAAW,eAAe,OAAO,gBAAgB,aAC1D,OAAO,aAAa,CAAC,IAAI,YAAY;gBAGvC,MAAM,gBAAgB;gBAEtB,IAAK,IAAI,IAAI,GAAG,IAAI,eAAe,MAAM,EAAE,IAAK;oBAC9C,IAAI,KAAK,cAAc,CAAC,EAAE,CAAC,EAAE;oBAE7B,IAAI,CAAC,cAAc,CAAC,GAAG,EACrB,aAAa,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE;gBAEvC;YACF,OAAO;QACT,CAAC;QAED,IAAI,KAAK,IAAI,KAAK,SAAS;YACzB,+BAA+B;YAC/B,KAAK,IAAI,kBAAkB,KAAK,WAAW,CAAC,IAAI,CAAE;gBAChD,IAAI,QAAQ,eAAe,SAAS,GAAG,eAAe,SAAS,GAAG,eAAe,KAAK;gBACtF,QAAQ,KAAK,CAAC,4BAAiB,eAAe,OAAO,GAAG,OAAO,QAAQ,SAAS,eAAe,KAAK,CAAC,IAAI,CAAC;YAC5G;YAEA,IAAI,OAAO,aAAa,aAAa;gBACnC,gCAAgC;gBAChC;gBACA,IAAI,UAAU,mBAAmB,KAAK,WAAW,CAAC,IAAI,GAAG,aAAa;gBAEtE,SAAS,IAAI,CAAC,WAAW,CAAC;YAC5B,CAAC;QACH,CAAC;IACH;IAEA,GAAG,OAAO,GAAG,SAAU,CAAC,EAAE;QACxB,QAAQ,KAAK,CAAC,EAAE,OAAO;IACzB;IAEA,GAAG,OAAO,GAAG,WAAY;QACvB,QAAQ,IAAI,CAAC;IACf;AACF,CAAC;AAED,SAAS,qBAAqB;IAC5B,IAAI,UAAU,SAAS,cAAc,CAAC;IAEtC,IAAI,SAAS;QACX,QAAQ,MAAM;QACd,QAAQ,GAAG,CAAC;IACd,CAAC;AACH;AAEA,SAAS,mBAAmB,WAAW,EAAE;IACvC,IAAI,UAAU,SAAS,aAAa,CAAC;IACrC,QAAQ,EAAE,GAAG;IACb,IAAI,YAAY;IAEhB,KAAK,IAAI,cAAc,YAAa;QAClC,IAAI,QAAQ,WAAW,MAAM,CAAC,MAAM,GAAG,WAAW,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,QAAU;YAC5E,OAAO,CAAC,EAAE,EAAE;sCACoB,EAAE,mBAAmB,MAAM,QAAQ,EAAE,2FAA2F,EAAE,MAAM,QAAQ,CAAC;AACvL,EAAE,MAAM,IAAI,CAAC,CAAC;QACV,GAAG,MAAM,WAAW,KAAK;QACzB,aAAa,CAAC;;;YAGN,EAAE,WAAW,OAAO,CAAC;;aAEpB,EAAE,MAAM;;UAEX,EAAE,WAAW,KAAK,CAAC,GAAG,CAAC,CAAA,OAAQ,uBAAY,OAAO,UAAU,IAAI,CAAC,IAAI;;QAEvE,EAAE,WAAW,aAAa,GAAG,CAAC,sCAAsC,EAAE,WAAW,aAAa,CAAC,sCAAsC,CAAC,GAAG,EAAE,CAAC;;IAEhJ,CAAC;IACH;IAEA,aAAa;IACb,QAAQ,SAAS,GAAG;IACpB,OAAO;AACT;AAEA,SAAS,aAAa;IACpB,IAAI,YAAY,UACd,SAAS,MAAM;SACV,IAAI,UAAU,OAAO,OAAO,IAAI,OAAO,OAAO,CAAC,MAAM,EAC1D,OAAO,OAAO,CAAC,MAAM;AAEzB;AAEA,SAAS,WAAW,MAAM,EAAE,EAAE,EAC9B,mCAAmC,GACnC;IACE,IAAI,UAAU,OAAO,OAAO;IAE5B,IAAI,CAAC,SACH,OAAO,EAAE;IAGX,IAAI,UAAU,EAAE;IAChB,IAAI,GAAG,GAAG;IAEV,IAAK,KAAK,QACR,IAAK,KAAK,OAAO,CAAC,EAAE,CAAC,EAAE,CAAE;QACvB,MAAM,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QAEtB,IAAI,QAAQ,MAAM,MAAM,OAAO,CAAC,QAAQ,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE,KAAK,IAC9D,QAAQ,IAAI,CAAC;YAAC;YAAQ;SAAE;IAE5B;IAGF,IAAI,OAAO,MAAM,EACf,UAAU,QAAQ,MAAM,CAAC,WAAW,OAAO,MAAM,EAAE;IAGrD,OAAO;AACT;AAEA,SAAS,WAAW,IAAI,EAAE;IACxB,IAAI,UAAU,KAAK,SAAS;IAE5B,QAAQ,MAAM,GAAG,WAAY;QAC3B,IAAI,KAAK,UAAU,KAAK,IAAI,EAC1B,aAAa;QACb,KAAK,UAAU,CAAC,WAAW,CAAC;IAEhC;IAEA,QAAQ,YAAY,CAAC,QACrB,KAAK,YAAY,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,KAAK,GAAG,KAAK,aAAa;IAE1E,KAAK,UAAU,CAAC,YAAY,CAAC,SAAS,KAAK,WAAW;AACxD;AAEA,IAAI,aAAa,IAAI;AAErB,SAAS,YAAY;IACnB,IAAI,YACF;IAGF,aAAa,WAAW,WAAY;QAClC,IAAI,QAAQ,SAAS,gBAAgB,CAAC;QAEtC,IAAK,IAAI,IAAI,GAAG,IAAI,MAAM,MAAM,EAAE,IAAK;YACrC,gCAAgC;YAChC,IAAI,OAEF,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC;YACxB,IAAI,WAAW;YACf,IAAI,sBAAsB,aAAa,cAAc,IAAI,OAAO,mDAAmD,WAAW,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,WAAW,MAAM,UAAU;YACnL,IAAI,WAAW,gBAAgB,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,MAAM,MAAM,KAAK,CAAC;YAErF,IAAI,CAAC,UACH,WAAW,KAAK,CAAC,EAAE;QAEvB;QAEA,aAAa,IAAI;IACnB,GAAG;AACL;AAEA,SAAS,YAAY,KAAK,EAAE;IAC1B,IAAI,MAAM,IAAI,KAAK,MAAM;QACvB,IAAI,OAAO,aAAa,aAAa;YACnC,IAAI,SAAS,SAAS,aAAa,CAAC;YACpC,OAAO,GAAG,GAAG,MAAM,GAAG,GAAG,QAAQ,KAAK,GAAG;YAEzC,IAAI,MAAM,YAAY,KAAK,YACzB,OAAO,IAAI,GAAG;YAGhB,OAAO,IAAI,QAAQ,CAAC,SAAS,SAAW;gBACtC,IAAI;gBAEJ,OAAO,MAAM,GAAG,IAAM,QAAQ;gBAE9B,OAAO,OAAO,GAAG;gBAChB,CAAA,iBAAiB,SAAS,IAAI,AAAD,MAAO,IAAI,IAAI,mBAAmB,KAAK,KAAa,eAAe,WAAW,CAAC;YAC/G;QACF,OAAO,IAAI,OAAO,kBAAkB,YAAY;YAC9C,iBAAiB;YACjB,IAAI,MAAM,YAAY,KAAK,YACzB,OAAO,OAAmB,MAAM,GAAG,GAAG,QAAQ,KAAK,GAAG;iBAEtD,OAAO,IAAI,QAAQ,CAAC,SAAS,SAAW;gBACtC,IAAI;oBACF,cAA0B,MAAM,GAAG,GAAG,QAAQ,KAAK,GAAG;oBAEtD;gBACF,EAAE,OAAO,KAAK;oBACZ,OAAO;gBACT;YACF;QAEJ,CAAC;IACH,CAAC;AACH;AAEA,eAAe,gBAAgB,MAAM,EAAE;IACrC,OAAO,eAAe,GAAG,OAAO,MAAM,CAAC,IAAI;IAC3C,IAAI;IAEJ,IAAI;QACF,kEAAkE;QAClE,gEAAgE;QAChE,gEAAgE;QAChE,mDAAmD;QACnD,iDAAiD;QACjD,mDAAmD;QACnD,IAAI,CAAC,mBAAmB;YACtB,IAAI,WAAW,OAAO,GAAG,CAAC,CAAA,QAAS;gBACjC,IAAI;gBAEJ,OAAO,AAAC,CAAA,eAAe,YAAY,MAAK,MAAO,IAAI,IAAI,iBAAiB,KAAK,IAAI,KAAK,IAAI,aAAa,KAAK,CAAC,CAAA,MAAO;oBAClH,oCAAoC;oBACpC,oEAAoE;oBACpE,IAAI,UAAU,OAAO,OAAO,IAAI,OAAO,OAAO,CAAC,WAAW,GAAG,gBAAgB,IAAI,GAAG;wBAClF,IAAI,OAAO,4BAA4B,eAAe,kBAAkB,0BAA0B;4BAChG,OAAO,OAAO,CAAC,MAAM;4BACrB;wBACF,CAAC;wBAED,MAAM,GAAG,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,+BAA+B,mBAAmB,MAAM,GAAG,GAAG,QAAQ,KAAK,GAAG;wBAChH,OAAO,YAAY;oBACrB,CAAC;oBAED,MAAM,IAAI;gBACZ,EAAE;YACJ;YACA,kBAAkB,MAAM,QAAQ,GAAG,CAAC;QACtC,CAAC;QAED,OAAO,OAAO,CAAC,SAAU,KAAK,EAAE;YAC9B,SAAS,OAAO,MAAM,CAAC,IAAI,EAAE;QAC/B;IACF,SAAU;QACR,OAAO,OAAO,eAAe;QAE7B,IAAI,iBACF,gBAAgB,OAAO,CAAC,CAAA,SAAU;YAChC,IAAI,QAAQ;gBACV,IAAI;gBAEH,CAAA,kBAAkB,SAAS,IAAI,AAAD,MAAO,IAAI,IAAI,oBAAoB,KAAK,KAAa,gBAAgB,WAAW,CAAC;YAClH,CAAC;QACH;IAEJ;AACF;AAEA,SAAS,SAAS,MAAM,EAEtB,KAAK,EAEL;IACA,IAAI,UAAU,OAAO,OAAO;IAE5B,IAAI,CAAC,SACH;IAGF,IAAI,MAAM,IAAI,KAAK,OACjB;SACK,IAAI,MAAM,IAAI,KAAK,MAAM;QAC9B,IAAI,OAAO,MAAM,YAAY,CAAC,OAAO,aAAa,CAAC;QAEnD,IAAI,MAAM;YACR,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;gBACrB,iEAAiE;gBACjE,oHAAoH;gBACpH,IAAI,UAAU,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE;gBAElC,IAAK,IAAI,OAAO,QACd,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;oBAC5C,IAAI,KAAK,OAAO,CAAC,IAAI;oBACrB,IAAI,UAAU,WAAW,OAAO,MAAM,CAAC,IAAI,EAAE;oBAE7C,IAAI,QAAQ,MAAM,KAAK,GACrB,UAAU,OAAO,MAAM,CAAC,IAAI,EAAE;gBAElC,CAAC;YAEL,CAAC;YAED,IAAI,mBAGF,AAFA,4DAA4D;YAC5D,+CAA+C;YAC9C,CAAA,GAAG,IAAI,AAAD,EAAG,MAAM,MAAM;YACvB,CAAC,aAAa;YAGf,IAAI,KAAK,OAAO,eAAe,CAAC,MAAM,EAAE,CAAC;YACzC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG;gBAAC;gBAAI;aAAK;QAChC,OAAO,IAAI,OAAO,MAAM,EACtB,SAAS,OAAO,MAAM,EAAE;IAE5B,CAAC;AACH;AAEA,SAAS,UAAU,MAAM,EAAE,EAAE,EAAE;IAC7B,IAAI,UAAU,OAAO,OAAO;IAE5B,IAAI,CAAC,SACH;IAGF,IAAI,OAAO,CAAC,GAAG,EAAE;QACf,8EAA8E;QAC9E,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE;QACzB,IAAI,UAAU,EAAE;QAEhB,IAAK,IAAI,OAAO,KAAM;YACpB,IAAI,UAAU,WAAW,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI;YAEtD,IAAI,QAAQ,MAAM,KAAK,GACrB,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI;QAE1B,EAAE,sGAAsG;QAGxG,OAAO,OAAO,CAAC,GAAG;QAClB,OAAO,OAAO,KAAK,CAAC,GAAG,EAAE,0BAA0B;QAEnD,QAAQ,OAAO,CAAC,CAAA,KAAM;YACpB,UAAU,OAAO,MAAM,CAAC,IAAI,EAAE;QAChC;IACF,OAAO,IAAI,OAAO,MAAM,EACtB,UAAU,OAAO,MAAM,EAAE;AAE7B;AAEA,SAAS,eAAe,MAAM,EAE5B,EAAE,EAEF,YAAY,EAEZ;IACA,IAAI,kBAAkB,QAAQ,IAAI,eAChC,OAAO,IAAI;IACZ,CAAC,uGAAuG;IAGzG,IAAI,UAAU,WAAW,OAAO,MAAM,CAAC,IAAI,EAAE;IAC7C,IAAI,WAAW,KAAK;IAEpB,MAAO,QAAQ,MAAM,GAAG,EAAG;QACzB,IAAI,IAAI,QAAQ,KAAK;QACrB,IAAI,IAAI,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI;QAE1C,IAAI,GACF,+EAA+E;QAC/E,WAAW,IAAI;aACV;YACL,yDAAyD;YACzD,IAAI,IAAI,WAAW,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;YAE3C,IAAI,EAAE,MAAM,KAAK,GAAG;gBAClB,kFAAkF;gBAClF,WAAW,KAAK;gBAChB,KAAM;YACR,CAAC;YAED,QAAQ,IAAI,IAAI;QAClB,CAAC;IACH;IAEA,OAAO;AACT;AAEA,SAAS,kBAAkB,MAAM,EAE/B,EAAE,EAEF,YAAY,EAEZ;IACA,IAAI,UAAU,OAAO,OAAO;IAE5B,IAAI,CAAC,SACH;IAGF,IAAI,gBAAgB,CAAC,YAAY,CAAC,OAAO,aAAa,CAAC,EAAE;QACvD,2EAA2E;QAC3E,yEAAyE;QACzE,IAAI,CAAC,OAAO,MAAM,EAChB,OAAO,IAAI;QAGb,OAAO,eAAe,OAAO,MAAM,EAAE,IAAI;IAC3C,CAAC;IAED,IAAI,aAAa,CAAC,GAAG,EACnB,OAAO,IAAI;IAGb,aAAa,CAAC,GAAG,GAAG,IAAI;IACxB,IAAI,SAAS,OAAO,KAAK,CAAC,GAAG;IAC7B,eAAe,IAAI,CAAC;QAAC;QAAQ;KAAG;IAEhC,IAAI,CAAC,UAAU,OAAO,GAAG,IAAI,OAAO,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAC7D,OAAO,IAAI;AAEf;AAEA,SAAS,aAAa,MAAM,EAE1B,EAAE,EAEF;IACA,IAAI,SAAS,OAAO,KAAK,CAAC,GAAG;IAC7B,OAAO,OAAO,GAAG,CAAC;IAElB,IAAI,UAAU,OAAO,GAAG,EACtB,OAAO,GAAG,CAAC,IAAI,GAAG,OAAO,OAAO;IAGlC,IAAI,UAAU,OAAO,GAAG,IAAI,OAAO,GAAG,CAAC,iBAAiB,CAAC,MAAM,EAC7D,OAAO,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAU,EAAE,EAAE;QACjD,GAAG,OAAO,OAAO;IACnB;IAGF,OAAO,OAAO,KAAK,CAAC,GAAG;IACvB,OAAO;IACP,SAAS,OAAO,KAAK,CAAC,GAAG;IAEzB,IAAI,UAAU,OAAO,GAAG,IAAI,OAAO,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAC5D,OAAO,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAU,EAAE,EAAE;QAChD,IAAI,qBAAqB,GAAG,WAAY;YACtC,OAAO,WAAW,OAAO,MAAM,CAAC,IAAI,EAAE;QACxC;QAEA,IAAI,sBAAsB,eAAe,MAAM,EAC7C,+BAA+B;QAC/B,eAAe,IAAI,CAAC,KAAK,CAAC,gBAAgB;IAE9C;IAGF,cAAc,CAAC,GAAG,GAAG,IAAI;AAC3B;;;ACnkBA;AAAA;;AACA;;AACA;AACA;;AACA;;AACA;;AACA;AACA;AACA;AAMA,MAAM,WAAW,IAAI,EAAE,+CAA+C;AACtE,MAAM,cAAc,OAAO,QAAQ,CAAC,QAAQ;AAC5C,MAAM,WAAW,eAAe;AAEhC,MAAM,UAAU,IAAM;IACpB,CAAA,GAAA,yBAAc,AAAD,KAAK,yDAAyD;IAC3E,MAAM,QAAQ,CAAA,GAAA,qBAAmB,AAAD,EAAE,WAAW,sDAAsD;IACnG,CAAA,GAAA,oCAAqB,AAAD;IACpB,IAAI,UAAU;QACZ,CAAA,GAAA,yCAA0B,AAAD;QACzB,CAAA,GAAA,iCAAkB,AAAD;QACjB,CAAA,GAAA,sBAAY,AAAD,EAAE,QAAQ,mCAAmC;IAC1D,CAAC;IACD,CAAA,GAAA,qBAAW,AAAD,EAAE,QAAQ,8BAA8B;IAClD,CAAA,GAAA,8BAAkB,AAAD,KAAK,oDAAoD;IAC1E,CAAA,GAAA,yBAAS,AAAD,KAAK,sCAAsC;IACnD,CAAA,GAAA,uBAAO,AAAD,KAAK,wEAAwE;IACnF,SAAS,aAAa,CAAC,+BAA+B,CAAA,GAAA,wBAAQ,AAAD,KAAK,2BAA2B;IAC7F,SAAS,gBAAgB,CAAC,wBAAwB,OAAO,CAAC,CAAC,IAAM;QAC/D,EAAE,MAAM,GAAG;IACb;IACA,CAAA,GAAA,sBAAY,AAAD,KAAK,wDAAwD;AAC1E;AAEA,MAAM,YAAY,IAAM;IACtB,CAAA,GAAA,0BAAe,AAAD;AAChB;AAEA,IAAI,SAAS,UAAU,KAAK,WAAW;IACrC;IACA;AACF,OAAO;IACL,OAAO,gBAAgB,CAAC,QAAQ;IAChC,SAAS,gBAAgB,CAAC,oBAAoB;AAChD,CAAC;AAED,iCAAiC;AACjC,MAAM,eAAe,CAAC,IAAM;IAC1B,IAAI,EAAE,GAAG,KAAK,UAAU;QACtB,MAAM,WAAW,SAAS,aAAa,CAAC;QACxC,MAAM,gBAAgB,SAAS,aAAa,CAAC;QAC7C,IAAI,cAAc,KAAK,CAAC,OAAO,IAAI,GACjC,SAAS,KAAK;IAElB,CAAC;AACH;AACA,OAAO,gBAAgB,CAAC,WAAW;;;AC5DnC;;kBAAe,YAAY,IAAM;IAC/B,SAAS,gBAAgB,QAAQ,EAAE;QACjC,yEAAyE;QACzE,MAAM,KAAK,SAAS,aAAa,CAAC;QAClC,GAAG,KAAK,GAAG;QACX,SAAS,IAAI,CAAC,WAAW,CAAC;QAC1B,GAAG,MAAM;QACT,SAAS,WAAW,CAAC;QACrB,SAAS,IAAI,CAAC,WAAW,CAAC;QAE1B,wBAAwB;QACxB,EAAE,6BAA6B,IAAI,CAAC,WAAY;YAC9C,EAAE,IAAI,EAAE,IAAI,CAAC;QACf;QAEA,qCAAqC;QACrC,WAAW,WAAY;YACrB,EAAE,6BAA6B,IAAI,CAAC,WAAY;gBAC9C,EAAE,IAAI,EAAE,IAAI,CAAC;YACf;QACF,GAAG;IACL;IAEA,IAAI,mBAAmB,SAAS,cAAc,CAAC;IAC/C,iBAAiB,gBAAgB,CAAC,SAAS,WAAY;QACrD,gBAAgB;IAClB;IAEA,IAAI,eAAe,SAAS,cAAc,CAAC;IAC3C,aAAa,gBAAgB,CAAC,SAAS,WAAY;QACjD,gBAAgB;IAClB;AACF;;;AChCA,QAAQ,cAAc,GAAG,SAAU,CAAC,EAAE;IACpC,OAAO,KAAK,EAAE,UAAU,GAAG,IAAI;QAAC,SAAS;IAAC,CAAC;AAC7C;AAEA,QAAQ,iBAAiB,GAAG,SAAU,CAAC,EAAE;IACvC,OAAO,cAAc,CAAC,GAAG,cAAc;QAAC,OAAO,IAAI;IAAA;AACrD;AAEA,QAAQ,SAAS,GAAG,SAAU,MAAM,EAAE,IAAI,EAAE;IAC1C,OAAO,IAAI,CAAC,QAAQ,OAAO,CAAC,SAAU,GAAG,EAAE;QACzC,IAAI,QAAQ,aAAa,QAAQ,gBAAgB,KAAK,cAAc,CAAC,MACnE;QAGF,OAAO,cAAc,CAAC,MAAM,KAAK;YAC/B,YAAY,IAAI;YAChB,KAAK,WAAY;gBACf,OAAO,MAAM,CAAC,IAAI;YACpB;QACF;IACF;IAEA,OAAO;AACT;AAEA,QAAQ,MAAM,GAAG,SAAU,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE;IAC9C,OAAO,cAAc,CAAC,MAAM,UAAU;QACpC,YAAY,IAAI;QAChB,KAAK;IACP;AACF;;;AC9BA;;kBAAe,UAAU,IAAM;IAE3B,IAAI,aAAa,KAAK;IACtB,IAAI,UAAU,SAAS,gBAAgB,CAAC;IACxC,QAAQ,OAAO,CAAE,CAAC,GAAG,IAAM;QACvB,EAAE,gBAAgB,CAAC,aAAa,IAAM;YACpC,EAAE,GAAG,QAAQ,CAAC;YACd,IAAI,OAAO,EAAE;YACb,kDAAkD;YAClD,IAAI,aAAa,EAAE,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC;YAC7C,IAAG,YACK,IAAI,QAAQ,MAAM,WAAW,KAAK,CAAC,IAAI,CAAC,EAAE;YAElD,EAAE,wBAAwB,SAAS,CAAC,WAAU;gBAE5C,aAAa,IAAI;gBACjB,KAAK,IAAI,CAAC,cAAc,GAAG,CAAC,oBAAoB;gBAChD,KAAK,IAAI,CAAC,cAAc,GAAG,CAAC,mBAAmB;YACjD;YACA,EAAE,wBAAwB,QAAQ,CAAC,WAAU;gBAC3C,aAAa,KAAK;YACpB;YACI,IAAI,CAAC,YAAY;gBACnB,EAAE,GAAG,IAAI,CAAC,sBAAsB,GAAG,CAAC,SAAS;gBAC7C,EAAE,GAAG,IAAI,CAAC,+BAA+B,GAAG,CAAC,SAAS;gBACtD,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,SAAS;gBAC9B,EAAE,GAAG,IAAI,CAAC,gBAAgB,GAAG,CAAC,SAAS;gBACvC,EAAE,GAAG,IAAI,CAAC,uBAAuB,GAAG,CAAC,oBAAoB,kDAAmD,QAAQ;gBACpH,EAAE,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,SAAS;YAC9C,CAAC;QACD;QAEF,EAAE,gBAAgB,CAAC,YAAY,IAAM;YACnC,EAAE,GAAG,WAAW,CAAC;YACjB,EAAE,GAAG,IAAI,CAAC,+BAA+B,GAAG,CAAC,SAAS;YACtD,EAAE,GAAG,IAAI,CAAC,sBAAsB,GAAG,CAAC,SAAS;YAC7C,EAAE,GAAG,IAAI,CAAC,uBAAuB,GAAG,CAAC,SAAS;YAC9C,EAAE,GAAG,IAAI,CAAC,gBAAgB,GAAG,CAAC,SAAS;YACvC,EAAE,GAAG,IAAI,CAAC,uBAAuB,GAAG,CAAC,oBAAoB;YACzD,EAAE,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,SAAS;QAChD;IACF;IAEI,qCAAqC;IACrC,IAAI,cAAc,QAAQ,MAAM;IAChC,kEAAkE;IAClE,sEAAsE;IACtE,IAAG,SAAS,aAAa,CAAC,mBAAmB,SAAS,aAAa,CAAC,kBACpE,EAAE,gBAAgB,KAAK,CAAC,WAAU;QAC9B,sDAAsD;QACtD,WAAW,WAAU;YACrB,IAAG,EAAE,QAAQ,MAAM,GAAG,aAClB,EAAE,iBAAiB,WAAW,CAAC;YAEnC,IAAG,EAAE,QAAQ,MAAM,IAAI,aACnB,EAAE,iBAAiB,QAAQ,CAAC;QAElC,GAAE;IACJ;AAER;;;AC5DA;;AA2KA,qDAAS;AAAT,oDAA0B;AA3K1B,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AAEJ,MAAM,iBAAiB,IAAM;IAC3B;IACA;IACA;AACF;AAEA,qHAAqH;AACrH,SAAS,yBAAyB;IAChC,SAAS,eAAe,IAAI,EAAE;QAC5B,OAAO,KAAK,IAAI,KAAK,OAAO,QAAQ,CAAC,IAAI;IAC3C;IAEA,SAAS,iBAAiB,IAAI,EAAE;QAC9B,OACE,KAAK,SAAS,CAAC,QAAQ,CAAC,4BACxB,KAAK,SAAS,CAAC,QAAQ,CAAC;IAE5B;IAEA,MAAM,QAAQ,SAAS,gBAAgB,CAAC;IAExC,MAAM,OAAO,CAAC,CAAC,OAAS;QACtB,IAAI,CAAC,eAAe,OAAO;YACzB,IAAI,iBAAiB,OAAO;YAC5B,KAAK,gBAAgB,CAAC,SAAS;QAC/B,sDAAsD;QACtD,8DAA8D;QAC9D,WAAW;QACX,uDAAuD;QACvD,wDAAwD;QACxD,mCAAmC;QACnC,UAAU;QACV,wDAAwD;QACxD,QAAQ;QACV,CAAC;IACH;IAEA,SAAS,eAAe,CAAC,EAAE;QACzB,EAAE,cAAc;QAChB,kBAAkB;QAClB,SAAS,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;QAC9C,SAAS,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;QAC9C,WAAW,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;QAChD,WAAW,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;QAEhD,+CAA+C;QAC/C,KAAK,IAAI,GAAG,IAAI;QAChB,OAAO,IAAI,GAAG,IAAI;QAClB,KAAK,IAAI;QACT,OAAO,IAAI;QACX,WAAW,WAAY;YACrB,KAAK,IAAI,GAAG,KAAK;YACjB,OAAO,IAAI,GAAG,KAAK;QACrB,GAAG;QAEH,IAAI,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC;QAE3B,IAAI,EAAE,OAAO,IAAI,EAAE,OAAO,EACxB,OAAO,IAAI,CAAC,SAAS;aAErB,WACE,SAAU,GAAG,EAAE;YACb,OAAO,QAAQ,GAAG;QACpB,GACA,MACA;IAGN;AACF;AAEA,iEAAiE;AACjE,SAAS,kBAAkB;IACzB,WAAW,SAAS,aAAa,CAAC;IAClC,aAAa,SAAS,aAAa,CAAC;IAEpC,eAAe;IACf,OAAO,OAAO,aAAa,CAAC;QAC1B,WAAW;QACX,UAAU;QACV,UAAU,IAAI;QACd,MAAM,IAAI;QACV,MAAM;QACN,sBAAsB;QACtB,MAAM;IACR;IAEA,eAAe;IACf,SAAS,OAAO,aAAa,CAAC;QAC5B,WAAW;QACX,UAAU;QACV,UAAU,KAAK;QACf,MAAM,KAAK;QACX,MAAM;QACN,sBAAsB;QACtB,MAAM;IACR;IAEA,6DAA6D;IAC7D,KAAK,gBAAgB,CAAC,cAAc,IAAM;QACxC,KAAK,IAAI;QACT,SAAS,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;QAC9C,SAAS,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;IAChD;IAEA,6DAA6D;IAC7D,OAAO,gBAAgB,CAAC,cAAc,IAAM;QAC1C,OAAO,IAAI;QACX,WAAW,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;QAChD,WAAW,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;IAClD;AACF;AAEA,oCAAoC;AACpC,SAAS,kBAAkB;IACzB,SAAS,gBAAgB,CAAC,cAAc,IAAM;QAC5C,KAAK,IAAI;QACT,KAAK,IAAI,GAAG,IAAI;QAChB,SAAS,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;QAC9C,SAAS,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;IAChD;IAEA,SAAS,gBAAgB,CAAC,cAAc,IAAM;QAC5C,KAAK,IAAI,GAAG,KAAK;QACjB,KAAK,gBAAgB,CACnB,YACA,IAAM;YACJ,SAAS,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;YAC9C,SAAS,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;QAChD,GACA;YAAE,MAAM,IAAI;QAAC;IAEjB;IAEA,WAAW,gBAAgB,CAAC,cAAc,IAAM;QAC9C,OAAO,IAAI;QACX,OAAO,IAAI,GAAG,IAAI;QAClB,WAAW,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;QAChD,WAAW,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;IAClD;IAEA,WAAW,gBAAgB,CAAC,cAAc,IAAM;QAC9C,OAAO,IAAI,GAAG,KAAK;QACnB,OAAO,gBAAgB,CACrB,YACA,IAAM;YACJ,WAAW,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;YAChD,WAAW,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;QAClD,GACA;YAAE,MAAM,IAAI;QAAC;IAEjB;AACF;AAEA,SAAS,kBAAkB;IACzB,KAAK,IAAI,GAAG,KAAK;IACjB,KAAK,gBAAgB,CACnB,YACA,IAAM;QACJ,SAAS,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;QAC9C,SAAS,aAAa,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;IAChD,GACA;QAAE,MAAM,IAAI;IAAC;AAEjB;;;ACzKA,wDAAwD;AACxD;;AAAe,SAAS,qBAAqB;IAC3C,iCAAiC;IACjC,IAAI,SAAS,gBAAgB,CAAC,iBAAiB,MAAM,GAAG,GACtD,sCAAsC;IACtC,mEAAmE;IACnE,6EAA6E;IAE7E,yCAAyC;IAEzC,yEAAyE;IACzE,+DAA+D;IAE/D,6BAA6B;IAC7B,4EAA4E;IAC5E,+FAA+F;IAC/F,uEAAuE;IACvE,sBAAsB;IACtB,qBAAqB;IACrB,MAAM;IACN,KAAK;IAEL,6BAA6B;IAC7B,SAAS,gBAAgB,CAAC,iBAAiB,OAAO,CAAC,CAAA,IAAK;QACtD,EAAE,MAAM;IACV;AAEJ,EAEA,mEAAmE;CACnE,gCAAgC;CAChC,4CAA4C;CAC5C,eAAe;CACf,yBAAyB;CACzB,0BAA0B;CAC1B,uBAAuB;CACvB,2EAA2E;CAC3E,kFAAkF;CAClF,QAAQ;CACR,MAAM;CAEN,0CAA0C;CAC1C,+BAA+B;CAE/B,cAAc;CAEd,yBAAyB;CACzB,0DAA0D;CAC1D,sBAAsB;CACtB,wBAAwB;CACxB,6CAA6C;CAC7C,QAAQ;CACR,YAAY;CACZ,OAAO;CACP,sBAAsB;CAEtB,+BAA+B;CAC/B,+EAA+E;CAC/E,wBAAwB;CACxB,gCAAgC;CAEhC,wEAAwE;CACxE,wEAAwE;CAExE,kFAAkF;CAClF,yEAAyE;CAEzE,wBAAwB;CACxB,oDAAoD;CACpD,sEAAsE;CACtE,yCAAyC;CACzC,oDAAoD;CACpD,YAAY;CAEZ,yDAAyD;CACzD,sCAAsC;CACtC,oCAAoC;CACpC,YAAY;CACZ,iBAAiB;CACjB,yEAAyE;CAEzE,0DAA0D;CAC1D,qCAAqC;CACrC,oCAAoC;CACpC,YAAY;CACZ,UAAU;CACV,QAAQ;CACR,MAAM;CACN,IAAI;kBAvFoB;;;ACDxB;;AAAA;;kBAEe,WAAW,IAAM;IAC9B,IAAI;IAEJ,IAAI,EAAE,QAAQ,KAAK,MAAM,MACvB,YAAY;SAEZ,YAAY;IAGd,yCAAyC;IACzC,WAAW;IACX,+DAA+D;IAE/D,aAAa;IACb,IAAI,aAAa,eAAe,OAAO,CAAC;IAExC,2BAA2B;IAC3B,gBAAgB;IAChB,uBAAuB;IACvB,MAAM;IAEN,CAAA,GAAA,uBAAK,AAAD,EAAE,GAAG,CAAC,+CAA+C;QACvD,SAAS;QACT,YAAY;IACd;IAEA,CAAA,GAAA,uBAAK,AAAD,EAAE,GAAG,CAAC,4BAA4B;QACpC,SAAS;IACX;IAEA,MAAM,SAAS,CAAC,QAAU;QACxB,EAAE,cAAc,GAAG,CAAC;YAAE,UAAU;QAAU;QAC1C,EAAE,yBAAyB,OAAO,CAAC;YAAE,SAAS;QAAE,GAAG;QACnD,EAAE,cAAc,GAAG,CAAC;YAAE,SAAS;QAAO;QACtC,EAAE,uBAAuB,GAAG,CAAC;YAAE,SAAS;QAAO;QAE/C,CAAA,GAAA,uBAAK,AAAD,EAAE;YACJ,SAAS;YACT,SAAS;gBAAE,OAAO;gBAAG,UAAU;gBAAK,QAAQ;YAAc;YAC1D,OAAO;QACT;QAEA,EAAE,uBAAuB,GAAG,CAAC;YAAE,SAAS;QAAQ;QAChD,EAAE,mBAAmB,GAAG,CAAC;YAAE,SAAS;QAAQ;QAE5C,CAAA,GAAA,uBAAK,AAAD,EAAE;YACJ,SAAS;YACT,SAAS;gBAAE,OAAO;gBAAG,UAAU;gBAAK,QAAQ;YAAc;YAC1D,YAAY;gBACV,OAAO;oBAAC;oBAAQ;iBAAM;gBACtB,UAAU;gBACV,QAAQ;YACV;YACA,OAAO,CAAA,GAAA,uBAAK,AAAD,EAAE,OAAO,CAAC,KAAK;gBAAE,OAAO;YAAM;QAC3C;IAEA,UAAU;IACV,0BAA0B;IAC1B,iEAAiE;IACjE,qEAAqE;IACrE,wDAAwD;IACxD,MAAM;IACR;IACA,MAAM,UAAU,CAAC,QAAU;QACzB,EAAE,cAAc,GAAG,CAAC;YAAE,UAAU;QAAU;QAC1C,EAAE,yBAAyB,GAAG,CAAC;YAAE,SAAS;QAAO;QACjD,EAAE,cAAc,GAAG,CAAC;YAAE,SAAS;QAAO;QACtC,EAAE,mBAAmB,GAAG,CAAC;YAAE,SAAS;QAAS;QAC7C,EAAE,uBAAuB,GAAG,CAAC;YAAE,SAAS;QAAS;QAEjD,CAAA,GAAA,uBAAK,AAAD,EAAE;YACJ,SAAS;YACT,SAAS;gBAAE,OAAO;gBAAG,UAAU;gBAAK,QAAQ;YAAc;YAC1D,OAAO;QACT;QAEA,CAAA,GAAA,uBAAK,AAAD,EAAE;YACJ,SAAS;YACT,SAAS;gBAAE,OAAO;gBAAG,UAAU;gBAAG,QAAQ;YAAc;YACxD,YAAY;gBAAE,OAAO;oBAAC;oBAAK;iBAAM;gBAAE,UAAU;gBAAG,QAAQ;YAAc;YACtE,OAAO,CAAA,GAAA,uBAAK,AAAD,EAAE,OAAO,CAAC,KAAK;gBAAE,OAAO;YAAM;QAC3C;IAEA,UAAU;IACV,0BAA0B;IAC1B,+DAA+D;IAC/D,kBAAkB;IAClB,6BAA6B;IAC7B,sBAAsB;IACtB,6BAA6B;IAC7B,OAAO;IACP,wDAAwD;IACxD,MAAM;IACR;IAEA,0CAA0C;IAC1C,IAAI,cAAc,EAAE,QAAQ,KAAK,MAAM,MAAM;QAC3C,uDAAuD;QACvD,EAAE,gBAAgB,MAAM;QAExB,EAAE,4BAA4B,GAAG,CAAC;YAChC,OAAO;YACP,QAAQ;YACR,UAAU;YACV,SAAS;QACX;QAEA,QAAQ;IACV,OAEK;QACH,EAAE,cAAc,GAAG,CAAC;YAAE,SAAS;QAAQ;QAEvC,EAAE,uBAAuB,EAAE,CAAC,SAAS,WAAY;YAC/C,uDAAuD;YACvD,EAAE,gBAAgB,MAAM;YAExB,EAAE,4BACC,OAAO,CACN;gBACE,OAAO;gBACP,QAAQ;gBACR,SAAS;YACX,GACA,MAED,KAAK,CAAC,MACN,OAAO,CACN;gBACE,KAAK;gBACL,OAAO;gBACP,QAAQ;gBACR,UAAU;YACZ,GACA,MACA,WAAY;gBACV,OAAO;YACT;YAGJ,WAAW;YACX,QAAQ,GAAG,CAAC;YACZ,eAAe,OAAO,CAAC,WAAW,IAAI;QACxC;IACF,CAAC;AACH;;;ACnJA;;;;;CAKC,GAED,WAAW;AAEX;;AAAA,IAAI,0BAA0B;IAC5B,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,WAAW,IAAI;IACf,aAAa,IAAI;IACjB,QAAQ,IAAI;IACZ,gBAAgB,IAAI;IACpB,cAAc,IAAI;IAClB,UAAU,IAAI;IACd,MAAM;IACN,WAAW;IACX,UAAU,IAAI;IACd,gBAAgB;AAClB;AAEA,IAAI,uBAAuB;IACzB,UAAU;IACV,OAAO;IACP,UAAU;IACV,QAAQ;IACR,OAAO;AACT;AAEA,IAAI,kBAAkB;IAAC;IAAc;IAAc;IAAc;IAAU;IAAW;IAAW;IAAW;IAAS;IAAU;IAAU;IAAU;IAAQ;IAAS;IAAS;IAAe;IAAU;CAAW;AAEjN,UAAU;AAEV,IAAI,QAAQ;IACV,KAAK,CAAC;IACN,SAAS,CAAC;AACZ;AAEA,QAAQ;AAER,SAAS,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC7B,OAAO,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,MAAM;AACtC;AAEA,SAAS,eAAe,GAAG,EAAE,IAAI,EAAE;IACjC,OAAO,IAAI,OAAO,CAAC,QAAQ;AAC7B;AAEA,SAAS,eAAe,IAAI,EAAE,IAAI,EAAE;IAClC,OAAO,KAAK,KAAK,CAAC,IAAI,EAAE;AAC1B;AAEA,IAAI,KAAK;IACP,KAAK,SAAU,CAAC,EAAE;QAAE,OAAO,MAAM,OAAO,CAAC;IAAI;IAC7C,KAAK,SAAU,CAAC,EAAE;QAAE,OAAO,eAAe,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;IAAW;IACxF,KAAK,SAAU,CAAC,EAAE;QAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAAgB;IACzE,KAAK,SAAU,CAAC,EAAE;QAAE,OAAO,aAAa;IAAY;IACpD,KAAK,SAAU,CAAC,EAAE;QAAE,OAAO,aAAa;IAAkB;IAC1D,KAAK,SAAU,CAAC,EAAE;QAAE,OAAO,EAAE,QAAQ,IAAI,GAAG,GAAG,CAAC;IAAI;IACpD,KAAK,SAAU,CAAC,EAAE;QAAE,OAAO,OAAO,MAAM;IAAU;IAClD,KAAK,SAAU,CAAC,EAAE;QAAE,OAAO,OAAO,MAAM;IAAY;IACpD,KAAK,SAAU,CAAC,EAAE;QAAE,OAAO,OAAO,MAAM;IAAa;IACrD,KAAK,SAAU,CAAC,EAAE;QAAE,OAAO,GAAG,GAAG,CAAC,MAAM,MAAM,IAAI;IAAE;IACpD,KAAK,SAAU,CAAC,EAAE;QAAE,OAAO,qCAAqC,IAAI,CAAC;IAAI;IACzE,KAAK,SAAU,CAAC,EAAE;QAAE,OAAO,OAAO,IAAI,CAAC;IAAI;IAC3C,KAAK,SAAU,CAAC,EAAE;QAAE,OAAO,OAAO,IAAI,CAAC;IAAI;IAC3C,KAAK,SAAU,CAAC,EAAE;QAAE,OAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;IAAK;IAClE,KAAK,SAAU,CAAC,EAAE;QAAE,OAAO,CAAC,wBAAwB,cAAc,CAAC,MAAM,CAAC,qBAAqB,cAAc,CAAC,MAAM,MAAM,aAAa,MAAM;IAAa;AAC5J;AAEA,UAAU;AAEV,SAAS,sBAAsB,MAAM,EAAE;IACrC,IAAI,QAAQ,cAAc,IAAI,CAAC;IAC/B,OAAO,QAAQ,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,SAAU,CAAC,EAAE;QAAE,OAAO,WAAW;IAAI,KAAK,EAAE;AACrF;AAEA,8HAA8H;AAE9H,SAAS,OAAO,MAAM,EAAE,QAAQ,EAAE;IAEhC,IAAI,SAAS,sBAAsB;IACnC,IAAI,OAAO,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC,EAAE,EAAE,IAAI;IACzD,IAAI,YAAY,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,MAAM,CAAC,EAAE,EAAE,IAAI;IAChE,IAAI,UAAU,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI;IAC7D,IAAI,WAAY,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC,EAAE,EAAE,IAAI;IAC9D,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY;IAC/B,IAAI,OAAO,UAAW,CAAA,IAAI,KAAK,IAAI,CAAC,YAAY,KAAI;IACpD,IAAI,KAAK,OAAO,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,OAAO,QAAQ,CAAC;IACvD,IAAI,IAAI;IACR,IAAI,IAAI,OAAO,IAAI,AAAC,CAAA,OAAO,KAAK,CAAC,QAAO,IAAK,KAAK,CAAC,WAAW,EAAE;IAEhE,SAAS,OAAO,CAAC,EAAE;QACjB,IAAI,WAAW,WAAW,AAAC,WAAW,IAAK,OAAO,CAAC;QACnD,IAAI,OAAO,GACT,WAAW,KAAK,GAAG,CAAC,CAAC,WAAW,OAAO,MAAO,CAAA,IAAI,KAAK,GAAG,CAAC,KAAK,YAAY,IAAI,KAAK,GAAG,CAAC,KAAK,SAAQ;aAEtG,WAAW,AAAC,CAAA,IAAI,IAAI,QAAO,IAAK,KAAK,GAAG,CAAC,CAAC,WAAW;QAEvD,IAAI,MAAM,KAAK,MAAM,GAAK,OAAO;QACjC,OAAO,IAAI;IACb;IAEA,SAAS,cAAc;QACrB,IAAI,SAAS,MAAM,OAAO,CAAC,OAAO;QAClC,IAAI,QAAU,OAAO;QACrB,IAAI,QAAQ,IAAE;QACd,IAAI,UAAU;QACd,IAAI,OAAO;QACX,MAAM,IAAI,CAAE;YACV,WAAW;YACX,IAAI,OAAO,aAAa,GAAG;gBACzB;gBACA,IAAI,QAAQ,IAAM,KAAM;YAC1B,OACE,OAAO;QAEX;QACA,IAAI,WAAW,UAAU,QAAQ;QACjC,MAAM,OAAO,CAAC,OAAO,GAAG;QACxB,OAAO;IACT;IAEA,OAAO,WAAW,SAAS,WAAW;AAExC;AAEA,6GAA6G;AAE7G,SAAS,MAAM,KAAK,EAAE;IACpB,IAAK,UAAU,KAAK,GAAI,QAAQ;IAEhC,OAAO,SAAU,CAAC,EAAE;QAAE,OAAO,KAAK,IAAI,CAAC,AAAC,OAAO,GAAG,UAAU,KAAM,SAAU,CAAA,IAAI,KAAI;IAAI;AAC1F;AAEA,oDAAoD;AAEpD,IAAI,SAAS,AAAC,WAAY;IAExB,IAAI,mBAAmB;IACvB,IAAI,kBAAkB,MAAO,CAAA,mBAAmB,GAAE;IAElD,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE;QAAE,OAAO,MAAM,MAAM,MAAM,MAAM;IAAI;IAC1D,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE;QAAE,OAAO,MAAM,MAAM,MAAM;IAAI;IACpD,SAAS,EAAE,GAAG,EAAO;QAAE,OAAO,MAAM;IAAI;IAExC,SAAS,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;QAAE,OAAO,AAAC,CAAA,AAAC,CAAA,EAAE,KAAK,OAAO,KAAK,EAAE,KAAK,IAAG,IAAK,KAAK,EAAE,IAAG,IAAK;IAAG;IACjG,SAAS,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;QAAE,OAAO,MAAM,EAAE,KAAK,OAAO,KAAK,KAAK,MAAM,EAAE,KAAK,OAAO,KAAK,EAAE;IAAK;IAEvG,SAAS,gBAAgB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;QAC7C,IAAI,UAAU,UAAU,IAAI;QAC5B,GAAG;YACD,WAAW,KAAK,AAAC,CAAA,KAAK,EAAC,IAAK;YAC5B,WAAW,WAAW,UAAU,KAAK,OAAO;YAC5C,IAAI,WAAW,KAAO,KAAK;iBAAmB,KAAK;QACrD,QAAS,KAAK,GAAG,CAAC,YAAY,aAAa,EAAE,IAAI,IAAI;QACrD,OAAO;IACT;IAEA,SAAS,qBAAqB,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;QACnD,IAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,EAAG;YAC1B,IAAI,eAAe,SAAS,SAAS,KAAK;YAC1C,IAAI,iBAAiB,KAAO,OAAO;YACnC,IAAI,WAAW,WAAW,SAAS,KAAK,OAAO;YAC/C,WAAW,WAAW;QACxB;QACA,OAAO;IACT;IAEA,SAAS,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QAElC,IAAI,CAAE,CAAA,KAAK,OAAO,OAAO,KAAK,KAAK,OAAO,OAAO,CAAA,GAAM;QACvD,IAAI,eAAe,IAAI,aAAa;QAEpC,IAAI,QAAQ,OAAO,QAAQ,KACzB,IAAK,IAAI,IAAI,GAAG,IAAI,kBAAkB,EAAE,EACtC,YAAY,CAAC,EAAE,GAAG,WAAW,IAAI,iBAAiB,KAAK;QAI3D,SAAS,SAAS,EAAE,EAAE;YAEpB,IAAI,gBAAgB;YACpB,IAAI,gBAAgB;YACpB,IAAI,aAAa,mBAAmB;YAEpC,MAAO,kBAAkB,cAAc,YAAY,CAAC,cAAc,IAAI,IAAI,EAAE,cAC1E,iBAAiB;YAGnB,EAAE;YAEF,IAAI,OAAO,AAAC,CAAA,KAAK,YAAY,CAAC,cAAc,AAAD,IAAM,CAAA,YAAY,CAAC,gBAAgB,EAAE,GAAG,YAAY,CAAC,cAAc,AAAD;YAC7G,IAAI,YAAY,gBAAgB,OAAO;YACvC,IAAI,eAAe,SAAS,WAAW,KAAK;YAE5C,IAAI,gBAAgB,OAClB,OAAO,qBAAqB,IAAI,WAAW,KAAK;iBAC3C,IAAI,iBAAiB,KAC1B,OAAO;iBAEP,OAAO,gBAAgB,IAAI,eAAe,gBAAgB,iBAAiB,KAAK;QAGpF;QAEA,OAAO,SAAU,CAAC,EAAE;YAClB,IAAI,QAAQ,OAAO,QAAQ,KAAO,OAAO;YACzC,IAAI,MAAM,KAAK,MAAM,GAAK,OAAO;YACjC,OAAO,WAAW,SAAS,IAAI,KAAK;QACtC;IAEF;IAEA,OAAO;AAET;AAEA,IAAI,SAAS,AAAC,WAAY;IAExB,iHAAiH;IAEjH,IAAI,QAAQ;QAAE,QAAQ,WAAY;YAAE,OAAO,SAAU,CAAC,EAAE;gBAAE,OAAO;YAAG;QAAG;IAAE;IAEzE,IAAI,kBAAkB;QACpB,MAAM,WAAY;YAAE,OAAO,SAAU,CAAC,EAAE;gBAAE,OAAO,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,EAAE,GAAG;YAAI;QAAG;QACnF,MAAM,WAAY;YAAE,OAAO,SAAU,CAAC,EAAE;gBAAE,OAAO,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI;YAAI;QAAG;QAC9E,MAAM,WAAY;YAAE,OAAO,SAAU,CAAC,EAAE;gBAAE,OAAO,IAAI,IAAK,CAAA,IAAI,IAAI,CAAA;YAAI;QAAG;QACzE,QAAQ,WAAY;YAAE,OAAO,SAAU,CAAC,EAAE;gBACxC,IAAI,MAAM,IAAI;gBACd,MAAO,IAAI,AAAC,CAAA,AAAE,CAAA,OAAO,KAAK,GAAG,CAAC,GAAG,EAAE,EAAC,IAAK,CAAA,IAAK;gBAC9C,OAAO,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,KAAK,SAAS,KAAK,GAAG,CAAC,AAAE,CAAA,OAAO,IAAI,CAAA,IAAM,KAAK,GAAG;YAC/E;QAAG;QACH,SAAS,SAAU,SAAS,EAAE,MAAM,EAAE;YACpC,IAAK,cAAc,KAAK,GAAI,YAAY;YACxC,IAAK,WAAW,KAAK,GAAI,SAAS;YAElC,IAAI,IAAI,OAAO,WAAW,GAAG;YAC7B,IAAI,IAAI,OAAO,QAAQ,IAAI;YAC3B,OAAO,SAAU,CAAC,EAAE;gBAClB,OAAO,AAAC,MAAM,KAAK,MAAM,IAAK,IAC5B,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,KAAM,CAAA,IAAI,CAAA,KAAM,KAAK,GAAG,CAAC,AAAE,CAAA,AAAC,IAAI,IAAM,IAAK,CAAA,KAAK,EAAE,GAAG,CAAA,IAAK,KAAK,IAAI,CAAC,IAAI,EAAE,IAAM,CAAA,KAAK,EAAE,GAAG,CAAA,IAAM,EAAE;YACvH;QACF;IACF;IAEA,IAAI,cAAc;QAAC;QAAQ;QAAS;QAAS;QAAS;KAAO;IAE7D,YAAY,OAAO,CAAC,SAAU,IAAI,EAAE,CAAC,EAAE;QACrC,eAAe,CAAC,KAAK,GAAG,WAAY;YAAE,OAAO,SAAU,CAAC,EAAE;gBAAE,OAAO,KAAK,GAAG,CAAC,GAAG,IAAI;YAAI;QAAG;IAC5F;IAEA,OAAO,IAAI,CAAC,iBAAiB,OAAO,CAAC,SAAU,IAAI,EAAE;QACnD,IAAI,SAAS,eAAe,CAAC,KAAK;QAClC,KAAK,CAAC,WAAW,KAAK,GAAG;QACzB,KAAK,CAAC,YAAY,KAAK,GAAG,SAAU,CAAC,EAAE,CAAC,EAAE;YAAE,OAAO,SAAU,CAAC,EAAE;gBAAE,OAAO,IAAI,OAAO,GAAG,GAAG,IAAI;YAAI;QAAG;QACrG,KAAK,CAAC,cAAc,KAAK,GAAG,SAAU,CAAC,EAAE,CAAC,EAAE;YAAE,OAAO,SAAU,CAAC,EAAE;gBAAE,OAAO,IAAI,MAAM,OAAO,GAAG,GAAG,IAAI,KAAK,IACzG,IAAI,OAAO,GAAG,GAAG,IAAI,KAAK,KAAK,CAAC;YAAE;QAAG;QACvC,KAAK,CAAC,cAAc,KAAK,GAAG,SAAU,CAAC,EAAE,CAAC,EAAE;YAAE,OAAO,SAAU,CAAC,EAAE;gBAAE,OAAO,IAAI,MAAM,AAAC,CAAA,IAAI,OAAO,GAAG,GAAG,IAAI,IAAI,EAAC,IAAK,IACnH,AAAC,CAAA,OAAO,GAAG,GAAG,IAAI,IAAI,KAAK,CAAA,IAAK,CAAC;YAAE;QAAG;IAC1C;IAEA,OAAO;AAET;AAEA,SAAS,aAAa,MAAM,EAAE,QAAQ,EAAE;IACtC,IAAI,GAAG,GAAG,CAAC,SAAW,OAAO;IAC7B,IAAI,OAAO,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE;IAC/B,IAAI,OAAO,MAAM,CAAC,KAAK;IACvB,IAAI,OAAO,sBAAsB;IACjC,OAAQ;QACN,KAAK;YAAW,OAAO,OAAO,QAAQ;QACtC,KAAK;YAAgB,OAAO,eAAe,QAAQ;QACnD,KAAK;YAAU,OAAO,eAAe,OAAO;QAC5C;YAAU,OAAO,eAAe,MAAM;IACxC;AACF;AAEA,UAAU;AAEV,SAAS,aAAa,GAAG,EAAE;IACzB,IAAI;QACF,IAAI,QAAQ,SAAS,gBAAgB,CAAC;QACtC,OAAO;IACT,EAAE,OAAM,GAAG;QACT;IACF;AACF;AAEA,SAAS;AAET,SAAS,YAAY,GAAG,EAAE,QAAQ,EAAE;IAClC,IAAI,MAAM,IAAI,MAAM;IACpB,IAAI,UAAU,UAAU,MAAM,IAAI,IAAI,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC;IAC3D,IAAI,SAAS,EAAE;IACf,IAAK,IAAI,IAAI,GAAG,IAAI,KAAK,IACvB,IAAI,KAAK,KAAK;QACZ,IAAI,MAAM,GAAG,CAAC,EAAE;QAChB,IAAI,SAAS,IAAI,CAAC,SAAS,KAAK,GAAG,MACjC,OAAO,IAAI,CAAC;IAEhB,CAAC;IAEH,OAAO;AACT;AAEA,SAAS,aAAa,GAAG,EAAE;IACzB,OAAO,IAAI,MAAM,CAAC,SAAU,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,aAAa,KAAK,CAAC;IAAG,GAAG,EAAE;AAC7F;AAEA,SAAS,QAAQ,CAAC,EAAE;IAClB,IAAI,GAAG,GAAG,CAAC,IAAM,OAAO;IACxB,IAAI,GAAG,GAAG,CAAC,IAAM,IAAI,aAAa,MAAM;IACxC,IAAI,aAAa,YAAY,aAAa,gBAAkB,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;IACjF,OAAO;QAAC;KAAE;AACZ;AAEA,SAAS,cAAc,GAAG,EAAE,GAAG,EAAE;IAC/B,OAAO,IAAI,IAAI,CAAC,SAAU,CAAC,EAAE;QAAE,OAAO,MAAM;IAAK;AACnD;AAEA,UAAU;AAEV,SAAS,YAAY,CAAC,EAAE;IACtB,IAAI,QAAQ,CAAC;IACb,IAAK,IAAI,KAAK,EAAK,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;IAClC,OAAO;AACT;AAEA,SAAS,mBAAmB,EAAE,EAAE,EAAE,EAAE;IAClC,IAAI,IAAI,YAAY;IACpB,IAAK,IAAI,KAAK,GAAM,CAAC,CAAC,EAAE,GAAG,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IAC/D,OAAO;AACT;AAEA,SAAS,aAAa,EAAE,EAAE,EAAE,EAAE;IAC5B,IAAI,IAAI,YAAY;IACpB,IAAK,IAAI,KAAK,GAAM,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IACxD,OAAO;AACT;AAEA,SAAS;AAET,SAAS,UAAU,QAAQ,EAAE;IAC3B,IAAI,MAAM,kCAAkC,IAAI,CAAC;IACjD,OAAO,MAAO,UAAW,GAAG,CAAC,EAAE,GAAI,QAAS,QAAQ;AACtD;AAEA,SAAS,UAAU,QAAQ,EAAE;IAC3B,IAAI,MAAM;IACV,IAAI,MAAM,SAAS,OAAO,CAAC,KAAK,SAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO,IAAI,IAAI,IAAI,IAAI,IAAI;IAAG;IACtF,IAAI,MAAM,4CAA4C,IAAI,CAAC;IAC3D,IAAI,IAAI,SAAS,GAAG,CAAC,EAAE,EAAE;IACzB,IAAI,IAAI,SAAS,GAAG,CAAC,EAAE,EAAE;IACzB,IAAI,IAAI,SAAS,GAAG,CAAC,EAAE,EAAE;IACzB,OAAQ,UAAU,IAAI,MAAM,IAAI,MAAM,IAAI;AAC5C;AAEA,SAAS,UAAU,QAAQ,EAAE;IAC3B,IAAI,MAAM,0CAA0C,IAAI,CAAC,aAAa,uDAAuD,IAAI,CAAC;IAClI,IAAI,IAAI,SAAS,GAAG,CAAC,EAAE,EAAE,MAAM;IAC/B,IAAI,IAAI,SAAS,GAAG,CAAC,EAAE,EAAE,MAAM;IAC/B,IAAI,IAAI,SAAS,GAAG,CAAC,EAAE,EAAE,MAAM;IAC/B,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI;IAClB,SAAS,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QACxB,IAAI,IAAI,GAAK,KAAK;QAClB,IAAI,IAAI,GAAK,KAAK;QAClB,IAAI,IAAI,IAAE,GAAK,OAAO,IAAI,AAAC,CAAA,IAAI,CAAA,IAAK,IAAI;QACxC,IAAI,IAAI,KAAO,OAAO;QACtB,IAAI,IAAI,IAAE,GAAK,OAAO,IAAI,AAAC,CAAA,IAAI,CAAA,IAAM,CAAA,IAAE,IAAI,CAAA,IAAK;QAChD,OAAO;IACT;IACA,IAAI,GAAG,GAAG;IACV,IAAI,KAAK,GACP,IAAI,IAAI,IAAI;SACP;QACL,IAAI,IAAI,IAAI,MAAM,IAAK,CAAA,IAAI,CAAA,IAAK,IAAI,IAAI,IAAI,CAAC;QAC7C,IAAI,IAAI,IAAI,IAAI;QAChB,IAAI,QAAQ,GAAG,GAAG,IAAI,IAAE;QACxB,IAAI,QAAQ,GAAG,GAAG;QAClB,IAAI,QAAQ,GAAG,GAAG,IAAI,IAAE;IAC1B,CAAC;IACD,OAAQ,UAAW,IAAI,MAAO,MAAO,IAAI,MAAO,MAAO,IAAI,MAAO,MAAM,IAAI;AAC9E;AAEA,SAAS,WAAW,GAAG,EAAE;IACvB,IAAI,GAAG,GAAG,CAAC,MAAQ,OAAO,UAAU;IACpC,IAAI,GAAG,GAAG,CAAC,MAAQ,OAAO,UAAU;IACpC,IAAI,GAAG,GAAG,CAAC,MAAQ,OAAO,UAAU;AACtC;AAEA,QAAQ;AAER,SAAS,QAAQ,GAAG,EAAE;IACpB,IAAI,QAAQ,6GAA6G,IAAI,CAAC;IAC9H,IAAI,OAAS,OAAO,KAAK,CAAC,EAAE;AAC9B;AAEA,SAAS,iBAAiB,QAAQ,EAAE;IAClC,IAAI,eAAe,UAAU,gBAAgB,aAAa,eAAiB,OAAO;IAClF,IAAI,eAAe,UAAU,aAAa,eAAe,UAAU,SAAW,OAAO;AACvF;AAEA,SAAS;AAET,SAAS,iBAAiB,GAAG,EAAE,UAAU,EAAE;IACzC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAQ,OAAO;IAC3B,OAAO,IAAI,WAAW,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW,KAAK;AAC/D;AAEA,SAAS,aAAa,EAAE,EAAE,IAAI,EAAE;IAC9B,OAAO,GAAG,YAAY,CAAC;AACzB;AAEA,SAAS,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;IACxC,IAAI,YAAY,QAAQ;IACxB,IAAI,cAAc;QAAC;QAAM;QAAO;QAAO;KAAO,EAAE,YAAc,OAAO;IACrE,IAAI,SAAS,MAAM,GAAG,CAAC,QAAQ,KAAK;IACpC,IAAI,CAAC,GAAG,GAAG,CAAC,SAAW,OAAO;IAC9B,IAAI,WAAW;IACf,IAAI,SAAS,SAAS,aAAa,CAAC,GAAG,OAAO;IAC9C,IAAI,WAAW,AAAC,GAAG,UAAU,IAAK,GAAG,UAAU,KAAK,WAAa,GAAG,UAAU,GAAG,SAAS,IAAI;IAC9F,SAAS,WAAW,CAAC;IACrB,OAAO,KAAK,CAAC,QAAQ,GAAG;IACxB,OAAO,KAAK,CAAC,KAAK,GAAG,WAAW;IAChC,IAAI,SAAS,WAAW,OAAO,WAAW;IAC1C,SAAS,WAAW,CAAC;IACrB,IAAI,gBAAgB,SAAS,WAAW;IACxC,MAAM,GAAG,CAAC,QAAQ,KAAK,GAAG;IAC1B,OAAO;AACT;AAEA,SAAS,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACnC,IAAI,QAAQ,GAAG,KAAK,EAAE;QACpB,IAAI,oBAAoB,KAAK,OAAO,CAAC,mBAAmB,SAAS,WAAW;QAC5E,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK,IAAI,iBAAiB,IAAI,gBAAgB,CAAC,sBAAsB;QAC1F,OAAO,OAAO,gBAAgB,IAAI,OAAO,QAAQ,KAAK;IACxD,CAAC;AACH;AAEA,SAAS,iBAAiB,EAAE,EAAE,IAAI,EAAE;IAClC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAQ,CAAA,CAAC,GAAG,GAAG,CAAC,aAAa,IAAI,UAAW,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK,GAAM,OAAO;IACzG,IAAI,GAAG,GAAG,CAAC,OAAO,cAAc,iBAAiB,OAAS,OAAO;IACjE,IAAI,GAAG,GAAG,CAAC,OAAQ,SAAS,eAAe,YAAY,IAAI,OAAU,OAAO;IAC5E,IAAI,EAAE,CAAC,KAAK,IAAI,IAAI,EAAI,OAAO;AACjC;AAEA,SAAS,qBAAqB,EAAE,EAAE;IAChC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAO;IACnB,IAAI,MAAM,GAAG,KAAK,CAAC,SAAS,IAAI;IAChC,IAAI,MAAO;IACX,IAAI,aAAa,IAAI;IACrB,IAAI;IAAG,MAAO,IAAI,IAAI,IAAI,CAAC,KAAQ,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;IAC5D,OAAO;AACT;AAEA,SAAS,kBAAkB,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE;IACzD,IAAI,aAAa,eAAe,UAAU,WAAW,IAAI,IAAI,iBAAiB,SAAS;IACvF,IAAI,QAAQ,qBAAqB,IAAI,GAAG,CAAC,aAAa;IACtD,IAAI,YAAY;QACd,WAAW,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU;QACzC,WAAW,UAAU,CAAC,OAAO,GAAG;IAClC,CAAC;IACD,OAAO,OAAO,gBAAgB,IAAI,OAAO,QAAQ,KAAK;AACxD;AAEA,SAAS,uBAAuB,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE;IAClE,OAAQ,iBAAiB,QAAQ;QAC/B,KAAK;YAAa,OAAO,kBAAkB,QAAQ,UAAU,YAAY;QACzE,KAAK;YAAO,OAAO,YAAY,QAAQ,UAAU;QACjD,KAAK;YAAa,OAAO,aAAa,QAAQ;QAC9C;YAAS,OAAO,MAAM,CAAC,SAAS,IAAI;IACtC;AACF;AAEA,SAAS,iBAAiB,EAAE,EAAE,IAAI,EAAE;IAClC,IAAI,WAAW,gBAAgB,IAAI,CAAC;IACpC,IAAI,CAAC,UAAY,OAAO;IACxB,IAAI,IAAI,QAAQ,OAAO;IACvB,IAAI,IAAI,WAAW;IACnB,IAAI,IAAI,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;IAC3C,OAAQ,QAAQ,CAAC,EAAE,CAAC,EAAE;QACpB,KAAK;YAAK,OAAO,IAAI,IAAI;QACzB,KAAK;YAAK,OAAO,IAAI,IAAI;QACzB,KAAK;YAAK,OAAO,IAAI,IAAI;IAC3B;AACF;AAEA,SAAS,cAAc,GAAG,EAAE,IAAI,EAAE;IAChC,IAAI,GAAG,GAAG,CAAC,MAAQ,OAAO,WAAW;IACrC,IAAI,MAAM,IAAI,CAAC,MAAQ,OAAO;IAC9B,IAAI,eAAe,QAAQ;IAC3B,IAAI,WAAW,eAAe,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,GAAG,aAAa,MAAM,IAAI,GAAG;IACnF,IAAI,MAAQ,OAAO,WAAW;IAC9B,OAAO;AACT;AAEA,kFAAkF;AAClF,sEAAsE;AAEtE,SAAS,YAAY,EAAE,EAAE,EAAE,EAAE;IAC3B,OAAO,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE;AACpE;AAEA,SAAS,gBAAgB,EAAE,EAAE;IAC3B,OAAO,KAAK,EAAE,GAAG,IAAI,aAAa,IAAI;AACxC;AAEA,SAAS,cAAc,EAAE,EAAE;IACzB,OAAO,AAAC,aAAa,IAAI,WAAW,IAAM,aAAa,IAAI,YAAY;AACzE;AAEA,SAAS,cAAc,EAAE,EAAE;IACzB,OAAO,YACL;QAAC,GAAG,aAAa,IAAI;QAAO,GAAG,aAAa,IAAI;IAAK,GACrD;QAAC,GAAG,aAAa,IAAI;QAAO,GAAG,aAAa,IAAI;IAAK;AAEzD;AAEA,SAAS,kBAAkB,EAAE,EAAE;IAC7B,IAAI,SAAS,GAAG,MAAM;IACtB,IAAI,cAAc;IAClB,IAAI;IACJ,IAAK,IAAI,IAAI,GAAI,IAAI,OAAO,aAAa,EAAE,IAAK;QAC9C,IAAI,aAAa,OAAO,OAAO,CAAC;QAChC,IAAI,IAAI,GAAK,eAAe,YAAY,aAAa;QACrD,cAAc;IAChB;IACA,OAAO;AACT;AAEA,SAAS,iBAAiB,EAAE,EAAE;IAC5B,IAAI,SAAS,GAAG,MAAM;IACtB,OAAO,kBAAkB,MAAM,YAAY,OAAO,OAAO,CAAC,OAAO,aAAa,GAAG,IAAI,OAAO,OAAO,CAAC;AACtG;AAEA,iBAAiB;AAEjB,SAAS,eAAe,EAAE,EAAE;IAC1B,IAAI,GAAG,cAAc,EAAI,OAAO,GAAG,cAAc;IACjD,OAAO,GAAG,OAAO,CAAC,WAAW;QAC3B,KAAK;YAAU,OAAO,gBAAgB;QACtC,KAAK;YAAQ,OAAO,cAAc;QAClC,KAAK;YAAQ,OAAO,cAAc;QAClC,KAAK;YAAY,OAAO,kBAAkB;QAC1C,KAAK;YAAW,OAAO,iBAAiB;IAC1C;AACF;AAEA,SAAS,cAAc,EAAE,EAAE;IACzB,IAAI,aAAa,eAAe;IAChC,GAAG,YAAY,CAAC,oBAAoB;IACpC,OAAO;AACT;AAEA,cAAc;AAEd,SAAS,eAAe,EAAE,EAAE;IAC1B,IAAI,WAAW,GAAG,UAAU;IAC5B,MAAO,GAAG,GAAG,CAAC,UAAW;QACvB,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,UAAU,GAAK,KAAM;QAC1C,WAAW,SAAS,UAAU;IAChC;IACA,OAAO;AACT;AAEA,SAAS,aAAa,MAAM,EAAE,OAAO,EAAE;IACrC,IAAI,MAAM,WAAW,CAAC;IACtB,IAAI,cAAc,IAAI,EAAE,IAAI,eAAe;IAC3C,IAAI,OAAO,YAAY,qBAAqB;IAC5C,IAAI,cAAc,aAAa,aAAa;IAC5C,IAAI,QAAQ,KAAK,KAAK;IACtB,IAAI,SAAS,KAAK,MAAM;IACxB,IAAI,UAAU,IAAI,OAAO,IAAK,CAAA,cAAc,YAAY,KAAK,CAAC,OAAO;QAAC;QAAG;QAAG;QAAO;KAAO,AAAD;IACzF,OAAO;QACL,IAAI;QACJ,SAAS;QACT,GAAG,OAAO,CAAC,EAAE,GAAG;QAChB,GAAG,OAAO,CAAC,EAAE,GAAG;QAChB,GAAG;QACH,GAAG;QACH,IAAI,OAAO,CAAC,EAAE;QACd,IAAI,OAAO,CAAC,EAAE;IAChB;AACF;AAEA,SAAS,QAAQ,IAAI,EAAE,OAAO,EAAE;IAC9B,IAAI,SAAS,GAAG,GAAG,CAAC,QAAQ,aAAa,KAAK,CAAC,EAAE,GAAG,IAAI;IACxD,IAAI,IAAI,WAAW;IACnB,OAAO,SAAS,QAAQ,EAAE;QACxB,OAAO;YACL,UAAU;YACV,IAAI;YACJ,KAAK,aAAa;YAClB,aAAa,eAAe,UAAW,CAAA,IAAI,GAAE;QAC/C;IACF;AACF;AAEA,SAAS,gBAAgB,IAAI,EAAE,QAAQ,EAAE,qBAAqB,EAAE;IAC9D,SAAS,MAAM,MAAM,EAAE;QACrB,IAAK,WAAW,KAAK,GAAI,SAAS;QAElC,IAAI,IAAI,WAAW,UAAU,IAAI,WAAW,SAAS,CAAC;QACtD,OAAO,KAAK,EAAE,CAAC,gBAAgB,CAAC;IAClC;IACA,IAAI,MAAM,aAAa,KAAK,EAAE,EAAE,KAAK,GAAG;IACxC,IAAI,IAAI;IACR,IAAI,KAAK,MAAM;IACf,IAAI,KAAK,MAAM;IACf,IAAI,SAAS,wBAAwB,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE;IACvD,IAAI,SAAS,wBAAwB,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE;IACvD,OAAQ,KAAK,QAAQ;QACnB,KAAK;YAAK,OAAO,AAAC,CAAA,EAAE,CAAC,GAAG,IAAI,CAAC,AAAD,IAAK;QACjC,KAAK;YAAK,OAAO,AAAC,CAAA,EAAE,CAAC,GAAG,IAAI,CAAC,AAAD,IAAK;QACjC,KAAK;YAAS,OAAO,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM,KAAK,EAAE;IAC3E;AACF;AAEA,kBAAkB;AAElB,SAAS,eAAe,GAAG,EAAE,IAAI,EAAE;IACjC,uDAAuD;IACvD,oFAAoF;IACpF,IAAI,MAAM,8CAA8C,6BAA6B;IACrF,IAAI,QAAQ,cAAe,GAAG,GAAG,CAAC,OAAO,IAAI,WAAW,GAAG,GAAG,EAAG,QAAQ;IACzE,OAAO;QACL,UAAU;QACV,SAAS,MAAM,KAAK,CAAC,OAAO,MAAM,KAAK,CAAC,KAAK,GAAG,CAAC,UAAU;YAAC;SAAE;QAC9D,SAAS,AAAC,GAAG,GAAG,CAAC,QAAQ,OAAQ,MAAM,KAAK,CAAC,OAAO,EAAE;IACxD;AACF;AAEA,cAAc;AAEd,SAAS,aAAa,OAAO,EAAE;IAC7B,IAAI,eAAe,UAAW,aAAa,GAAG,GAAG,CAAC,WAAW,QAAQ,GAAG,CAAC,WAAW,QAAQ,QAAQ,IAAK,EAAE;IAC3G,OAAO,YAAY,cAAc,SAAU,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;QAAE,OAAO,KAAK,OAAO,CAAC,UAAU;IAAK;AACnG;AAEA,SAAS,eAAe,OAAO,EAAE;IAC/B,IAAI,SAAS,aAAa;IAC1B,OAAO,OAAO,GAAG,CAAC,SAAU,CAAC,EAAE,CAAC,EAAE;QAChC,OAAO;YAAC,QAAQ;YAAG,IAAI;YAAG,OAAO,OAAO,MAAM;YAAE,YAAY;gBAAE,MAAM,qBAAqB;YAAG;QAAE;IAChG;AACF;AAEA,aAAa;AAEb,SAAS,wBAAwB,IAAI,EAAE,aAAa,EAAE;IACpD,IAAI,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,IAAI,UAAU,IAAI,CAAC,SAAS,MAAM,GAAK,SAAS,QAAQ,GAAG,OAAO,SAAS,MAAM;IACjF,IAAI,GAAG,GAAG,CAAC,OAAO;QAChB,IAAI,IAAI,KAAK,MAAM;QACnB,IAAI,WAAY,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE;QAC1C,IAAI,CAAC,UACH,2CAA2C;QAC3C;YAAA,IAAI,CAAC,GAAG,GAAG,CAAC,cAAc,QAAQ,GAAK,SAAS,QAAQ,GAAG,cAAc,QAAQ,GAAG;QAAG,OAEvF,+DAA+D;QAC/D,OAAO;YAAC,OAAO;QAAI;IAEvB,CAAC;IACD,IAAI,YAAY,GAAG,GAAG,CAAC,QAAQ,OAAO;QAAC;KAAK;IAC5C,OAAO,UAAU,GAAG,CAAC,SAAU,CAAC,EAAE,CAAC,EAAE;QACnC,IAAI,MAAM,AAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAM,IAAI;YAAC,OAAO;QAAC,CAAC;QACpD,gEAAgE;QAChE,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,GAAK,IAAI,KAAK,GAAG,CAAC,IAAI,cAAc,KAAK,GAAG,CAAC;QACjE,kEAAkE;QAClE,IAAI,GAAG,GAAG,CAAC,IAAI,QAAQ,GAAK,IAAI,QAAQ,GAAG,MAAM,UAAU,MAAM,GAAG,IAAI,cAAc,QAAQ,GAAG,CAAC;QAClG,OAAO;IACT,GAAG,GAAG,CAAC,SAAU,CAAC,EAAE;QAAE,OAAO,aAAa,GAAG;IAAW;AAC1D;AAGA,SAAS,iBAAiB,SAAS,EAAE;IACnC,IAAI,gBAAgB,YAAY,aAAa,UAAU,GAAG,CAAC,SAAU,GAAG,EAAE;QAAE,OAAO,OAAO,IAAI,CAAC;IAAM,KAAK,SAAU,CAAC,EAAE;QAAE,OAAO,GAAG,GAAG,CAAC;IAAI,GAC1I,MAAM,CAAC,SAAU,CAAC,EAAC,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC,KAAK,GAAK,EAAE,IAAI,CAAC;QAAM,OAAO;IAAG,GAAG,EAAE;IAC7E,IAAI,aAAa,CAAC;IAClB,IAAI,OAAO,SAAW,CAAC,EAAG;QACxB,IAAI,WAAW,aAAa,CAAC,EAAE;QAC/B,UAAU,CAAC,SAAS,GAAG,UAAU,GAAG,CAAC,SAAU,GAAG,EAAE;YAClD,IAAI,SAAS,CAAC;YACd,IAAK,IAAI,KAAK,IAAK;gBACjB,IAAI,GAAG,GAAG,CAAC,IACT;oBAAA,IAAI,KAAK,UAAY,OAAO,KAAK,GAAG,GAAG,CAAC,EAAE;gBAAE,OAE5C,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE;YAEtB;YACA,OAAO;QACT;IACF;IAEA,IAAK,IAAI,IAAI,GAAG,IAAI,cAAc,MAAM,EAAE,IAAK,KAAM;IACrD,OAAO;AACT;AAEA,SAAS,cAAc,aAAa,EAAE,MAAM,EAAE;IAC5C,IAAI,aAAa,EAAE;IACnB,IAAI,YAAY,OAAO,SAAS;IAChC,IAAI,WAAa,SAAS,aAAa,iBAAiB,YAAY;IACpE,IAAK,IAAI,KAAK,OACZ,IAAI,GAAG,GAAG,CAAC,IACT,WAAW,IAAI,CAAC;QACd,MAAM;QACN,QAAQ,wBAAwB,MAAM,CAAC,EAAE,EAAE;IAC7C;IAGJ,OAAO;AACT;AAEA,SAAS;AAET,SAAS,qBAAqB,KAAK,EAAE,UAAU,EAAE;IAC/C,IAAI,IAAI,CAAC;IACT,IAAK,IAAI,KAAK,MAAO;QACnB,IAAI,QAAQ,iBAAiB,KAAK,CAAC,EAAE,EAAE;QACvC,IAAI,GAAG,GAAG,CAAC,QAAQ;YACjB,QAAQ,MAAM,GAAG,CAAC,SAAU,CAAC,EAAE;gBAAE,OAAO,iBAAiB,GAAG;YAAa;YACzE,IAAI,MAAM,MAAM,KAAK,GAAK,QAAQ,KAAK,CAAC,EAAE;QAC5C,CAAC;QACD,CAAC,CAAC,EAAE,GAAG;IACT;IACA,EAAE,QAAQ,GAAG,WAAW,EAAE,QAAQ;IAClC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK;IAC5B,OAAO;AACT;AAEA,SAAS,gBAAgB,IAAI,EAAE,UAAU,EAAE;IACzC,IAAI;IACJ,OAAO,KAAK,MAAM,CAAC,GAAG,CAAC,SAAU,CAAC,EAAE;QAClC,IAAI,QAAQ,qBAAqB,GAAG;QACpC,IAAI,aAAa,MAAM,KAAK;QAC5B,IAAI,KAAK,GAAG,GAAG,CAAC,cAAc,UAAU,CAAC,EAAE,GAAG,UAAU;QACxD,IAAI,SAAS,QAAQ;QACrB,IAAI,gBAAgB,uBAAuB,WAAW,MAAM,EAAE,KAAK,IAAI,EAAE,QAAQ;QACjF,IAAI,gBAAgB,gBAAgB,cAAc,EAAE,CAAC,QAAQ,GAAG,aAAa;QAC7E,IAAI,OAAO,GAAG,GAAG,CAAC,cAAc,UAAU,CAAC,EAAE,GAAG,aAAa;QAC7D,IAAI,WAAW,QAAQ,SAAS,QAAQ;QACxC,IAAI,OAAO,UAAU;QACrB,IAAI,GAAG,GAAG,CAAC,KAAO,KAAK;QACvB,MAAM,IAAI,GAAG,eAAe,MAAM;QAClC,MAAM,EAAE,GAAG,eAAe,iBAAiB,IAAI,OAAO;QACtD,MAAM,KAAK,GAAG,gBAAgB,cAAc,GAAG,GAAG,CAAC;QACnD,MAAM,GAAG,GAAG,MAAM,KAAK,GAAG,MAAM,KAAK,GAAG,MAAM,QAAQ,GAAG,MAAM,QAAQ;QACvE,MAAM,MAAM,GAAG,aAAa,MAAM,MAAM,EAAE,MAAM,QAAQ;QACxD,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC;QACtB,MAAM,qBAAqB,GAAG,MAAM,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,MAAM;QACtE,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ;QAC1C,IAAI,MAAM,OAAO,EAAI,MAAM,KAAK,GAAG;QACnC,gBAAgB;QAChB,OAAO;IACT;AACF;AAEA,iBAAiB;AAEjB,IAAI,mBAAmB;IACrB,KAAK,SAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG;IAAG;IACjD,WAAW,SAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO,EAAE,YAAY,CAAC,GAAG;IAAI;IAC7D,QAAQ,SAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC,EAAE,GAAG;IAAG;IAC9C,WAAW,SAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE;QAChD,WAAW,IAAI,CAAC,GAAG,CAAC,GAAG;QACvB,IAAI,MAAM,WAAW,IAAI,IAAI,QAAQ;YACnC,IAAI,MAAM;YACV,WAAW,IAAI,CAAC,OAAO,CAAC,SAAU,KAAK,EAAE,IAAI,EAAE;gBAAE,OAAO,OAAO,MAAM,QAAQ;YAAM;YACnF,EAAE,KAAK,CAAC,SAAS,GAAG;QACtB,CAAC;IACH;AACF;AAEA,mBAAmB;AAEnB,SAAS,gBAAgB,OAAO,EAAE,UAAU,EAAE;IAC5C,IAAI,cAAc,eAAe;IACjC,YAAY,OAAO,CAAC,SAAU,UAAU,EAAE;QACxC,IAAK,IAAI,YAAY,WAAY;YAC/B,IAAI,QAAQ,iBAAiB,UAAU,CAAC,SAAS,EAAE;YACnD,IAAI,SAAS,WAAW,MAAM;YAC9B,IAAI,YAAY,QAAQ;YACxB,IAAI,gBAAgB,uBAAuB,QAAQ,UAAU,WAAW;YACxE,IAAI,OAAO,aAAa,QAAQ;YAChC,IAAI,KAAK,iBAAiB,cAAc,OAAO,OAAO;YACtD,IAAI,WAAW,iBAAiB,QAAQ;YACxC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,UAAU,IAAI,WAAW,UAAU,EAAE,IAAI;QAC9E;IACF;AACF;AAEA,aAAa;AAEb,SAAS,gBAAgB,UAAU,EAAE,IAAI,EAAE;IACzC,IAAI,WAAW,iBAAiB,WAAW,MAAM,EAAE,KAAK,IAAI;IAC5D,IAAI,UAAU;QACZ,IAAI,SAAS,gBAAgB,MAAM;QACnC,IAAI,YAAY,MAAM,CAAC,OAAO,MAAM,GAAG,EAAE;QACzC,OAAO;YACL,MAAM;YACN,UAAU,KAAK,IAAI;YACnB,YAAY;YACZ,QAAQ;YACR,UAAU,UAAU,GAAG;YACvB,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK;YACtB,UAAU,UAAU,QAAQ;QAC9B;IACF,CAAC;AACH;AAEA,SAAS,cAAc,WAAW,EAAE,UAAU,EAAE;IAC9C,OAAO,YAAY,aAAa,YAAY,GAAG,CAAC,SAAU,UAAU,EAAE;QACpE,OAAO,WAAW,GAAG,CAAC,SAAU,IAAI,EAAE;YACpC,OAAO,gBAAgB,YAAY;QACrC;IACF,KAAK,SAAU,CAAC,EAAE;QAAE,OAAO,CAAC,GAAG,GAAG,CAAC;IAAI;AACzC;AAEA,kBAAkB;AAElB,SAAS,mBAAmB,UAAU,EAAE,aAAa,EAAE;IACrD,IAAI,aAAa,WAAW,MAAM;IAClC,IAAI,cAAc,SAAU,IAAI,EAAE;QAAE,OAAO,KAAK,cAAc,GAAG,KAAK,cAAc,GAAG,CAAC;IAAE;IAC1F,IAAI,UAAU,CAAC;IACf,QAAQ,QAAQ,GAAG,aAAa,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,WAAW,GAAG,CAAC,SAAU,IAAI,EAAE;QAAE,OAAO,YAAY,QAAQ,KAAK,QAAQ;IAAE,MAAM,cAAc,QAAQ;IAC5J,QAAQ,KAAK,GAAG,aAAa,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,WAAW,GAAG,CAAC,SAAU,IAAI,EAAE;QAAE,OAAO,YAAY,QAAQ,KAAK,KAAK;IAAE,MAAM,cAAc,KAAK;IACnJ,QAAQ,QAAQ,GAAG,aAAa,QAAQ,QAAQ,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,WAAW,GAAG,CAAC,SAAU,IAAI,EAAE;QAAE,OAAO,YAAY,QAAQ,KAAK,QAAQ,GAAG,KAAK,QAAQ;IAAE,MAAM,cAAc,QAAQ;IAC/L,OAAO;AACT;AAEA,IAAI,aAAa;AAEjB,SAAS,kBAAkB,MAAM,EAAE;IACjC,IAAI,mBAAmB,mBAAmB,yBAAyB;IACnE,IAAI,gBAAgB,mBAAmB,sBAAsB;IAC7D,IAAI,aAAa,cAAc,eAAe;IAC9C,IAAI,cAAc,eAAe,OAAO,OAAO;IAC/C,IAAI,aAAa,cAAc,aAAa;IAC5C,IAAI,UAAU,mBAAmB,YAAY;IAC7C,IAAI,KAAK;IACT;IACA,OAAO,aAAa,kBAAkB;QACpC,IAAI;QACJ,UAAU,EAAE;QACZ,aAAa;QACb,YAAY;QACZ,UAAU,QAAQ,QAAQ;QAC1B,OAAO,QAAQ,KAAK;QACpB,UAAU,QAAQ,QAAQ;IAC5B;AACF;AAEA,OAAO;AAEP,IAAI,kBAAkB,EAAE;AAExB,IAAI,SAAS,AAAC,WAAY;IACxB,IAAI;IAEJ,SAAS,OAAO;QACd,IAAI,CAAC,OAAQ,CAAA,CAAC,sBAAsB,CAAC,MAAM,yBAAyB,AAAD,KAAM,gBAAgB,MAAM,GAAG,GAChG,MAAM,sBAAsB;IAEhC;IACA,SAAS,KAAK,CAAC,EAAE;QACf,2BAA2B;QAC3B,qDAAqD;QACrD,0FAA0F;QAC1F,IAAI,wBAAwB,gBAAgB,MAAM;QAClD,IAAI,IAAI;QACR,MAAO,IAAI,sBAAuB;YAChC,IAAI,iBAAiB,eAAe,CAAC,EAAE;YACvC,IAAI,CAAC,eAAe,MAAM,EAAE;gBAC1B,eAAe,IAAI,CAAC;gBACpB;YACF,OAAO;gBACL,gBAAgB,MAAM,CAAC,GAAG;gBAC1B;YACF,CAAC;QACH;QACA,MAAM,IAAI,IAAI,sBAAsB,QAAQ,SAAS;IACvD;IAEA,SAAS,yBAAyB;QAChC,IAAI,CAAC,MAAM,yBAAyB,EAAI;QAExC,IAAI,oBACF,gBAAgB;QAChB,MAAM,qBAAqB;aACtB;YACL,yEAAyE;YACzE,gBAAgB,OAAO,CACrB,SAAU,QAAQ,EAAE;gBAAE,OAAO,SAAU,qBAAqB;YAAI;YAElE;QACF,CAAC;IACH;IACA,IAAI,OAAO,aAAa,aACtB,SAAS,gBAAgB,CAAC,oBAAoB;IAGhD,OAAO;AACT;AAEA,SAAS,mBAAmB;IAC1B,OAAO,CAAC,CAAC,YAAY,SAAS,MAAM;AACtC;AAEA,kBAAkB;AAElB,SAAS,MAAM,MAAM,EAAE;IACrB,IAAK,WAAW,KAAK,GAAI,SAAS,CAAC;IAGnC,IAAI,YAAY,GAAG,WAAW,GAAG,MAAM;IACvC,IAAI,UAAU,iBAAiB;IAC/B,IAAI,UAAU,IAAI;IAElB,SAAS,YAAY,QAAQ,EAAE;QAC7B,IAAI,UAAU,OAAO,OAAO,IAAI,IAAI,QAAQ,SAAU,QAAQ,EAAE;YAAE,OAAO,UAAU;QAAU;QAC7F,SAAS,QAAQ,GAAG;QACpB,OAAO;IACT;IAEA,IAAI,WAAW,kBAAkB;IACjC,IAAI,UAAU,YAAY;IAE1B,SAAS,0BAA0B;QACjC,IAAI,YAAY,SAAS,SAAS;QAClC,IAAI,cAAc,aAChB,SAAS,SAAS,GAAG,cAAc,WAAW,WAAW,SAAS;QAEpE,SAAS,QAAQ,GAAG,CAAC,SAAS,QAAQ;QACtC,SAAS,OAAO,CAAC,SAAU,KAAK,EAAE;YAAE,OAAO,MAAM,QAAQ,GAAG,SAAS,QAAQ;QAAE;IACjF;IAEA,SAAS,WAAW,IAAI,EAAE;QACxB,OAAO,SAAS,QAAQ,GAAG,SAAS,QAAQ,GAAG,OAAO,IAAI;IAC5D;IAEA,SAAS,YAAY;QACnB,YAAY;QACZ,WAAW,WAAW,SAAS,WAAW,IAAK,CAAA,IAAI,MAAM,KAAK,AAAD;IAC/D;IAEA,SAAS,UAAU,IAAI,EAAE,KAAK,EAAE;QAC9B,IAAI,OAAS,MAAM,IAAI,CAAC,OAAO,MAAM,cAAc;IACrD;IAEA,SAAS,qBAAqB,IAAI,EAAE;QAClC,IAAI,CAAC,SAAS,eAAe,EAC3B,IAAK,IAAI,IAAI,GAAG,IAAI,gBAAgB,IAAO,UAAU,MAAM,QAAQ,CAAC,EAAE;aAEtE,IAAK,IAAI,MAAM,gBAAgB,OAAU,UAAU,MAAM,QAAQ,CAAC,IAAI;IAE1E;IAEA,SAAS,sBAAsB,OAAO,EAAE;QACtC,IAAI,IAAI;QACR,IAAI,aAAa,SAAS,UAAU;QACpC,IAAI,mBAAmB,WAAW,MAAM;QACxC,MAAO,IAAI,iBAAkB;YAC3B,IAAI,OAAO,UAAU,CAAC,EAAE;YACxB,IAAI,aAAa,KAAK,UAAU;YAChC,IAAI,SAAS,KAAK,MAAM;YACxB,IAAI,cAAc,OAAO,MAAM,GAAG;YAClC,IAAI,QAAQ,MAAM,CAAC,YAAY;YAC/B,2DAA2D;YAC3D,IAAI,aAAe,QAAQ,YAAY,QAAQ,SAAU,CAAC,EAAE;gBAAE,OAAQ,UAAU,EAAE,GAAG;YAAG,EAAE,CAAC,EAAE,IAAI;YACjG,IAAI,UAAU,OAAO,UAAU,MAAM,KAAK,GAAG,MAAM,KAAK,EAAE,GAAG,MAAM,QAAQ,IAAI,MAAM,QAAQ;YAC7F,IAAI,QAAQ,MAAM,WAAW,IAAI,MAAM,MAAM,CAAC,QAAQ;YACtD,IAAI,UAAU,MAAM,EAAE,CAAC,OAAO;YAC9B,IAAI,QAAQ,MAAM,KAAK;YACvB,IAAI,UAAU,EAAE;YAChB,IAAI,kBAAkB,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM;YAC7C,IAAI,WAAY,KAAK;YACrB,IAAK,IAAI,IAAI,GAAG,IAAI,iBAAiB,IAAK;gBACxC,IAAI,QAAS,KAAK;gBAClB,IAAI,WAAW,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;gBAClC,IAAI,aAAa,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI;gBAC1C,IAAI,CAAC,MAAM,MAAM,EACf,QAAQ,aAAc,QAAS,CAAA,WAAW,UAAS;qBAEnD,QAAQ,gBAAgB,MAAM,KAAK,EAAE,QAAQ,UAAU,MAAM,qBAAqB;gBAEpF,IAAI,OACF;oBAAA,IAAI,CAAE,CAAA,MAAM,OAAO,IAAI,IAAI,CAAA,GACzB,QAAQ,KAAK,KAAK,CAAC,QAAQ,SAAS;gBACtC,CACD;gBACD,QAAQ,IAAI,CAAC;YACf;YACA,8CAA8C;YAC9C,IAAI,gBAAgB,QAAQ,MAAM;YAClC,IAAI,CAAC,eACH,WAAW,OAAO,CAAC,EAAE;iBAChB;gBACL,WAAW,OAAO,CAAC,EAAE;gBACrB,IAAK,IAAI,IAAI,GAAG,IAAI,eAAe,IAAK;oBACtC,IAAI,IAAI,OAAO,CAAC,EAAE;oBAClB,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;oBACtB,IAAI,MAAM,OAAO,CAAC,EAAE;oBACpB,IAAI,CAAC,MAAM;wBACT,IAAI,CAAC,GACH,YAAY,MAAM;6BAElB,YAAY,MAAM;qBAErB;gBACH;YACF,CAAC;YACD,gBAAgB,CAAC,KAAK,IAAI,CAAC,CAAC,WAAW,MAAM,EAAE,KAAK,QAAQ,EAAE,UAAU,WAAW,UAAU;YAC7F,KAAK,YAAY,GAAG;YACpB;QACF;IACF;IAEA,SAAS,YAAY,EAAE,EAAE;QACvB,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS,WAAW,EAAI,QAAQ,CAAC,GAAG,CAAC;IAC5D;IAEA,SAAS,iBAAiB;QACxB,IAAI,SAAS,SAAS,IAAI,SAAS,SAAS,KAAK,IAAI,EACnD,SAAS,SAAS;IAEtB;IAEA,SAAS,oBAAoB,UAAU,EAAE;QACvC,IAAI,cAAc,SAAS,QAAQ;QACnC,IAAI,WAAW,SAAS,KAAK;QAC7B,IAAI,cAAc,cAAc,SAAS,QAAQ;QACjD,IAAI,UAAU,WAAW;QACzB,SAAS,QAAQ,GAAG,OAAO,AAAC,UAAU,cAAe,KAAK,GAAG;QAC7D,SAAS,eAAe,GAAG,UAAU,SAAS,WAAW;QACzD,IAAI,UAAY,qBAAqB;QACrC,IAAI,CAAC,SAAS,KAAK,IAAI,SAAS,WAAW,GAAG,GAAG;YAC/C,SAAS,KAAK,GAAG,IAAI;YACrB,YAAY;QACd,CAAC;QACD,IAAI,CAAC,SAAS,SAAS,IAAI,SAAS,WAAW,GAAG,GAAG;YACnD,SAAS,SAAS,GAAG,IAAI;YACzB,YAAY;QACd,CAAC;QACD,IAAI,WAAW,YAAY,SAAS,WAAW,KAAK,GAClD,sBAAsB;QAExB,IAAI,AAAC,WAAW,eAAe,SAAS,WAAW,KAAK,eAAgB,CAAC,aACvE,sBAAsB;QAExB,IAAI,UAAU,YAAY,UAAU,aAAa;YAC/C,IAAI,CAAC,SAAS,WAAW,EAAE;gBACzB,SAAS,WAAW,GAAG,IAAI;gBAC3B,SAAS,eAAe,GAAG,KAAK;gBAChC,YAAY;YACd,CAAC;YACD,YAAY;YACZ,sBAAsB;QACxB,OACE,IAAI,SAAS,WAAW,EAAE;YACxB,SAAS,eAAe,GAAG,IAAI;YAC/B,SAAS,WAAW,GAAG,KAAK;YAC5B,YAAY;QACd,CAAC;QAEH,SAAS,WAAW,GAAG,OAAO,SAAS,GAAG;QAC1C,IAAI,SAAS,KAAK,EAAI,YAAY;QAClC,IAAI,cAAc,aAAa;YAC7B,WAAW;YACX;YACA,IAAI,CAAC,SAAS,SAAS,EAAE;gBACvB,SAAS,MAAM,GAAG,IAAI;gBACtB,IAAI,CAAC,SAAS,SAAS,EAAE;oBACvB,SAAS,SAAS,GAAG,IAAI;oBACzB,YAAY;oBACZ,YAAY;oBACZ,IAAI,CAAC,SAAS,WAAW,IAAI,aAAa,QAAQ;wBAChD;wBACA,UAAU,YAAY;oBACxB,CAAC;gBACH,CAAC;YACH,OAAO;gBACL,YAAY;gBACZ,YAAY;gBACZ,SAAS,SAAS,GAAG,KAAK;gBAC1B,IAAI,SAAS,SAAS,KAAK,aACzB;YAEJ,CAAC;QACH,CAAC;IACH;IAEA,SAAS,KAAK,GAAG,WAAW;QAC1B,IAAI,YAAY,SAAS,SAAS;QAClC,SAAS,WAAW,GAAG,KAAK;QAC5B,SAAS,WAAW,GAAG;QACvB,SAAS,QAAQ,GAAG;QACpB,SAAS,MAAM,GAAG,IAAI;QACtB,SAAS,KAAK,GAAG,KAAK;QACtB,SAAS,SAAS,GAAG,KAAK;QAC1B,SAAS,WAAW,GAAG,KAAK;QAC5B,SAAS,SAAS,GAAG,KAAK;QAC1B,SAAS,eAAe,GAAG,KAAK;QAChC,SAAS,eAAe,GAAG,KAAK;QAChC,SAAS,QAAQ,GAAG,cAAc;QAClC,SAAS,SAAS,GAAG,SAAS,IAAI;QAClC,WAAW,SAAS,QAAQ;QAC5B,iBAAiB,SAAS,MAAM;QAChC,IAAK,IAAI,IAAI,gBAAgB,KAAQ,SAAS,QAAQ,CAAC,EAAE,CAAC,KAAK;QAC/D,IAAI,SAAS,QAAQ,IAAI,SAAS,IAAI,KAAK,IAAI,IAAK,cAAc,eAAe,SAAS,IAAI,KAAK,GAAM,SAAS,SAAS;QAC3H,sBAAsB,SAAS,QAAQ,GAAG,SAAS,QAAQ,GAAG,CAAC;IACjE;IAEA,+FAA+F;IAC/F,SAAS,qBAAqB,GAAG;IAEjC,mBAAmB;IAEnB,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,UAAU,EAAE;QAC3C,gBAAgB,SAAS;QACzB,OAAO;IACT;IAEA,SAAS,IAAI,GAAG,SAAS,CAAC,EAAE;QAC1B,MAAM;QACN,IAAI,CAAC,WAAa,YAAY;QAC9B,oBAAoB,AAAC,CAAA,MAAO,CAAA,WAAW,SAAQ,CAAC,IAAK,MAAM,KAAK;IAClE;IAEA,SAAS,IAAI,GAAG,SAAS,IAAI,EAAE;QAC7B,oBAAoB,WAAW;IACjC;IAEA,SAAS,KAAK,GAAG,WAAW;QAC1B,SAAS,MAAM,GAAG,IAAI;QACtB;IACF;IAEA,SAAS,IAAI,GAAG,WAAW;QACzB,IAAI,CAAC,SAAS,MAAM,EAAI;QACxB,IAAI,SAAS,SAAS,EAAI,SAAS,KAAK;QACxC,SAAS,MAAM,GAAG,KAAK;QACvB,gBAAgB,IAAI,CAAC;QACrB;QACA;IACF;IAEA,SAAS,OAAO,GAAG,WAAW;QAC5B;QACA,SAAS,SAAS,GAAG,SAAS,QAAQ,GAAG,KAAK,GAAG,IAAI;QACrD;IACF;IAEA,SAAS,OAAO,GAAG,WAAW;QAC5B,SAAS,KAAK;QACd,SAAS,IAAI;IACf;IAEA,SAAS,MAAM,GAAG,SAAS,OAAO,EAAE;QAClC,IAAI,eAAe,aAAa;QAChC,0BAA0B,cAAc;IAC1C;IAEA,SAAS,KAAK;IAEd,IAAI,SAAS,QAAQ,EAAI,SAAS,IAAI;IAEtC,OAAO;AAET;AAEA,gCAAgC;AAEhC,SAAS,4BAA4B,YAAY,EAAE,UAAU,EAAE;IAC7D,IAAK,IAAI,IAAI,WAAW,MAAM,EAAE,KAC9B,IAAI,cAAc,cAAc,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,GAC7D,WAAW,MAAM,CAAC,GAAG;AAG3B;AAEA,SAAS,0BAA0B,YAAY,EAAE,QAAQ,EAAE;IACzD,IAAI,aAAa,SAAS,UAAU;IACpC,IAAI,WAAW,SAAS,QAAQ;IAChC,4BAA4B,cAAc;IAC1C,IAAK,IAAI,IAAI,SAAS,MAAM,EAAE,KAAM;QAClC,IAAI,QAAQ,QAAQ,CAAC,EAAE;QACvB,IAAI,kBAAkB,MAAM,UAAU;QACtC,4BAA4B,cAAc;QAC1C,IAAI,CAAC,gBAAgB,MAAM,IAAI,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAI,SAAS,MAAM,CAAC,GAAG;IAC9E;IACA,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,SAAS,MAAM,EAAI,SAAS,KAAK;AAC9D;AAEA,SAAS,iCAAiC,OAAO,EAAE;IACjD,IAAI,eAAe,aAAa;IAChC,IAAK,IAAI,IAAI,gBAAgB,MAAM,EAAE,KAAM;QACzC,IAAI,WAAW,eAAe,CAAC,EAAE;QACjC,0BAA0B,cAAc;IAC1C;AACF;AAEA,kBAAkB;AAElB,SAAS,QAAQ,GAAG,EAAE,MAAM,EAAE;IAC5B,IAAK,WAAW,KAAK,GAAI,SAAS,CAAC;IAEnC,IAAI,YAAY,OAAO,SAAS,IAAI;IACpC,IAAI,SAAS,OAAO,MAAM,GAAG,aAAa,OAAO,MAAM,IAAI,IAAI;IAC/D,IAAI,OAAO,OAAO,IAAI;IACtB,IAAI,OAAO,OAAO,IAAI;IACtB,IAAI,YAAY,OAAO,IAAI,IAAI;IAC/B,IAAI,YAAY,cAAc;IAC9B,IAAI,aAAa,cAAc;IAC/B,IAAI,WAAW,cAAc;IAC7B,IAAI,UAAU,GAAG,GAAG,CAAC;IACrB,IAAI,OAAO,UAAU,WAAW,GAAG,CAAC,EAAE,IAAI,WAAW,IAAI;IACzD,IAAI,OAAO,UAAU,WAAW,GAAG,CAAC,EAAE,IAAI,CAAC;IAC3C,IAAI,OAAO,QAAQ,UAAU,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK;IAC9C,IAAI,QAAQ,OAAO,KAAK,IAAI,IAAK,CAAA,UAAU,OAAO,CAAC,AAAD;IAClD,IAAI,SAAS,EAAE;IACf,IAAI,WAAW;IACf,OAAO,SAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;QACzB,IAAI,WAAa,YAAY;QAC7B,IAAI,YAAc,YAAY,AAAC,CAAA,IAAI,CAAA,IAAK;QACxC,IAAI,UAAY,YAAY,IAAI;QAChC,IAAI,CAAC,OAAO,MAAM,EAAE;YAClB,IAAK,IAAI,QAAQ,GAAG,QAAQ,GAAG,QAAS;gBACtC,IAAI,CAAC,MACH,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,YAAY;qBAC5B;oBACL,IAAI,QAAQ,CAAC,aAAa,YAAU,IAAI,CAAC,EAAE,GAAG,AAAC,CAAA,IAAI,CAAC,EAAE,GAAC,CAAA,IAAG,CAAC;oBAC3D,IAAI,QAAQ,CAAC,aAAa,KAAK,KAAK,CAAC,YAAU,IAAI,CAAC,EAAE,IAAI,AAAC,CAAA,IAAI,CAAC,EAAE,GAAC,CAAA,IAAG,CAAC;oBACvE,IAAI,MAAM,QAAM,IAAI,CAAC,EAAE;oBACvB,IAAI,MAAM,KAAK,KAAK,CAAC,QAAM,IAAI,CAAC,EAAE;oBAClC,IAAI,YAAY,QAAQ;oBACxB,IAAI,YAAY,QAAQ;oBACxB,IAAI,QAAQ,KAAK,IAAI,CAAC,YAAY,YAAY,YAAY;oBAC1D,IAAI,SAAS,KAAO,QAAQ,CAAC;oBAC7B,IAAI,SAAS,KAAO,QAAQ,CAAC;oBAC7B,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,WAAW,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM;YAClC;YACA,IAAI,QAAU,SAAS,OAAO,GAAG,CAAC,SAAU,GAAG,EAAE;gBAAE,OAAO,OAAO,MAAM,YAAY;YAAU;YAC7F,IAAI,cAAc,WAAa,SAAS,OAAO,GAAG,CAAC,SAAU,GAAG,EAAE;gBAAE,OAAO,OAAO,AAAC,MAAM,IAAK,MAAM,KAAK,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,WAAW,IAAI;YAAE;QAC5I,CAAC;QACD,IAAI,UAAU,UAAU,AAAC,CAAA,OAAO,IAAG,IAAK,WAAW,IAAI;QACvD,OAAO,QAAS,UAAW,CAAA,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,GAAE,IAAM;IACnE;AACF;AAEA,WAAW;AAEX,SAAS,SAAS,MAAM,EAAE;IACxB,IAAK,WAAW,KAAK,GAAI,SAAS,CAAC;IAEnC,IAAI,KAAK,MAAM;IACf,GAAG,QAAQ,GAAG;IACd,GAAG,GAAG,GAAG,SAAS,cAAc,EAAE,cAAc,EAAE;QAChD,IAAI,UAAU,gBAAgB,OAAO,CAAC;QACtC,IAAI,WAAW,GAAG,QAAQ;QAC1B,IAAI,UAAU,IAAM,gBAAgB,MAAM,CAAC,SAAS;QACpD,SAAS,YAAY,GAAG,EAAE;YAAE,IAAI,WAAW,GAAG,IAAI;QAAE;QACpD,IAAK,IAAI,IAAI,GAAG,IAAI,SAAS,MAAM,EAAE,IAAO,YAAY,QAAQ,CAAC,EAAE;QACnE,IAAI,YAAY,aAAa,gBAAgB,mBAAmB,sBAAsB;QACtF,UAAU,OAAO,GAAG,UAAU,OAAO,IAAI,OAAO,OAAO;QACvD,IAAI,aAAa,GAAG,QAAQ;QAC5B,UAAU,QAAQ,GAAG,KAAK;QAC1B,UAAU,SAAS,GAAG,GAAG,SAAS;QAClC,UAAU,cAAc,GAAG,GAAG,GAAG,CAAC,kBAAkB,aAAa,iBAAiB,gBAAgB,WAAW;QAC7G,YAAY;QACZ,GAAG,IAAI,CAAC,UAAU,cAAc;QAChC,IAAI,MAAM,MAAM;QAChB,YAAY;QACZ,SAAS,IAAI,CAAC;QACd,IAAI,UAAU,mBAAmB,UAAU;QAC3C,GAAG,KAAK,GAAG,QAAQ,KAAK;QACxB,GAAG,QAAQ,GAAG,QAAQ,QAAQ;QAC9B,GAAG,QAAQ,GAAG,QAAQ,QAAQ;QAC9B,GAAG,IAAI,CAAC;QACR,GAAG,KAAK;QACR,IAAI,GAAG,QAAQ,EAAI,GAAG,IAAI;QAC1B,OAAO;IACT;IACA,OAAO;AACT;AAEA,MAAM,OAAO,GAAG;AAChB,MAAM,KAAK,GAAG;AACd,sCAAsC;AACtC,MAAM,yBAAyB,GAAG,IAAI;AACtC,MAAM,OAAO,GAAG;AAChB,MAAM,MAAM,GAAG;AACf,MAAM,GAAG,GAAG;AACZ,MAAM,GAAG,GAAG;AACZ,MAAM,SAAS,GAAG;AAClB,MAAM,IAAI,GAAG;AACb,MAAM,aAAa,GAAG;AACtB,MAAM,OAAO,GAAG;AAChB,MAAM,QAAQ,GAAG;AACjB,MAAM,MAAM,GAAG;AACf,MAAM,MAAM,GAAG;AACf,MAAM,MAAM,GAAG,SAAU,GAAG,EAAE,GAAG,EAAE;IAAE,OAAO,KAAK,KAAK,CAAC,KAAK,MAAM,KAAM,CAAA,MAAM,MAAM,CAAA,KAAM;AAAK;kBAEhF;;;AC7xCf;;AAAe,SAAS,oBAAoB,QAAQ,EAAE;IACpD,MAAM,eAAe,SAAS,aAAa,CAAC;IAC5C,MAAM,cAAc,SAAS,aAAa,CAAC;IAE3C,eAAe;IACf,OAAO,WAAW,GAAG,WAAY;QAC/B,IAAI,QAAQ,KAAK;QAChB,CAAA,SAAU,CAAC,EAAE;YACZ,IACE,2TAA2T,IAAI,CAC7T,MAEF,0kDAA0kD,IAAI,CAC5kD,EAAE,MAAM,CAAC,GAAG,KAGd,QAAQ,IAAI;QAChB,CAAA,EAAG,UAAU,SAAS,IAAI,UAAU,MAAM,IAAI,OAAO,KAAK;QAC1D,OAAO;IACT;IAEA,aAAa;IACb,IAAI,UAAU,KAAK;IACnB,IAAI,cAAc,KAAK;IAEvB,IAAI,YAAY,eAAe,OAAO,CAAC;IACvC,IAAI,aAAa,eAAe,OAAO,CAAC;IAExC,IAAI,WAAW;QACb,YAAY,aAAa,SAAU,YAAY,IAAI,GAAK,YAAY,KAAK,AAAC;QAC1E,UAAU;IACZ,CAAC;IAED,gBAAgB;IAChB,QAAQ,IAAI;IACZ,MAAM,eAAe;IACrB,MAAM,MAAM,GAAG;IACf,MAAM,IAAI,GAAG,IAAI;IACjB,MAAM,GAAG,GACP;IAEF,0DAA0D;IAC1D,IAAI,SAAS,UAAU,KAAK,WAAW;QACrC,IAAI,YACF,MAAM,WAAW,GAAG,aAAa;QAEnC,IAAI,iBAAiB,KAAK,IAAI,aAAa,KAAK,EAC9C;IAEJ,CAAC;IAED,wDAAwD;IACxD,OAAO,cAAc,GAAG,WAAY;QAClC,eAAe,OAAO,CAAC,aAAa,MAAM,WAAW;QACrD,eAAe,OAAO,CAAC,aAAa;QACpC,IAAI,iBAAiB,KAAK,EACxB;YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,WAAW,OAAO,cAAc,KAAK;QAAC,CACrE;IACH;IAEA,qDAAqD;IACrD,SAAS,gBAAgB,CAAC,oBAAoB,WAAY;QACxD,IAAI,YAAY,IAAI;YAClB,IAAI,SAAS,MAAM,EACjB,MAAM,KAAK,GAAG,IAAI;iBAElB,MAAM,KAAK,GAAG,KAAK;SAEtB;IACH;IAEA,qCAAqC;IAErC,sEAAsE;IACtE,iCAAiC;IACjC,8CAA8C;IAE9C,4BAA4B;IAC5B,oBAAoB,IAAI;IACxB,OAAO,mBAAmB;IAE1B,6BAA6B;IAC7B,qBAAqB,IAAI;IACzB,OAAO,oBAAoB;IAE3B,oBAAoB;IACpB,yBAAyB,IAAI;IAC7B,OAAO,wBAAwB;IAE/B,yBAAyB,IAAI;IAC7B,OAAO,wBAAwB;IAE/B,yBAAyB;IACzB,wBAAwB,IAAI;IAC5B,sBAAsB,MAAM,GAAG;IAC/B,OAAO,uBAAuB;IAE9B,+BAA+B;IAC/B,gBAAgB,IAAI;IACpB,cAAc,MAAM,GAAG;IACvB,OAAO,eAAe;IAEtB,gBAAgB,IAAI;IACpB,cAAc,MAAM,GAAG;IACvB,OAAO,eAAe;IAEtB,mBAAmB;IACnB,aAAa,IAAI;IACjB,WAAW,MAAM,GAAG;IACpB,OAAO,YAAY;IAEnB,mBAAmB;IACnB,UAAU,IAAI;IACd,OAAO,SAAS;IAEhB,6BAA6B;IAC7B,mBAAmB,IAAI;IACvB,OAAO,kBAAkB;IAEzB,mBAAmB;IACnB,gBAAgB,IAAI;IACpB,cAAc,IAAI,GAAG,IAAI;IAEzB,MAAM,oBAAoB;IAC1B,cAAc,MAAM,GAAG;IAEvB,OAAO,eAAe;IAEtB,kBAAkB;IAClB,MAAM,WAAW;QACf;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KAED;IACD,kFAAkF;IAElF,qBAAqB;IACrB,MAAM,WAAW,SAAS,aAAa,CAAC;IAExC,MAAM,YAAY,SAAS,aAAa,CAAC;IACzC,MAAM,OAAO,SAAS,gBAAgB,CAAC;IAEvC,gCAAgC;IAChC,UAAU,gBAAgB,CAAC,SAAS,WAAY;QAC9C;IACF;IAEA,cAAc;IACd,gDAAgD;IAChD,MAAM,cAAc,UAAU,aAAa,CAAC;QAC1C,WAAW;QACX,MAAM;QACN,UAAU;QACV,MAAM,IAAI;QACV,UAAU,IAAI;IAChB;IAEA,IAAI,oBAAoB,KAAK;IAE7B,8BAA8B;IAC9B,SAAS,gBAAgB,CAAC,SAAS,WAAY;QAC7C;QACA,MAAM,WAAW,iBAAiB,KAAK;QACvC,IAAI;YACF,IAAI,CAAC,SAAS;gBACZ,IAAI;oBACF,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,YAAY,KAAK,EAC3C,qDAAqD;oBACrD,oBAAoB,KAAK;yBACpB;wBACL,uCAAuC;wBACvC,MAAM,MAAM,GAAG;wBACf,MAAM,KAAK,GAAG,KAAK;oBACrB,CAAC;iBACF;gBACD;YACF,OAAO;gBACL,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,YAAY,KAAK,EAC3C,mDAAmD;gBACnD,oBAAoB,IAAI;gBAE1B;YACF,CAAC;eAED,IAAI,CAAC,SAAS;YACZ,IAAI;gBACF,IAAI,CAAC,YAAY,KAAK,EACpB,qDAAqD;gBACrD,oBAAoB,KAAK;qBACpB;oBACL,uCAAuC;oBACvC,MAAM,MAAM,GAAG;oBACf,MAAM,KAAK,GAAG,KAAK;gBACrB,CAAC;aACF;YACD;QACF,OAAO;YACL,IAAI,CAAC,YAAY,KAAK,EACpB,mDAAmD;YACnD,oBAAoB,IAAI;YAE1B;QACF,CAAC;QAGH,IAAI,WACF,MAAM,IAAI;IAEd;IAEA,SAAS,aAAa;QACpB,YAAY,QAAQ,CAAC;QACrB,YAAY,IAAI,GAAG,IAAI;QACvB,YAAY,IAAI;IAClB;IAEA,SAAS,aAAa;QACpB,MAAM,MAAM,GAAG;QACf,YAAY,QAAQ,CAAC;QACrB,YAAY,IAAI,GAAG,KAAK;IAC1B;IAEA,8DAA8D;IAC9D,SAAS,gBAAgB,CAAC,SAAS,WAAY;QAC7C,IAAI,iBAAiB,KAAK;YACxB,IAAI,CAAC,YAAY,IAAI,EACnB;iBAEA;SAEH;IACH;IAEA,4BAA4B;IAC5B,IAAI,cAAc,IAAI,IAAI,SAAS;QACjC,QAAQ;QACR,IAAI,iBAAiB,KAAK,EACxB,WAAW,OAAO,cAAc,KAAK;QAEvC,0CAA0C;QAC1C,YAAY,QAAQ,GAAG,KAAK;QAE5B,0CAA0C;QAC1C,KAAK,OAAO,CAAC,CAAC,IAAM;YAClB,EAAE,YAAY,CAAC,SAAS;QAC1B;IACF,CAAC;IAED,qDAAqD;IACrD,IAAI,aAAa,KAAK,EACpB,SAAS,IAAI,CAAC,gBAAgB,CAAC,SAAS,WAAY;QAClD,IAAI,CAAC,WAAW,MAAM,MAAM,IAAI,iBAAiB,KAAK,EACpD,MAAM,IAAI;IAEd;IAGF,2CAA2C;IAE3C,oBAAoB;IACpB,MAAM,oBAAoB,SAAS,gBAAgB,CAAC;IACpD,MAAM,kBAAkB,SAAS,aAAa,CAAC;IAE/C,UAAU,mBAAmB;IAC7B,UAAU,mBAAmB;IAE7B,iBAAiB;IACjB,MAAM,aAAa,SAAS,gBAAgB,CAAC;IAC7C,UAAU,YAAY,wBAAwB;IAE9C,WAAW,OAAO,CAAC,CAAC,OAAS;QAC3B,KAAK,gBAAgB,CAAC,SAAS,WAAY;YACzC,sBAAsB,KAAK,GAAG,IAAI;YAClC;QACF;IACF;IAEA,8CAA8C;IAC9C,MAAM,kBAAkB,SAAS,gBAAgB,CAAC;IAClD,UAAU,iBAAiB,eAAe;IAE1C,aAAa;IACb,MAAM,aAAa,SAAS,gBAAgB,CAAC;IAC7C,UAAU,YAAY,eAAe;IAErC,uBAAuB;IACvB,MAAM,aAAa,SAAS,gBAAgB,CAAC;IAC7C,UAAU,YAAY,eAAe;IAErC,0DAA0D;IAC1D,MAAM,gBAAgB,SAAS,gBAAgB,CAC7C;IAEF,UAAU,eAAe,eAAe;IAExC,wBAAwB;IACxB,MAAM,kBAAkB,SAAS,gBAAgB,CAC/C;IAGF,kFAAkF;IAClF,MAAM,aAAa;QAAC;QAAO;KAAsB;IACjD,UAAU,iBAAiB,eAAe,eAAe;IAEzD,gBAAgB;IAChB,MAAM,gBAAgB,SAAS,gBAAgB,CAAC;IAChD,UAAU,eAAe,eAAe;IAExC,oDAAoD;IACpD,MAAM,WAAW,SAAS,gBAAgB,CACxC;IAEF,UAAU,UAAU,wBAAwB;IAE5C,SAAS;IACT,MAAM,eAAe,SAAS,gBAAgB,CAAC;IAC/C,UAAU,cAAc,wBAAwB;IAEhD,WAAW;IACX,MAAM,qBAAqB,SAAS,gBAAgB,CAAC;IACrD,UAAU,oBAAoB,wBAAwB;IAEtD,oBAAoB;IACpB,MAAM,oBAAoB,SAAS,gBAAgB,CAAC;IACpD,UAAU,mBAAmB,wBAAwB;IAErD,qBAAqB;IACrB,MAAM,aAAa,SAAS,gBAAgB,CAAC;IAC7C,UAAU,YAAY,wBAAwB;IAE9C,8BAA8B;IAC9B,MAAM,iBAAiB,SAAS,aAAa,CAAC;IAC9C,MAAM,kBAAkB,SAAS,aAAa,CAAC;IAE/C,wBAAwB;IACxB,MAAM,mBAAmB,SAAS,gBAAgB,CAAC;IACnD,UAAU,kBAAkB,eAAe;IAE3C,8BAA8B;IAC9B,MAAM,oBAAoB,SAAS,gBAAgB,CAAC;IACpD,UAAU,mBAAmB;IAE7B,MAAM,cAAc,SAAS,aAAa,CAAC;IAC3C,IAAI,iBAAiB;IAErB,YAAY,gBAAgB,CAAC,SAAS,IAAM;QAC1C,iBAAiB;IACnB;IAEA,wBAAwB;IACxB,eAAe,gBAAgB,CAAC,SAAS,WAAY;QACnD,kBAAkB,WAAW,GAAG;QAChC,kBAAkB,IAAI;QACtB,iBAAiB;QACjB,WAAW,IAAM;YACf,KAAK,OAAO,CAAC,CAAC,SAAW;gBACvB,OAAO,KAAK,CAAC,IAAI,GAAG,WAAW,kCAAkC;YACnE;QACF,GAAG;IACL;IAEA,eAAe,gBAAgB,CAAC,cAAc,WAAY;QACxD,sBAAsB,WAAW,GAAG;QACpC,MAAM,aAAa;QACnB,WAAW,MAAM,GAAG;QACpB,WAAW,IAAI;IACjB;IAEA,gBAAgB,gBAAgB,CAAC,SAAS,WAAY;QACpD,mBAAmB,WAAW,GAAG;QACjC,mBAAmB,IAAI;QACvB,iBAAiB;QACjB,KAAK,OAAO,CAAC,CAAC,SAAW;YACvB,OAAO,KAAK,CAAC,IAAI,GAAG,WAAW,uCAAuC;QACxE;IACF;IAEA,gBAAgB,gBAAgB,CAAC,cAAc,WAAY;QACzD,sBAAsB,WAAW,GAAG;QACpC,MAAM,aAAa;QACnB,WAAW,MAAM,GAAG;QACpB,WAAW,IAAI;IACjB;IAEA,0BAA0B;IAC1B,MAAM,YAAY,SAAS,gBAAgB,CACzC;IAGF,UAAU,OAAO,CAAC,CAAC,OAAS;QAC1B,KAAK,gBAAgB,CAAC,SAAS,WAAY;YACzC,cAAc,KAAK;YACnB,QAAQ,IAAI;YACZ;YACA,cAAc,MAAM,GAAG;QACzB;QAEA,uBAAuB;QACvB,KAAK,gBAAgB,CAAC,cAAc,WAAY;YAC9C,cAAc,WAAW,GAAG;YAC5B,cAAc,IAAI,GAAG,IAAI;YACzB,cAAc,MAAM,GAAG;YACvB,IAAI,WAAW,KAAK,EAAE,cAAc,KAAK,GAAG,KAAK;YACjD,cAAc,IAAI;QACpB;QAEA,KAAK,gBAAgB,CAAC,cAAc,WAAY;YAC9C,cAAc,IAAI,GAAG,KAAK;QAC5B;IACF;IAEA,6CAA6C;IAE7C,wCAAwC;IACxC,SAAS,OAAO,KAAK,EAAE,IAAI,EAAE;QAC3B,MAAM,GAAG,GAAG,CAAC,wEAAwE,EAAE,KAAK,IAAI,CAAC;IACnG;IAEA,8FAA8F;IAC9F,SAAS,UAAU,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE;QACrE,YAAY,OAAO,CAAC,CAAC,UAAY;YAC/B,QAAQ,gBAAgB,CAAC,SAAS,WAAY;gBAC5C,IAAI,QAAQ,QAAQ,IAAI,KACtB;gBAEF,WAAW,WAAW,GAAG;gBACzB,WAAW,IAAI;YACjB;YAEA,IAAI,YACF,QAAQ,gBAAgB,CAAC,cAAc,WAAY;gBACjD,mCAAmC;gBACnC,IAAI,iBAAiB,WAAW;oBAC9B,WAAW,WAAW,GAAG;oBACzB,WAAW,IAAI;gBACjB,OAAO;oBACL,+CAA+C;oBAC/C,IAAI,UAAU,SAAS,gBACrB;yBACK;wBACL,WAAW,WAAW,GAAG;wBACzB,WAAW,IAAI;oBACjB,CAAC;gBACH,CAAC;YACH;QAEJ;IACF;IAEA,0CAA0C;IAC1C,MAAM,YAAY,CAAC,SAAS,gBAAkB;QAC5C,IAAI,aAAa,KAAK;QACtB,cAAc,OAAO,CAAC,CAAC,YAAc;YACnC,IAAI,QAAQ,SAAS,CAAC,QAAQ,CAAC,YAC7B,aAAa,IAAI;QAErB;QACA,OAAO;IACT;IAEA,kCAAkC;IAClC,SAAS,eAAe;QACtB,IAAI,CAAC,WAAW,iBAAiB,KAAK,EACpC,WAAW,OAAO,cAAc,KAAK;QAEvC,cAAc,IAAI;IACpB;IAEA,gCAAgC;IAChC,SAAS,cAAc;QACrB,MAAM,IAAI;QAEV,MAAM,aACJ,gBAAiB,CAAA,aAAa,KAAK,IAAI,YAAY,KAAK,AAAD;QACzD,MAAM,aAAa,CAAC,gBAAgB,YAAY,KAAK;QACrD,MAAM,mBAAmB,AAAC,CAAA,cAAc,UAAS,KAAM,CAAC;QAExD,IAAI,kBAAkB;YACpB,MAAM,MAAM,GAAG;YACf,EAAE,OAAO,OAAO,CAAC;gBAAE,QAAQ;YAAa,GAAG,MAAM;QACnD,CAAC;IACH;IAEA,wBAAwB;IACxB,SAAS,WACP,QAAQ,KAAK,EACb,YAAY,YAAY,EACxB,iBAAiB,IAAI,EACrB;QACA,MAAM,aAAa,YAAa,CAAA,aAAa,KAAK,IAAI,YAAY,KAAK,AAAD;QACtE,MAAM,aAAa,CAAC,YAAY,YAAY,KAAK;QACjD,MAAM,mBAAmB,AAAC,CAAA,cAAc,UAAS,KAAM;QAEvD,IAAI,kBAAkB;YACpB,IAAI,QAAQ,MAAM,KAAK;YACvB,IAAI,SAAS,CAAC,gBAAgB,MAAM,KAAK,GAAG,KAAK;YACjD,IAAI,YAAY,QAAQ,YAAY,CAAC;YACrC,IAAI,CAAC,gBAAgB,YAAY;YACjC,EAAE,OAAO,OAAO,CAAC;gBAAE,QAAQ,QAAQ,YAAY,CAAC;YAAC,GAAG,MAAM,WAAY;gBACpE,MAAM,KAAK,GAAG,CAAC;YACjB;QACF,CAAC;IACH;IAEA,4BAA4B;IAC5B,SAAS,aAAa;QACpB,IAAI,SAAS;YACX,UAAU;YACV,UAAU,KAAK;YACf,oBAAoB,KAAK;QAC3B,OAAO;YACL,QAAQ;YACR,UAAU,IAAI;YACd,oBAAoB,IAAI;QAC1B,CAAC;IACH;IAEA,0BAA0B;IAC1B,SAAS,QAAQ,WAAW,QAAQ,EAAE;QACpC,SAAS,OAAO,CAAC,CAAC,QAAU;YAC1B,MAAM,KAAK,GAAG,IAAI;QACpB;IACF;IAEA,4BAA4B;IAC5B,SAAS,UAAU,WAAW,QAAQ,EAAE;QACtC,SAAS,OAAO,CAAC,CAAC,QAAU;YAC1B,MAAM,KAAK,GAAG,KAAK;QACrB;IACF;IAEA,4BAA4B;IAC5B,SAAS,aAAa;QACpB,OAAO;IACT;IAEA,SAAS,uBAAuB;QAC9B,OAAO;IACT;IAEA,4BAA4B;IAC5B,SAAS,aAAa,KAAK,EAAE;QAC3B,UAAU;IACZ;IAEA,+DAA+D;IAC/D,SAAS,gBAAgB;QACvB,KAAK,OAAO,CAAC,CAAC,IAAM;YAClB,MAAM,QAAQ,iBAAiB;YAC/B,IAAI,KAAK,CAAC,4BAA4B,IAAI,YACxC,EAAE,YAAY,CAAC,SAAS;iBAExB,EAAE,YAAY,CACZ,SACA;YAGJ,kFAAkF;YAClF,IAAI,kBAAkB,QACpB,EAAE,KAAK,CAAC,IAAI,GAAG,WAAW,iCAAiC;QAE/D;IACF;IAEA,OAAO;QACL;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;IACF;AACF;kBA7kBwB;;;ACAxB;;AAAA,kDAAgB;AAgIhB,eAAe;AACf,iDAAgB;AAjIT,SAAS,aAAa,KAAK,EAAE;IAClC,MAAM,kBAAkB,MAAM,UAAU;IACxC,MAAM,oBAAoB,MAAM,oBAAoB;IAEpD,MAAM,YAAY,SAAS,aAAa,CAAC;IACzC,MAAM,gBAAgB,SAAS,aAAa,CAAC;IAC7C,MAAM,kBAAkB,SAAS,aAAa,CAAC;IAC/C,MAAM,gBAAgB,SAAS,aAAa,CAAC;IAC7C,MAAM,YAAY,MAAM,IAAI,CAC1B,SAAS,gBAAgB,CAAC;IAG5B,cAAc,MAAM,GAAG;IAEvB,IAAI,aAAa;IACjB,IAAI,YAAY,KAAK;IAErB,gCAAgC;IAChC,UAAU,gBAAgB,CAAC,SAAS,IAAM;QACxC,OAAQ;YACN,KAAK;gBACH;gBACA,KAAM;YACR,KAAK;gBACH;gBACA,KAAM;YACR,KAAK;gBACH;gBACA,KAAM;YACR;gBACE;QACJ;IACF;IAEA,oBAAoB;IACpB,SAAS,kBAAkB;QACzB,cAAc,KAAK,GAAG,KAAK,EAAE,cAAc;QAC3C,cAAc,WAAW,GAAG,GAAG,eAAe;QAC9C,gBAAgB,KAAK,CAAC,OAAO,GAAG,QAAQ,gBAAgB;QACxD,cAAc,KAAK,CAAC,OAAO,GAAG,GAAG,wBAAwB;QACzD,IAAI,CAAC,qBAAqB,mBAAmB,+BAA+B;QAC5E,aAAa,QAAQ,oBAAoB;QACzC,YAAY,KAAK,EAAE,mCAAmC;IACxD;IAEA,qBAAqB;IACrB,SAAS,mBAAmB;QAC1B,cAAc,KAAK,GAAG,IAAI,EAAE,kBAAkB;QAC9C,IAAI,CAAC,qBAAqB,mBAAmB,+BAA+B;QAC5E,gBAAgB,KAAK,CAAC,OAAO,GAAG,OAAO,4BAA4B;QACnE,gBAAgB,KAAK,CAAC,OAAO,GAAG,QAAQ,oBAAoB;QAC5D,cAAc,KAAK,CAAC,OAAO,GAAG,QAAQ,eAAe;QACrD,aAAa,SAAS,oBAAoB;IAC5C;IAEA,oBAAoB;IACpB,SAAS,kBAAkB;QACzB,cAAc,KAAK,GAAG,KAAK,EAAE,cAAc;QAC3C,IAAI,CAAC,qBAAqB,mBAAmB,+BAA+B;QAC5E,gBAAgB,KAAK,CAAC,OAAO,GAAG,QAAQ,gBAAgB;QACxD,aAAa,QAAQ,oBAAoB;QACzC,YAAY,KAAK,EAAE,mCAAmC;IACxD;IAEA,+DAA+D;IAC/D,cAAc,gBAAgB,CAC5B,SACA,WAAY;QACV,YAAY,IAAI;QAChB,IACE,cAAc,KAAK,IAAI,KAAK,IAAI,4BAA4B;QAC5D,SAAS,eAAe,IAAI,UAAU,sCAAsC;UAC5E;YACA;YACA,aAAa,QAAQ,mBAAmB;QAC1C,CAAC;IACH,GACA,KAAK;IAGP,6DAA6D;IAC7D,UAAU,gBAAgB,CAAC,cAAc,IAAM;QAC7C,IAAI,gBAAgB,KAAK,CAAC,OAAO,IAAI,QACnC,cAAc,KAAK,CAAC,OAAO,GAAG;IAElC;IAEA,+BAA+B;IAC/B,UAAU,gBAAgB,CAAC,cAAc,IAAM;QAC7C,MAAM,cAAc,OAAO,gBAAgB,CAAC;QAC5C,IAAI,YAAY,OAAO,IAAI,UAAU,cAAc,KAAK,EACtD,gBAAgB,KAAK,CAAC,OAAO,GAAG;IAEpC;IAEA,8FAA8F;IAC9F,gBAAgB,gBAAgB,CAAC,YAAY,CAAC,QAAU;QACtD,MAAM,cAAc,OAAO,gBAAgB,CAAC;QAE5C,oEAAoE;QACpE,MAAM,sBAAsB,UAAU,IAAI,CAAC,CAAC,MAC1C,IAAI,QAAQ,CAAC,MAAM,aAAa;QAElC,MAAM,0BAA0B,gBAAgB,QAAQ,CACtD,MAAM,aAAa;QAGrB,IACE,CAAC,uBACD,CAAC,2BACD,YAAY,OAAO,KAAK,UACxB,cAAc,KAAK,EAEnB,gBAAgB,KAAK,CAAC,OAAO,GAAG;IAEpC;IAEA,yDAAyD;IACzD,cAAc,gBAAgB,CAAC,YAAY,WAAY;QACrD,MAAM,cAAc,cAAc;QAClC,IAAI,eAAe,CAAC,WAClB,WAAW,IAAM;YACf,cAAc,KAAK,CAAC,OAAO,GAAG;QAChC,GAAG;IAEP;AACF;AAGO,SAAS,YAAY,KAAK,EAAE;IACjC,MAAM,kBAAkB,MAAM,UAAU;IACxC,MAAM,oBAAoB,MAAM,oBAAoB;IAEpD,MAAM,cAAc,SAAS,aAAa,CAAC;IAC3C,MAAM,OAAO,SAAS,gBAAgB,CAAC;IACvC,MAAM,gBAAgB,SAAS,aAAa,CAAC;IAE7C,cAAc,MAAM,GAAG;IAEvB,wBAAwB;IACxB,YAAY,gBAAgB,CAAC,SAAS,IAAM;QAC1C,cAAc,KAAK,GAAG,KAAK,EAAE,cAAc;QAC3C,cAAc,WAAW,GAAG,GAAG,eAAe;QAC9C,IAAI,CAAC,qBAAqB,mBAAmB,+BAA+B;QAC5E,KAAK,OAAO,CAAC,CAAC,SAAW;YACvB,OAAO,KAAK,CAAC,IAAI,GAAG,WAAW,iCAAiC;QAClE;IACF;IAEA,yCAAyC;IACzC,cAAc,gBAAgB,CAC5B,SACA,WAAY;QACV,IACE,cAAc,KAAK,IAAI,KAAK,IAC5B,SAAS,eAAe,IAAI,WAE5B;YAAA,IAAI,CAAC,qBAAqB,mBAAmB,+BAA+B;QAAjC,CAC5C;IACH,GACA,KAAK;AAET;;;AClKA;;AASA,kDAAS;AATT,SAAS,eAAe;IACtB,SAAS,gBAAgB,CAAC,SAAS,SAAU,CAAC,EAAE;QAC9C,IAAI,EAAE,OAAO,IAAI,EAAE,OAAO,EACxB,SAAS,gBAAgB,CAAC,0BAA0B,OAAO,CAAC,CAAC,UAAY;YACvE,QAAQ,YAAY,CAAC,SAAS;QAChC;IAEJ;AACF;;;ACRA,qDAAqD;AACrD;;AAqCA,6CAA6C;AAC7C,2DAAgB;AAShB,yCAAyC;AACzC,gEAAgB;AAWhB,yCAAyC;AACzC,wDAAgB;AA5DhB,SAAS,eAAe,KAAK,EAAE;IAC7B,MAAM,YAAY,SAAS,cAAc,CAAC,CAAC,EAAE,MAAM,MAAM,CAAC;IAC1D,IAAI,WAAW;IAEf,IAAI,OAAO,UAAU,IAAI,KACvB,WAAW,OAAO,OAAO;SACpB,IAAI,OAAO,UAAU,IAAI,MAC9B,WAAW,OAAO,OAAO;SAEzB,WAAW,OAAO,OAAO;IAG3B,6CAA6C;IAC7C,IAAI,UAAU,YAAY,CAAC,WAAW,UAAU;QAC9C,UAAU,GAAG,GAAG;QAChB,IAAI,SAAS,iBAAiB,UAAU,IAAI;IAC9C,CAAC;IAED,uDAAuD;IACvD,MAAM,eAAe,CAAC,OAAS;QAC7B,MAAM,OAAO,KAAK,qBAAqB;QACvC,OACE,KAAK,GAAG,GACL,CAAA,OAAO,WAAW,IAAI,SAAS,eAAe,CAAC,YAAY,AAAD,KAC7D,KAAK,MAAM,GAAG,KACd,KAAK,IAAI,GAAI,CAAA,OAAO,UAAU,IAAI,SAAS,eAAe,CAAC,WAAW,AAAD,KACrE,KAAK,KAAK,GAAG;IAEjB;IAEA,IAAI,aAAa,cAAc,UAAU,MAAM,EAC7C,UAAU,IAAI,GAAG,KAAK,CAAC,CAAC,QAAU;QAChC,QAAQ,IAAI,CAAC,CAAC,0BAA0B,EAAE,MAAM,CAAC,EAAE;IACrD;AAEJ;AAGO,SAAS,wBAAwB;IACtC,SAAS,gBAAgB;QACvB,eAAe;QACf,eAAe;IACjB;IACA;IACA,8BAA8B;AAChC;AAGO,SAAS,6BAA6B;IAC3C,SAAS,qBAAqB;QAC5B,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;IACjB;IACA;IACA,8BAA8B;AAChC;AAGO,SAAS,qBAAqB;IACnC,YAAY;IACZ,cACE,SAAS,cAAc,CAAC,cACxB,SAAS,cAAc,CAAC;IAE1B,cAAc;IACd,cACE,SAAS,cAAc,CAAC,gBACxB,SAAS,cAAc,CAAC;IAE1B,iBAAiB;IACjB,cACE,SAAS,cAAc,CAAC,mBACxB,SAAS,cAAc,CAAC;IAE1B,yBAAyB;IACzB,cACE,SAAS,cAAc,CAAC,wBACxB,SAAS,cAAc,CAAC;AAE5B;AAEA,oBAAoB;AAEpB,sDAAsD;AACtD,SAAS,cAAc,YAAY,EAAE,cAAc,EAAE;IACnD,MAAM,WAAW,IAAI,qBACnB,CAAC,CAAC,MAAM,GAAK;QACX,IAAI,MAAM,cAAc,EAAE;YACxB,aAAa,YAAY,CAAC,WAAW,SAAS,oBAAoB;YAClE,aAAa,IAAI,IAAI,iBAAiB;YACtC,SAAS,SAAS,CAAC,iBAAiB,kCAAkC;QACxE,CAAC;IACH,GACA;QAAE,WAAW;IAAE;IAEjB,SAAS,OAAO,CAAC,iBAAiB,sCAAsC;AAC1E;AAEA,mEAAmE;AACnE,SAAS,8BAA8B,IAAI,EAAE;IAC3C,IAAI;IACJ,OAAO,gBAAgB,CAAC,UAAU,IAAM;QACtC,aAAa;QACb,gBAAgB,WAAW,MAAM;IACnC;AACF;AAEA,mCAAmC;AACnC,SAAS,OAAO,KAAK,EAAE,MAAM,EAAE;IAC7B,IAAI;IACJ,IAAI,MAAM,QAAQ,CAAC,QACjB,MAAM,CAAC,8FAA8F,EAAE,OAAO,IAAI,CAAC;SAEnH,MAAM,CAAC,qFAAqF,EAAE,MAAM,CAAC,EAAE,OAAO,IAAI,CAAC;IAErH,OAAO;AACT","sources":["node_modules/@parcel/runtime-browser-hmr/lib/runtime-9e296157152139b2.js","app.js","js/global/copyEmail.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js","js/global/initCms.js","js/global/preloader.js","js/global/projectLotties.js","js/home/loadAnim.js","node_modules/animejs/lib/anime.es.js","js/global/audio.js","js/global/showreel.js","js/global/bugFixes.js","js/global/dynamicVideos.js"],"sourcesContent":["var HMR_HOST = null;var HMR_PORT = 50619;var HMR_SECURE = false;var HMR_ENV_HASH = \"d6ea1d42532a7575\";module.bundle.HMR_BUNDLE_ID = \"138b6a135baa4167\";\"use strict\";\n\n/* global HMR_HOST, HMR_PORT, HMR_ENV_HASH, HMR_SECURE, chrome, browser, globalThis, __parcel__import__, __parcel__importScripts__, ServiceWorkerGlobalScope */\n\n/*::\nimport type {\n HMRAsset,\n HMRMessage,\n} from '@parcel/reporter-dev-server/src/HMRServer.js';\ninterface ParcelRequire {\n (string): mixed;\n cache: {|[string]: ParcelModule|};\n hotData: mixed;\n Module: any;\n parent: ?ParcelRequire;\n isParcelRequire: true;\n modules: {|[string]: [Function, {|[string]: string|}]|};\n HMR_BUNDLE_ID: string;\n root: ParcelRequire;\n}\ninterface ParcelModule {\n hot: {|\n data: mixed,\n accept(cb: (Function) => void): void,\n dispose(cb: (mixed) => void): void,\n // accept(deps: Array | string, cb: (Function) => void): void,\n // decline(): void,\n _acceptCallbacks: Array<(Function) => void>,\n _disposeCallbacks: Array<(mixed) => void>,\n |};\n}\ninterface ExtensionContext {\n runtime: {|\n reload(): void,\n getURL(url: string): string;\n getManifest(): {manifest_version: number, ...};\n |};\n}\ndeclare var module: {bundle: ParcelRequire, ...};\ndeclare var HMR_HOST: string;\ndeclare var HMR_PORT: string;\ndeclare var HMR_ENV_HASH: string;\ndeclare var HMR_SECURE: boolean;\ndeclare var chrome: ExtensionContext;\ndeclare var browser: ExtensionContext;\ndeclare var __parcel__import__: (string) => Promise;\ndeclare var __parcel__importScripts__: (string) => Promise;\ndeclare var globalThis: typeof self;\ndeclare var ServiceWorkerGlobalScope: Object;\n*/\nvar OVERLAY_ID = '__parcel__error__overlay__';\nvar OldModule = module.bundle.Module;\n\nfunction Module(moduleName) {\n OldModule.call(this, moduleName);\n this.hot = {\n data: module.bundle.hotData,\n _acceptCallbacks: [],\n _disposeCallbacks: [],\n accept: function (fn) {\n this._acceptCallbacks.push(fn || function () {});\n },\n dispose: function (fn) {\n this._disposeCallbacks.push(fn);\n }\n };\n module.bundle.hotData = undefined;\n}\n\nmodule.bundle.Module = Module;\nvar checkedAssets\n/*: {|[string]: boolean|} */\n, acceptedAssets\n/*: {|[string]: boolean|} */\n, assetsToAccept\n/*: Array<[ParcelRequire, string]> */\n;\n\nfunction getHostname() {\n return HMR_HOST || (location.protocol.indexOf('http') === 0 ? location.hostname : 'localhost');\n}\n\nfunction getPort() {\n return HMR_PORT || location.port;\n} // eslint-disable-next-line no-redeclare\n\n\nvar parent = module.bundle.parent;\n\nif ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {\n var hostname = getHostname();\n var port = getPort();\n var protocol = HMR_SECURE || location.protocol == 'https:' && !/localhost|127.0.0.1|0.0.0.0/.test(hostname) ? 'wss' : 'ws';\n var ws = new WebSocket(protocol + '://' + hostname + (port ? ':' + port : '') + '/'); // Web extension context\n\n var extCtx = typeof chrome === 'undefined' ? typeof browser === 'undefined' ? null : browser : chrome; // Safari doesn't support sourceURL in error stacks.\n // eval may also be disabled via CSP, so do a quick check.\n\n var supportsSourceURL = false;\n\n try {\n (0, eval)('throw new Error(\"test\"); //# sourceURL=test.js');\n } catch (err) {\n supportsSourceURL = err.stack.includes('test.js');\n } // $FlowFixMe\n\n\n ws.onmessage = async function (event\n /*: {data: string, ...} */\n ) {\n checkedAssets = {}\n /*: {|[string]: boolean|} */\n ;\n acceptedAssets = {}\n /*: {|[string]: boolean|} */\n ;\n assetsToAccept = [];\n var data\n /*: HMRMessage */\n = JSON.parse(event.data);\n\n if (data.type === 'update') {\n // Remove error overlay if there is one\n if (typeof document !== 'undefined') {\n removeErrorOverlay();\n }\n\n let assets = data.assets.filter(asset => asset.envHash === HMR_ENV_HASH); // Handle HMR Update\n\n let handled = assets.every(asset => {\n return asset.type === 'css' || asset.type === 'js' && hmrAcceptCheck(module.bundle.root, asset.id, asset.depsByBundle);\n });\n\n if (handled) {\n console.clear(); // Dispatch custom event so other runtimes (e.g React Refresh) are aware.\n\n if (typeof window !== 'undefined' && typeof CustomEvent !== 'undefined') {\n window.dispatchEvent(new CustomEvent('parcelhmraccept'));\n }\n\n await hmrApplyUpdates(assets);\n\n for (var i = 0; i < assetsToAccept.length; i++) {\n var id = assetsToAccept[i][1];\n\n if (!acceptedAssets[id]) {\n hmrAcceptRun(assetsToAccept[i][0], id);\n }\n }\n } else fullReload();\n }\n\n if (data.type === 'error') {\n // Log parcel errors to console\n for (let ansiDiagnostic of data.diagnostics.ansi) {\n let stack = ansiDiagnostic.codeframe ? ansiDiagnostic.codeframe : ansiDiagnostic.stack;\n console.error('🚨 [parcel]: ' + ansiDiagnostic.message + '\\n' + stack + '\\n\\n' + ansiDiagnostic.hints.join('\\n'));\n }\n\n if (typeof document !== 'undefined') {\n // Render the fancy html overlay\n removeErrorOverlay();\n var overlay = createErrorOverlay(data.diagnostics.html); // $FlowFixMe\n\n document.body.appendChild(overlay);\n }\n }\n };\n\n ws.onerror = function (e) {\n console.error(e.message);\n };\n\n ws.onclose = function () {\n console.warn('[parcel] 🚨 Connection to the HMR server was lost');\n };\n}\n\nfunction removeErrorOverlay() {\n var overlay = document.getElementById(OVERLAY_ID);\n\n if (overlay) {\n overlay.remove();\n console.log('[parcel] ✨ Error resolved');\n }\n}\n\nfunction createErrorOverlay(diagnostics) {\n var overlay = document.createElement('div');\n overlay.id = OVERLAY_ID;\n let errorHTML = '
';\n\n for (let diagnostic of diagnostics) {\n let stack = diagnostic.frames.length ? diagnostic.frames.reduce((p, frame) => {\n return `${p}\n${frame.location}\n${frame.code}`;\n }, '') : diagnostic.stack;\n errorHTML += `\n
\n
\n 🚨 ${diagnostic.message}\n
\n
${stack}
\n
\n ${diagnostic.hints.map(hint => '
💡 ' + hint + '
').join('')}\n
\n ${diagnostic.documentation ? `` : ''}\n
\n `;\n }\n\n errorHTML += '
';\n overlay.innerHTML = errorHTML;\n return overlay;\n}\n\nfunction fullReload() {\n if ('reload' in location) {\n location.reload();\n } else if (extCtx && extCtx.runtime && extCtx.runtime.reload) {\n extCtx.runtime.reload();\n }\n}\n\nfunction getParents(bundle, id)\n/*: Array<[ParcelRequire, string]> */\n{\n var modules = bundle.modules;\n\n if (!modules) {\n return [];\n }\n\n var parents = [];\n var k, d, dep;\n\n for (k in modules) {\n for (d in modules[k][1]) {\n dep = modules[k][1][d];\n\n if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) {\n parents.push([bundle, k]);\n }\n }\n }\n\n if (bundle.parent) {\n parents = parents.concat(getParents(bundle.parent, id));\n }\n\n return parents;\n}\n\nfunction updateLink(link) {\n var newLink = link.cloneNode();\n\n newLink.onload = function () {\n if (link.parentNode !== null) {\n // $FlowFixMe\n link.parentNode.removeChild(link);\n }\n };\n\n newLink.setAttribute('href', // $FlowFixMe\n link.getAttribute('href').split('?')[0] + '?' + Date.now()); // $FlowFixMe\n\n link.parentNode.insertBefore(newLink, link.nextSibling);\n}\n\nvar cssTimeout = null;\n\nfunction reloadCSS() {\n if (cssTimeout) {\n return;\n }\n\n cssTimeout = setTimeout(function () {\n var links = document.querySelectorAll('link[rel=\"stylesheet\"]');\n\n for (var i = 0; i < links.length; i++) {\n // $FlowFixMe[incompatible-type]\n var href\n /*: string */\n = links[i].getAttribute('href');\n var hostname = getHostname();\n var servedFromHMRServer = hostname === 'localhost' ? new RegExp('^(https?:\\\\/\\\\/(0.0.0.0|127.0.0.1)|localhost):' + getPort()).test(href) : href.indexOf(hostname + ':' + getPort());\n var absolute = /^https?:\\/\\//i.test(href) && href.indexOf(location.origin) !== 0 && !servedFromHMRServer;\n\n if (!absolute) {\n updateLink(links[i]);\n }\n }\n\n cssTimeout = null;\n }, 50);\n}\n\nfunction hmrDownload(asset) {\n if (asset.type === 'js') {\n if (typeof document !== 'undefined') {\n let script = document.createElement('script');\n script.src = asset.url + '?t=' + Date.now();\n\n if (asset.outputFormat === 'esmodule') {\n script.type = 'module';\n }\n\n return new Promise((resolve, reject) => {\n var _document$head;\n\n script.onload = () => resolve(script);\n\n script.onerror = reject;\n (_document$head = document.head) === null || _document$head === void 0 ? void 0 : _document$head.appendChild(script);\n });\n } else if (typeof importScripts === 'function') {\n // Worker scripts\n if (asset.outputFormat === 'esmodule') {\n return __parcel__import__(asset.url + '?t=' + Date.now());\n } else {\n return new Promise((resolve, reject) => {\n try {\n __parcel__importScripts__(asset.url + '?t=' + Date.now());\n\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n }\n }\n }\n}\n\nasync function hmrApplyUpdates(assets) {\n global.parcelHotUpdate = Object.create(null);\n let scriptsToRemove;\n\n try {\n // If sourceURL comments aren't supported in eval, we need to load\n // the update from the dev server over HTTP so that stack traces\n // are correct in errors/logs. This is much slower than eval, so\n // we only do it if needed (currently just Safari).\n // https://bugs.webkit.org/show_bug.cgi?id=137297\n // This path is also taken if a CSP disallows eval.\n if (!supportsSourceURL) {\n let promises = assets.map(asset => {\n var _hmrDownload;\n\n return (_hmrDownload = hmrDownload(asset)) === null || _hmrDownload === void 0 ? void 0 : _hmrDownload.catch(err => {\n // Web extension bugfix for Chromium\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1255412#c12\n if (extCtx && extCtx.runtime && extCtx.runtime.getManifest().manifest_version == 3) {\n if (typeof ServiceWorkerGlobalScope != 'undefined' && global instanceof ServiceWorkerGlobalScope) {\n extCtx.runtime.reload();\n return;\n }\n\n asset.url = extCtx.runtime.getURL('/__parcel_hmr_proxy__?url=' + encodeURIComponent(asset.url + '?t=' + Date.now()));\n return hmrDownload(asset);\n }\n\n throw err;\n });\n });\n scriptsToRemove = await Promise.all(promises);\n }\n\n assets.forEach(function (asset) {\n hmrApply(module.bundle.root, asset);\n });\n } finally {\n delete global.parcelHotUpdate;\n\n if (scriptsToRemove) {\n scriptsToRemove.forEach(script => {\n if (script) {\n var _document$head2;\n\n (_document$head2 = document.head) === null || _document$head2 === void 0 ? void 0 : _document$head2.removeChild(script);\n }\n });\n }\n }\n}\n\nfunction hmrApply(bundle\n/*: ParcelRequire */\n, asset\n/*: HMRAsset */\n) {\n var modules = bundle.modules;\n\n if (!modules) {\n return;\n }\n\n if (asset.type === 'css') {\n reloadCSS();\n } else if (asset.type === 'js') {\n let deps = asset.depsByBundle[bundle.HMR_BUNDLE_ID];\n\n if (deps) {\n if (modules[asset.id]) {\n // Remove dependencies that are removed and will become orphaned.\n // This is necessary so that if the asset is added back again, the cache is gone, and we prevent a full page reload.\n let oldDeps = modules[asset.id][1];\n\n for (let dep in oldDeps) {\n if (!deps[dep] || deps[dep] !== oldDeps[dep]) {\n let id = oldDeps[dep];\n let parents = getParents(module.bundle.root, id);\n\n if (parents.length === 1) {\n hmrDelete(module.bundle.root, id);\n }\n }\n }\n }\n\n if (supportsSourceURL) {\n // Global eval. We would use `new Function` here but browser\n // support for source maps is better with eval.\n (0, eval)(asset.output);\n } // $FlowFixMe\n\n\n let fn = global.parcelHotUpdate[asset.id];\n modules[asset.id] = [fn, deps];\n } else if (bundle.parent) {\n hmrApply(bundle.parent, asset);\n }\n }\n}\n\nfunction hmrDelete(bundle, id) {\n let modules = bundle.modules;\n\n if (!modules) {\n return;\n }\n\n if (modules[id]) {\n // Collect dependencies that will become orphaned when this module is deleted.\n let deps = modules[id][1];\n let orphans = [];\n\n for (let dep in deps) {\n let parents = getParents(module.bundle.root, deps[dep]);\n\n if (parents.length === 1) {\n orphans.push(deps[dep]);\n }\n } // Delete the module. This must be done before deleting dependencies in case of circular dependencies.\n\n\n delete modules[id];\n delete bundle.cache[id]; // Now delete the orphans.\n\n orphans.forEach(id => {\n hmrDelete(module.bundle.root, id);\n });\n } else if (bundle.parent) {\n hmrDelete(bundle.parent, id);\n }\n}\n\nfunction hmrAcceptCheck(bundle\n/*: ParcelRequire */\n, id\n/*: string */\n, depsByBundle\n/*: ?{ [string]: { [string]: string } }*/\n) {\n if (hmrAcceptCheckOne(bundle, id, depsByBundle)) {\n return true;\n } // Traverse parents breadth first. All possible ancestries must accept the HMR update, or we'll reload.\n\n\n let parents = getParents(module.bundle.root, id);\n let accepted = false;\n\n while (parents.length > 0) {\n let v = parents.shift();\n let a = hmrAcceptCheckOne(v[0], v[1], null);\n\n if (a) {\n // If this parent accepts, stop traversing upward, but still consider siblings.\n accepted = true;\n } else {\n // Otherwise, queue the parents in the next level upward.\n let p = getParents(module.bundle.root, v[1]);\n\n if (p.length === 0) {\n // If there are no parents, then we've reached an entry without accepting. Reload.\n accepted = false;\n break;\n }\n\n parents.push(...p);\n }\n }\n\n return accepted;\n}\n\nfunction hmrAcceptCheckOne(bundle\n/*: ParcelRequire */\n, id\n/*: string */\n, depsByBundle\n/*: ?{ [string]: { [string]: string } }*/\n) {\n var modules = bundle.modules;\n\n if (!modules) {\n return;\n }\n\n if (depsByBundle && !depsByBundle[bundle.HMR_BUNDLE_ID]) {\n // If we reached the root bundle without finding where the asset should go,\n // there's nothing to do. Mark as \"accepted\" so we don't reload the page.\n if (!bundle.parent) {\n return true;\n }\n\n return hmrAcceptCheck(bundle.parent, id, depsByBundle);\n }\n\n if (checkedAssets[id]) {\n return true;\n }\n\n checkedAssets[id] = true;\n var cached = bundle.cache[id];\n assetsToAccept.push([bundle, id]);\n\n if (!cached || cached.hot && cached.hot._acceptCallbacks.length) {\n return true;\n }\n}\n\nfunction hmrAcceptRun(bundle\n/*: ParcelRequire */\n, id\n/*: string */\n) {\n var cached = bundle.cache[id];\n bundle.hotData = {};\n\n if (cached && cached.hot) {\n cached.hot.data = bundle.hotData;\n }\n\n if (cached && cached.hot && cached.hot._disposeCallbacks.length) {\n cached.hot._disposeCallbacks.forEach(function (cb) {\n cb(bundle.hotData);\n });\n }\n\n delete bundle.cache[id];\n bundle(id);\n cached = bundle.cache[id];\n\n if (cached && cached.hot && cached.hot._acceptCallbacks.length) {\n cached.hot._acceptCallbacks.forEach(function (cb) {\n var assetsToAlsoAccept = cb(function () {\n return getParents(module.bundle.root, id);\n });\n\n if (assetsToAlsoAccept && assetsToAccept.length) {\n // $FlowFixMe[method-unbinding]\n assetsToAccept.push.apply(assetsToAccept, assetsToAlsoAccept);\n }\n });\n }\n\n acceptedAssets[id] = true;\n}","import copyEmail from \"./js/global/copyEmail\";\nimport initCms from \"./js/global/initCms\";\nimport { loopLogoLoading, readyPreloader } from \"./js/global/preloader\";\nimport initProjectLotties from \"./js/global/projectLotties\";\nimport loadAnim from \"./js/home/loadAnim\";\nimport audioImplementation from \"./js/global/audio\";\nimport { showreelHome, showreelNav } from \"./js/global/showreel\";\nimport { stopCmdClick } from \"./js/global/bugFixes\";\nimport {\n setAllHomepageVideoSources,\n responsiveNavShowreel,\n lazyLoadHomeVideos,\n} from \"./js/global/dynamicVideos\";\n\nconst parceled = true; // for checking localhost vs github pages / CDN\nconst currentPage = window.location.pathname;\nconst homePage = currentPage == \"/\";\n\nconst onReady = () => {\n readyPreloader(); // hides preloader and add event listener for frog lottie\n const audio = audioImplementation(homePage); // adds music, ui-sounds and mute-lottie functionality\n responsiveNavShowreel();\n if (homePage) {\n setAllHomepageVideoSources();\n lazyLoadHomeVideos();\n showreelHome(audio); // code for homepage showreel video\n }\n showreelNav(audio); // code for nav showreel video\n initProjectLotties(); // initiates project lotties for home and work pages\n copyEmail(); // copies email to clipboard in footer\n initCms(); // sets color hovers and cms filtering style for work page & content hub\n document.querySelector(\".landing-video-container\") && loadAnim(); // for home page intro anim\n document.querySelectorAll(\".article-rich-text a\").forEach((e) => {\n e.target = \"_blank\";\n });\n stopCmdClick(); // prevent command click from triggering page transition\n};\n\nconst onLoading = () => {\n loopLogoLoading();\n};\n\nif (document.readyState !== \"loading\") {\n onLoading();\n onReady();\n} else {\n window.addEventListener(\"load\", onReady);\n document.addEventListener(\"DOMContentLoaded\", onLoading);\n}\n\n// close menu on escape key press\nconst handleEscape = (e) => {\n if (e.key === \"Escape\") {\n const closeBtn = document.querySelector(\".burger-close-icon\");\n const hamburgerMenu = document.querySelector(\".hamburger-box\");\n if (hamburgerMenu.style.opacity == 0) {\n closeBtn.click();\n }\n }\n};\nwindow.addEventListener(\"keydown\", handleEscape);\n","export default copyEmail = () => {\n function copyToClipboard(copyText) {\n // copies text to keyboard by creating then deleting selectable text area\n const el = document.createElement(\"textarea\");\n el.value = copyText;\n document.body.appendChild(el);\n el.select();\n document.execCommand(\"copy\");\n document.body.removeChild(el);\n\n // change text of header\n $(\".footer-title-roller-down\").each(function () {\n $(this).html(\"E-mail copied to clipboard\");\n });\n\n // reset text of header after 1000 ms\n setTimeout(function () {\n $(\".footer-title-roller-down\").each(function () {\n $(this).html(\"Copy email\");\n });\n }, 1400);\n }\n\n var remoteHelloBlock = document.getElementById(\"hello\");\n remoteHelloBlock.addEventListener(\"click\", function () {\n copyToClipboard(\"hello@psychoactive.co.nz\");\n });\n\n var careersBlock = document.getElementById(\"careers\");\n careersBlock.addEventListener(\"click\", function () {\n copyToClipboard(\"careers@psychoactive.co.nz\");\n });\n};\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n","export default initCms = () => {\n\n var launchSite = false;\n var cmsItem = document.querySelectorAll('.cms');\n cmsItem.forEach( (e, i) => {\n e.addEventListener(\"mouseover\", () => {\n $(e).addClass(\"cms-overlay\");\n var item = $(e)\n //set the color from cms on inner content on hover\n var colorClass = $(e).find(\".newColor\").attr('class')\n if(colorClass){\n var color = \"#\" + colorClass.split(\" \")[1]\n }\n $('.launch-site-wrapper').mouseover(function(){\n \n launchSite = true;\n item.find(\".underline\").css(\"background-image\", \"linear-gradient(transparent calc(100% - 2px), red 2px)\")\n item.find(\".underline\").css(\"background-size\", \"0 100%\")\n })\n $('.launch-site-wrapper').mouseout(function(){\n launchSite = false;\n })\n if (!launchSite) {\n $(e).find(\".top-bottom-margin\").css(\"color\", color)\n $(e).find(\".text-size-large.full-white\").css(\"color\", color)\n $(e).find(\".h3\").css(\"color\", color)\n $(e).find(\".button-text\").css(\"color\", color)\n $(e).find(\".h3.gets-underlined\").css(\"background-image\", \"linear-gradient(transparent calc(100% - 2px),\" + color + \" 2px)\")\n $(e).find(\".launch-site-icon\").css(\"color\", color)\n }\n });\n\n e.addEventListener(\"mouseout\", () => {\n $(e).removeClass(\"cms-overlay\");\n $(e).find(\".text-size-large.full-white\").css(\"color\", \"\")\n $(e).find(\".top-bottom-margin\").css(\"color\", \"\")\n $(e).find(\".h3.gets-underlined\").css(\"color\", \"\")\n $(e).find(\".button-text\").css(\"color\", \"\")\n $(e).find(\".h3.gets-underlined\").css(\"background-image\", \"linear-gradient(transparent calc(100% - 2px), #FFFFFF 2px)\")\n $(e).find(\".launch-site-icon\").css(\"color\", \"\")\n });\n })\n\n //get the length of all the cms items\n var total_items = cmsItem.length\n //on one of the filter buttons clicked check the length of the cms\n //if its less than the total remove the active class from 'All' filter\n if(document.querySelector('.sort-button') && document.querySelector('.reset-filter')) {\n $('.sort-button').click(function(){\n //adding a delay for finsweet to run its filter script\n setTimeout(function(){\n if($('.cms').length < total_items){\n $('.reset-filter').removeClass('is-active')\n }\n if($('.cms').length == total_items){\n $('.reset-filter').addClass('is-active')\n }\n },300)\n })\n }\n}","var anim;\nvar logoWrap;\nvar logoWrap_b;\nvar anim_b;\n\nconst readyPreloader = () => {\n stopLogoLoading();\n pageOutTransitionLinks();\n logoMouseEvents();\n};\n\n// This code delays the page going to the next URL for a moment so that we can fade the content out (page transition)\nfunction pageOutTransitionLinks() {\n function linkIsExternal(link) {\n return link.host !== window.location.host;\n }\n\n function linkIsPagination(link) {\n return (\n link.classList.contains(\"w-pagination-previous\") ||\n link.classList.contains(\"w-pagination-next\")\n );\n }\n\n const links = document.querySelectorAll(\"a\");\n\n links.forEach((link) => {\n if (!linkIsExternal(link)) {\n if (linkIsPagination(link)) return;\n link.addEventListener(\"click\", pageTransition);\n // Only internal links trigger page out logo animation\n // with the exception of content-hub inner page internal links\n // if (\n // (!link.classList.contains(\"hamburger-box\")) &&\n // (!link.classList.contains(\"close-menu-box\")) &&\n // (!link.target == \"_blank\")\n // ) {\n // link.addEventListener(\"click\", pageTransition);\n // }\n }\n });\n\n function pageTransition(e) {\n e.preventDefault();\n // flip phrog once\n logoWrap.querySelector(\"svg\").style.opacity = \"1\";\n logoWrap.querySelector(\"img\").style.opacity = \"0\";\n logoWrap_b.querySelector(\"svg\").style.opacity = \"1\";\n logoWrap_b.querySelector(\"img\").style.opacity = \"0\";\n\n // setting loop to false doesn't work above so:\n anim.loop = true;\n anim_b.loop = true;\n anim.play();\n anim_b.play();\n setTimeout(function () {\n anim.loop = false;\n anim_b.loop = false;\n }, 100);\n\n var linkUrl = $(this).attr(\"href\");\n\n if (e.ctrlKey || e.metaKey) {\n window.open(linkUrl, \"_blank\");\n } else {\n setTimeout(\n function (url) {\n window.location = url;\n },\n 1150,\n linkUrl\n );\n }\n }\n}\n\n// The lottie of the phrog flipping acts as our loading indicator\nfunction loopLogoLoading() {\n logoWrap = document.querySelector(\"#ps-logo-wrap\");\n logoWrap_b = document.querySelector(\"#ps-logo-wrap-black\");\n\n // White lottie\n anim = lottie.loadAnimation({\n container: logoWrap,\n renderer: \"svg\",\n autoplay: true,\n loop: true,\n name: \"clocked\",\n // animationData: data\n path: \"https://uploads-ssl.webflow.com/5f287eb0037f68c8a08d3520/5fc454a806388fa94227b1ee_White-V01.json\",\n });\n\n // Black lottie\n anim_b = lottie.loadAnimation({\n container: logoWrap_b,\n renderer: \"svg\",\n autoplay: false,\n loop: false,\n name: \"clocked\",\n // animationData: data\n path: \"https://uploads-ssl.webflow.com/5f287eb0037f68c8a08d3520/5fc456d931e1effecaab008c_Black-V02.json\",\n });\n\n // as soon as animation is ready (before other media on page)\n anim.addEventListener(\"data_ready\", () => {\n anim.play();\n logoWrap.querySelector(\"svg\").style.opacity = \"1\";\n logoWrap.querySelector(\"img\").style.opacity = \"0\";\n });\n\n // as soon as animation is ready (before other media on page)\n anim_b.addEventListener(\"data_ready\", () => {\n anim_b.play();\n logoWrap_b.querySelector(\"svg\").style.opacity = \"0\";\n logoWrap_b.querySelector(\"img\").style.opacity = \"1\";\n });\n}\n\n// Makes the phrog flip when hovered\nfunction logoMouseEvents() {\n logoWrap.addEventListener(\"mouseenter\", () => {\n anim.play();\n anim.loop = true;\n logoWrap.querySelector(\"svg\").style.opacity = \"1\";\n logoWrap.querySelector(\"img\").style.opacity = \"0\";\n });\n\n logoWrap.addEventListener(\"mouseleave\", () => {\n anim.loop = false;\n anim.addEventListener(\n \"complete\",\n () => {\n logoWrap.querySelector(\"svg\").style.opacity = \"0\";\n logoWrap.querySelector(\"img\").style.opacity = \"1\";\n },\n { once: true }\n );\n });\n\n logoWrap_b.addEventListener(\"mouseenter\", () => {\n anim_b.play();\n anim_b.loop = true;\n logoWrap_b.querySelector(\"svg\").style.opacity = \"1\";\n logoWrap_b.querySelector(\"img\").style.opacity = \"0\";\n });\n\n logoWrap_b.addEventListener(\"mouseleave\", () => {\n anim_b.loop = false;\n anim_b.addEventListener(\n \"complete\",\n () => {\n logoWrap_b.querySelector(\"svg\").style.opacity = \"0\";\n logoWrap_b.querySelector(\"img\").style.opacity = \"1\";\n },\n { once: true }\n );\n });\n}\n\nfunction stopLogoLoading() {\n anim.loop = false;\n anim.addEventListener(\n \"complete\",\n () => {\n logoWrap.querySelector(\"svg\").style.opacity = \"0\";\n logoWrap.querySelector(\"img\").style.opacity = \"1\";\n },\n { once: true }\n );\n}\n\nexport { loopLogoLoading, readyPreloader };\n","// query breakpoint and load suitable lottie into player\nexport default function initProjectLotties() {\n // check if lottie players exist \n if (document.querySelectorAll('lottie-player').length > 0) {\n // create array with all lotie players\n // var allLotties = [...document.querySelectorAll('lottie-player')]\n // //var allLottiesHover = document.querySelectorAll('.hover-lottie-wrapper')\n\n // let isMobile = window.innerWidth < 428\n \n // // create new array from lotties if it doesn't have a source attribute\n // allLotties = allLotties.filter( l => !l.hasAttribute('src'))\n\n // allLotties.forEach( e => {\n // // get source based to mobile or desktop based on mobile / screen width\n // let source = isMobile ? e.getAttribute('mobile-source') : e.getAttribute('desktop-source')\n // // if source is not empty, load the source into each lottie player\n // if(source != ''){\n // e.load(source)\n // }\n // })\n \n // remove safari placeholder \n document.querySelectorAll('.safari-image').forEach(e => {\n e.remove()\n })\n }\n}\n\n// // Play lotties one randomly and one at a time for performance\n// function isInViewport(el) {\n// var rect = el.getBoundingClientRect()\n// return (\n// rect.top >= 0 &&\n// rect.left >= 0 &&\n// rect.bottom <=\n// (window.innerHeight || document.documentElement.clientHeight) &&\n// rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n// )\n// }\n\n// // lotties only play when in viewport\n// var lottiesRemoved = false\n\n// var x = 0\n\n// // method 1, timeout\n// var deleteLottiesFunction = setInterval(function () {\n// deleteLotties()\n// if (++x === 50) {\n// clearInterval(deleteLottiesFunction)\n// }\n// }, 100)\n// //\n// //deleteLotties()\n\n// function deleteLotties() {\n// // Function runs every 4 seconds (the duration of the lottie animations)\n// if (pageLoaded) {\n// //availableLotties = []\n\n// //var lotties = document.getElementsByTagName(\"lottie-player\");\n// var lottieBoxes = document.getElementsByClassName('lottie-box')\n\n// var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent)\n// var isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0\n\n// //console.log()\n// if (isSafari && isMac && !lottiesRemoved) {\n// lottieBoxes = document.getElementsByClassName('lottie-box')\n// if (lottieBoxes.length == 0) {\n// //clearInterval(deleteLottiesFunction);\n// }\n\n// for (var i = 0; i < lottieBoxes.length; i++) {\n// //lottieBoxes[i].remove()\n// //lottiesRemoved = true\n// }\n// } else {\n// safariImages = document.getElementsByClassName('safari-image')\n\n// for (var i = 0; i < safariImages.length; i++) {\n// safariImages[i].remove()\n// //lottiesRemoved = true\n// }\n// }\n// }\n// }\n// }\n","import anime from \"animejs\";\n\nexport default loadAnim = () => {\n var topMargin;\n\n if ($(window).width() <= 1024) {\n topMargin = \"15vh\";\n } else {\n topMargin = \"6vw\";\n }\n\n // let targetQuery = \".landing-text-box\";\n // original\n // let targetQuery = \".landing-text-box, .project-card-parent\";\n\n //get cookies\n var hasVisited = sessionStorage.getItem(\"washere\");\n\n // anime.set(targetQuery, {\n // opacity: 0,\n // translateY: \"4vh\",\n // });\n\n anime.set(\"#hamburger, .logos-box, #mute-btn-container\", {\n opacity: 0,\n translateY: \"-4vh\",\n });\n\n anime.set(\".landing-video-container\", {\n opacity: 0,\n });\n\n const onOpen = (delay) => {\n $(\".body-dark\").css({ overflow: \"visible\" });\n $(\".preloader-background\").animate({ opacity: 0 }, 1000);\n $(\"#preloader\").css({ display: \"none\" });\n $(\"#mute-btn-container\").css({ display: \"none\" });\n\n anime({\n targets: \".landing-video-container\",\n opacity: { value: 1, duration: 800, easing: \"easeOutSine\" },\n delay: delay,\n });\n\n $(\"#mute-btn-container\").css({ display: \"block\" });\n $(\".navigation-bar\").css({ display: \"block\" });\n\n anime({\n targets: \"#hamburger, .logos-box, #mute-btn-container\",\n opacity: { value: 1, duration: 800, easing: \"easeOutSine\" },\n translateY: {\n value: [\"-4vh\", \"0vh\"],\n duration: 1000,\n easing: \"easeOutQuad\",\n },\n delay: anime.stagger(500, { start: delay }),\n });\n\n // anime({\n // targets: targetQuery,\n // opacity: { value: 1, duration: 800, easing: \"easeOutSine\" },\n // translateY: { value: 0, duration: 1000, easing: \"easeOutQuad\" },\n // delay: anime.stagger(500, { start: delay + 1000 }),\n // });\n };\n const visited = (delay) => {\n $(\".body-dark\").css({ overflow: \"visible\" });\n $(\".preloader-background\").css({ display: \"none\" });\n $(\"#preloader\").css({ display: \"none\" });\n $(\".navigation-bar\").css({ display: \"block;\" });\n $(\"#mute-btn-container\").css({ display: \"block;\" });\n\n anime({\n targets: \".landing-video-container\",\n opacity: { value: 1, duration: 800, easing: \"easeOutSine\" },\n delay: delay,\n });\n\n anime({\n targets: \"#hamburger, .logos-box, #mute-btn-container\",\n opacity: { value: 1, duration: 0, easing: \"easeOutSine\" },\n translateY: { value: [\"0\", \"0vh\"], duration: 0, easing: \"easeOutQuad\" },\n delay: anime.stagger(500, { start: delay }),\n });\n\n // anime({\n // targets: targetQuery,\n // opacity: { value: 1, duration: 0, easing: \"easeOutSine\" },\n // translateY: {\n // value: [\"0vh\", \"0vh\"],\n // duration: 1000,\n // easing: \"easeOutQuad\",\n // },\n // delay: anime.stagger(500, { start: delay + 1000 }),\n // });\n };\n\n //if page has been visited - don't animate\n if (hasVisited || $(window).width() <= 1024) {\n // remove black cover from DOM if user has visited site\n $(\"#black-cover\").remove();\n\n $(\".landing-video-container\").css({\n width: \"80vw\",\n height: \"40vh\",\n position: \"relative\",\n opacity: 0,\n });\n\n visited(0);\n }\n // if page not visited - animate\n else {\n $(\"#preloader\").css({ display: \"block\" });\n\n $(\"#trigger,#enter-btn\").on(\"click\", function () {\n // remove black cover from DOM if user has visited site\n $(\"#black-cover\").remove();\n\n $(\".landing-video-container\")\n .animate(\n {\n width: \"100vw\",\n height: \"100vh\",\n opacity: 1,\n },\n 1000\n )\n .delay(2000)\n .animate(\n {\n top: topMargin,\n width: \"80vw\",\n height: \"40vh\",\n position: \"relative\",\n },\n 1000,\n function () {\n onOpen(0);\n }\n );\n\n // do stuff\n console.log(\"Welcome, stranger !\");\n sessionStorage.setItem(\"washere\", true);\n });\n }\n};\n","/*\n * anime.js v3.2.1\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n nil: function (a) { return is.und(a) || a === null; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; },\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n eases['easeOutIn' + name] = function (a, b) { return function (t) { return t < 0.5 ? (1 - easeIn(a, b)(1 - t * 2)) / 2 : \n (easeIn(a, b)(t * 2 - 1) + 1) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (!is.nil(getAttribute(el, prop)) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width,\n h: height,\n vW: viewBox[2],\n vH: viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress, isPathTargetInsideSVG) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n var scaleX = isPathTargetInsideSVG ? 1 : svg.w / svg.vW;\n var scaleY = isPathTargetInsideSVG ? 1 : svg.h / svg.vH;\n switch (path.property) {\n case 'x': return (p.x - svg.x) * scaleX;\n case 'y': return (p.y - svg.y) * scaleY;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isPathTargetInsideSVG = tween.isPath && is.svg(animatable.target);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\n\nvar engine = (function () {\n var raf;\n\n function play() {\n if (!raf && (!isDocumentHidden() || !anime.suspendWhenDocumentHidden) && activeInstances.length > 0) {\n raf = requestAnimationFrame(step);\n }\n }\n function step(t) {\n // memo on algorithm issue:\n // dangerous iteration over mutable `activeInstances`\n // (that collection may be updated from within callbacks of `tick`-ed animation instances)\n var activeInstancesLength = activeInstances.length;\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n i++;\n } else {\n activeInstances.splice(i, 1);\n activeInstancesLength--;\n }\n }\n raf = i > 0 ? requestAnimationFrame(step) : undefined;\n }\n\n function handleVisibilityChange() {\n if (!anime.suspendWhenDocumentHidden) { return; }\n\n if (isDocumentHidden()) {\n // suspend ticks\n raf = cancelAnimationFrame(raf);\n } else { // is back to active tab\n // first adjust animations to consider the time that ticks were suspended\n activeInstances.forEach(\n function (instance) { return instance ._onDocumentVisibility(); }\n );\n engine();\n }\n }\n if (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n }\n\n return play;\n})();\n\nfunction isDocumentHidden() {\n return !!document && document.hidden;\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber, tween.isPathTargetInsideSVG);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // internal method (for engine) to adjust animation timings before restoring engine ticks (rAF)\n instance._onDocumentVisibility = resetTime;\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n engine();\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.remove = function(targets) {\n var targetsArray = parseTargets(targets);\n removeTargetsFromInstance(targetsArray, instance);\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargetsFromInstance(targetsArray, instance) {\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n}\n\nfunction removeTargetsFromActiveInstances(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n removeTargetsFromInstance(targetsArray, instance);\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.1';\nanime.speed = 1;\n// TODO:#review: naming, documentation\nanime.suspendWhenDocumentHidden = true;\nanime.running = activeInstances;\nanime.remove = removeTargetsFromActiveInstances;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nexport default anime;\n","export default function audioImplementation(homePage) {\n const showreelHome = document.querySelector(\"#showreel_video\");\n const showreelNav = document.querySelector(\"#showreelNavXL_video\");\n\n // MOBILE CHECK\n window.mobileCheck = function () {\n let check = false;\n (function (a) {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n a\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n a.substr(0, 4)\n )\n )\n check = true;\n })(navigator.userAgent || navigator.vendor || window.opera);\n return check;\n };\n\n // MUTE STATE\n let isMuted = false;\n let linkClicked = false;\n\n let muteState = sessionStorage.getItem(\"muteState\");\n let musicState = sessionStorage.getItem(\"musicTime\");\n\n if (muteState) {\n muteState = muteState == \"true\" ? (muteState = true) : (muteState = false);\n isMuted = muteState;\n }\n\n // LOAD BG MUSIC\n music = new Audio();\n const music_volume = 0.3;\n music.volume = music_volume;\n music.loop = true;\n music.src =\n \"https://psychoactive-website-media.sfo3.digitaloceanspaces.com/Audio/Music/ps-website-music-v2.mp3\";\n\n // IF MUSIC STATE IS PRESENT, FADE IN (IF IT'S NOT MOBILE)\n if (document.readyState !== \"loading\") {\n if (musicState) {\n music.currentTime = musicState + 10;\n }\n if (mobileCheck() == false && muteState == false) {\n fadeInMusic();\n }\n }\n\n // FADE MUSIC OUT & STORE IN SESSION STATE BEFORE UNLOAD\n window.onbeforeunload = function () {\n sessionStorage.setItem(\"musicTime\", music.currentTime);\n sessionStorage.setItem(\"muteState\", isMuted);\n if (mobileCheck() == false) {\n if (!isMuted && !linkClicked) fadeToggle(music, music_volume, false);\n }\n };\n\n // MUTE AUDIO IF USER NAVIGATES AWAY FROM BROWSER-TAB\n document.addEventListener(\"visibilitychange\", function () {\n if (mute_lottie.loop) {\n if (document.hidden) {\n music.muted = true;\n } else {\n music.muted = false;\n }\n }\n });\n\n // ************ UI AUDIO ************\n\n // preloader sound <-- currently using html audio from webflow instead\n // preloader_sound = new Audio();\n // addSrc(preloader_sound, 'preloader_sound');\n\n // open hamburger-menu sound\n frog_ui_open_menu = new Audio();\n addSrc(frog_ui_open_menu, \"frog_ui_open_WET\");\n\n // close hamburger-menu sound\n frog_ui_close_menu = new Audio();\n addSrc(frog_ui_close_menu, \"frog_ui_close_WET\");\n\n // menu click sounds\n frog_ui_single_click_1 = new Audio();\n addSrc(frog_ui_single_click_1, \"frog_ui_single_1_WET\");\n\n frog_ui_single_click_2 = new Audio();\n addSrc(frog_ui_single_click_2, \"frog_ui_single_2_WET\");\n\n // menu hover clack sound\n wood_clack_hover_menu = new Audio();\n wood_clack_hover_menu.volume = 0.9;\n addSrc(wood_clack_hover_menu, \"wood_clack\");\n\n // project hover & click sounds\n project_hover = new Audio();\n project_hover.volume = 0.4;\n addSrc(project_hover, \"ui_hover_WET\");\n\n project_click = new Audio();\n project_click.volume = 0.8;\n addSrc(project_click, \"ui_click_WET\");\n\n // text hover sound\n text_hover = new Audio();\n text_hover.volume = 0.1;\n addSrc(text_hover, \"text_hover\");\n\n // logo click sound\n home_ui = new Audio();\n addSrc(home_ui, \"home_ui\");\n\n // define metamorphosis sound\n metamorphosis_ui = new Audio();\n addSrc(metamorphosis_ui, \"frog_sfx\");\n\n // logo hover sound\n ps_logo_hover = new Audio();\n ps_logo_hover.loop = true;\n\n const logo_hover_volume = 0.2;\n ps_logo_hover.volume = logo_hover_volume;\n\n addSrc(ps_logo_hover, \"hover_sound_short\");\n\n // UI SOUNDS ARRAY\n const uiSounds = [\n frog_ui_open_menu,\n frog_ui_close_menu,\n frog_ui_single_click_1,\n frog_ui_single_click_2,\n wood_clack_hover_menu,\n project_hover,\n project_click,\n text_hover,\n ps_logo_hover,\n home_ui,\n // preloader_sound\n ];\n // ^ADD AUDIO VARIABLES HERE IF YOU WANT THEM TO BE INCLUDED IN MUTE FUNCTIONALITY\n\n // MUTE FUNCTIONALITY\n const mute_btn = document.querySelector(\"#mute-btn-container\");\n\n const soundwave = document.querySelector(\".soundwave-svg\");\n const wave = document.querySelectorAll(\".wave\");\n\n // toggle css animation on click\n soundwave.addEventListener(\"click\", function () {\n toggleCssAnim();\n });\n\n // MUTE LOTTIE\n // need bodymovin cdn in header for this to work\n const mute_lottie = bodymovin.loadAnimation({\n container: mute_btn,\n path: \"https://uploads-ssl.webflow.com/5f287eb0037f68c8a08d3520/639bd27ee53aaa1429f32a14_audio_wave_shorter.json\",\n renderer: \"svg\",\n loop: true,\n autoplay: true,\n });\n\n let showreelMuteState = false;\n\n // MUTE BUTTON TOGGLE ON CLICK\n mute_btn.addEventListener(\"click\", function () {\n muteToggle();\n const isMobile = mobileCheck() == false;\n if (showreelHome) {\n if (!isMuted) {\n if (isMobile) {\n if (!showreelHome.muted || !showreelNav.muted) {\n // console.log(\"user unmuted during video playback\");\n showreelMuteState = false;\n } else {\n // console.log(\"custom mute func ran\");\n music.volume = music_volume;\n music.muted = false;\n }\n }\n playLottie();\n } else {\n if (!showreelHome.muted || !showreelNav.muted) {\n // console.log(\"user muted during video playback\");\n showreelMuteState = true;\n }\n stopLottie();\n }\n } else {\n if (!isMuted) {\n if (isMobile) {\n if (!showreelNav.muted) {\n // console.log(\"user unmuted during video playback\");\n showreelMuteState = false;\n } else {\n // console.log(\"custom mute func ran\");\n music.volume = music_volume;\n music.muted = false;\n }\n }\n playLottie();\n } else {\n if (!showreelNav.muted) {\n // console.log(\"user muted during video playback\");\n showreelMuteState = true;\n }\n stopLottie();\n }\n }\n\n if (muteState) {\n music.play();\n }\n });\n\n function playLottie() {\n mute_lottie.setSpeed(1);\n mute_lottie.loop = true;\n mute_lottie.play();\n }\n\n function stopLottie() {\n music.volume = 0;\n mute_lottie.setSpeed(1.5);\n mute_lottie.loop = false;\n }\n\n // catch to make sure music & mute-lottie is never out of sync\n mute_btn.addEventListener(\"click\", function () {\n if (mobileCheck() == false) {\n if (!mute_lottie.loop) {\n fadeOutMusic();\n } else {\n fadeInMusic();\n }\n }\n });\n\n // MUTE ALL if user is muted\n if (muteState !== null && isMuted) {\n muteAll(uiSounds);\n if (mobileCheck() == false) {\n fadeToggle(music, music_volume, false);\n }\n // stop mute-btn lottie from playing - OLD\n mute_lottie.autoplay = false;\n\n // stop mute-btn lottie from playing - NEW\n wave.forEach((e) => {\n e.setAttribute(\"style\", \"animation-iteration-count: 0!important;\");\n });\n }\n\n // PLAY MUSIC WHEN CLICKED ANYWHERE (IF NO PRELOADER)\n if (muteState == false) {\n document.body.addEventListener(\"click\", function () {\n if (!isMuted && music.paused && mobileCheck() == false) {\n music.play();\n }\n });\n }\n\n // ************ AUDIO TRIGGERS ************\n\n // PRELOADER TRIGGER\n const preloader_trigger = document.querySelectorAll(\"#trigger\");\n const preloader_sound = document.querySelector(\"#preloader_sound\");\n\n playSound(preloader_trigger, preloader_sound);\n playSound(preloader_trigger, music);\n\n // MENU NAV-LINKS\n const menu_links = document.querySelectorAll(\".menu-link-box\");\n playSound(menu_links, frog_ui_single_click_1, wood_clack_hover_menu);\n\n menu_links.forEach((link) => {\n link.addEventListener(\"click\", function () {\n wood_clack_hover_menu.muted = true;\n fadeOutMusic();\n });\n });\n\n // ABOUT DEFINITION CARD - AMPHIBIOUS LANGUAGE\n const amphibious_lang = document.querySelectorAll(\".logo-sound\");\n playSound(amphibious_lang, project_click, project_hover);\n\n // TEAM CARDS\n const team_links = document.querySelectorAll(\".team-link-box\");\n playSound(team_links, project_click, project_hover);\n\n // NEW HOME HOVER LINKS\n const home_links = document.querySelectorAll(\".home-hover-outer\");\n playSound(home_links, project_click, project_hover);\n\n // PROJECT LINKS & ALL ELEMENTS WITH CLASS NAME CARD SOUND\n const project_links = document.querySelectorAll(\n \".project-link-wrapper, .project-link, .card-sound\"\n );\n playSound(project_links, project_click, project_hover);\n\n // UNDERLINED TEXT SOUND\n const underline_links = document.querySelectorAll(\n \".gets-underlined, .underlined, .underline-sound\"\n );\n\n // FILTER OUT HOVER SOUND FOR 'OPEN POSITIONS' CAREERS CARDS and CONTENT HUB cards\n const filter_Out = [\"sml\", \"content-hub-heading\"];\n playSound(underline_links, project_click, project_hover, filter_Out);\n\n // ARTICLE LINKS\n const article_links = document.querySelectorAll(\".article-rich-text a\");\n playSound(article_links, project_click, project_hover);\n\n // TAG-TEXT & ALL ELEMENTS WITH CLASS NAME TAG SOUND\n const tag_text = document.querySelectorAll(\n \".tag-text, .button-text, .tag-sound\"\n );\n playSound(tag_text, frog_ui_single_click_2, text_hover);\n\n // FOOTER\n const footer_sound = document.querySelectorAll(\".footer-sound\");\n playSound(footer_sound, frog_ui_single_click_2, text_hover);\n\n // MUTE BTN\n const mute_btn_container = document.querySelectorAll(\"#mute-btn-container\");\n playSound(mute_btn_container, frog_ui_single_click_2, text_hover);\n\n // CAREERS ACCORDION\n const careers_accordion = document.querySelectorAll(\".career-subtitle-box\");\n playSound(careers_accordion, frog_ui_single_click_1, text_hover);\n\n // CAREERS ARROW-BTNS\n const arrow_btns = document.querySelectorAll(\".arrow\");\n playSound(arrow_btns, frog_ui_single_click_2, text_hover);\n\n // HAMBURGER-MENU OPEN & CLOSE\n const hamburger_open = document.querySelector(\".hamburger-box\");\n const hamburger_close = document.querySelector(\".burger-close-icon\");\n\n // ABOUT DEFINITION CARD\n const about_definition = document.querySelectorAll(\".see-more-button\");\n playSound(about_definition, project_click, project_hover);\n\n // DEFINE METAMORPHOSIS BUTTON\n const metamorphosis_btn = document.querySelectorAll(\"#metamorphosis-btn\");\n playSound(metamorphosis_btn, metamorphosis_ui);\n\n const navPlayReel = document.querySelector(\".navbar_playreel-wrapper\");\n let humburgerState = \"closed\";\n\n navPlayReel.addEventListener(\"click\", () => {\n humburgerState = \"closed\";\n });\n\n // HAMBURGER MENU SOUNDS\n hamburger_open.addEventListener(\"click\", function () {\n frog_ui_open_menu.currentTime = 0;\n frog_ui_open_menu.play();\n humburgerState = \"open\";\n setTimeout(() => {\n wave.forEach((stroke) => {\n stroke.style.fill = \"#101012\"; // change mute btn lottie to black\n });\n }, 500);\n });\n\n hamburger_open.addEventListener(\"mouseenter\", function () {\n wood_clack_hover_menu.currentTime = 0;\n const closeAudio = wood_clack_hover_menu;\n closeAudio.volume = 0.9;\n closeAudio.play();\n });\n\n hamburger_close.addEventListener(\"click\", function () {\n frog_ui_close_menu.currentTime = 0;\n frog_ui_close_menu.play();\n humburgerState = \"closed\";\n wave.forEach((stroke) => {\n stroke.style.fill = \"#F5F4F2\"; // change mute btn lottie back to white\n });\n });\n\n hamburger_close.addEventListener(\"mouseenter\", function () {\n wood_clack_hover_menu.currentTime = 0;\n const closeAudio = wood_clack_hover_menu;\n closeAudio.volume = 0.9;\n closeAudio.play();\n });\n\n // LOGO HOME CLICK & HOVER\n const home_link = document.querySelectorAll(\n \"#ps-logo-wrap, #ps-logo-wrap-black\"\n );\n\n home_link.forEach((link) => {\n link.addEventListener(\"click\", function () {\n project_hover.pause();\n home_ui.play();\n fadeOutMusic();\n ps_logo_hover.volume = 0;\n });\n\n // PS-LOGO HOVER SOUNDS\n link.addEventListener(\"mouseenter\", function () {\n ps_logo_hover.currentTime = 0.1;\n ps_logo_hover.loop = true;\n ps_logo_hover.volume = logo_hover_volume;\n if (isMuted == false) ps_logo_hover.muted = false;\n ps_logo_hover.play();\n });\n\n link.addEventListener(\"mouseleave\", function () {\n ps_logo_hover.loop = false;\n });\n });\n\n // ************ CUSTOM FUNCTIONS ************\n\n // func to add src url to audio variable\n function addSrc(audio, file) {\n audio.src = `https://psychoactive-website-media.sfo3.digitaloceanspaces.com/Audio/UI/${file}.mp3`;\n }\n\n // func to play a specified sound either click or hover, with the option to filter out a class\n function playSound(triggerLink, clickSound, hoverSound, filteredClass) {\n triggerLink.forEach((trigger) => {\n trigger.addEventListener(\"click\", function () {\n if (trigger.nodeName == \"A\") {\n fadeOutMusic();\n }\n clickSound.currentTime = 0;\n clickSound.play();\n });\n\n if (hoverSound) {\n trigger.addEventListener(\"mouseenter\", function () {\n // check if a filtered class exists\n if (filteredClass == undefined) {\n hoverSound.currentTime = 0;\n hoverSound.play();\n } else {\n // if it exists, exit, if it doesn't play sound\n if (filterOut(trigger, filteredClass)) {\n return;\n } else {\n hoverSound.currentTime = 0;\n hoverSound.play();\n }\n }\n });\n }\n });\n }\n\n // func to filer out a class from nodelist\n const filterOut = (trigger, filteredClass) => {\n let isFiltered = false;\n filteredClass.forEach((className) => {\n if (trigger.classList.contains(className)) {\n isFiltered = true;\n }\n });\n return isFiltered;\n };\n\n // func to fade out music smoothly\n function fadeOutMusic() {\n if (!isMuted && mobileCheck() == false) {\n fadeToggle(music, music_volume, false);\n }\n linkClicked = true;\n }\n\n //func to fade in music smoothly\n function fadeInMusic() {\n music.play();\n\n const condition1 =\n showreelHome && (showreelHome.muted || showreelNav.muted);\n const condition2 = !showreelHome && showreelNav.muted;\n const overallCondition = (condition1 || condition2) && !isMuted;\n\n if (overallCondition) {\n music.volume = 0;\n $(music).animate({ volume: music_volume }, 1500, \"linear\");\n }\n }\n\n // func to toggle volume\n function fadeToggle(\n audio = music,\n maxVolume = music_volume,\n isFromShowreel = true\n ) {\n const condition1 = homePage && (showreelHome.muted || showreelNav.muted);\n const condition2 = !homePage && showreelNav.muted;\n const overallCondition = (condition1 || condition2) && isFromShowreel;\n\n if (overallCondition) {\n let muted = audio.muted;\n if (muted && !isFromShowreel) audio.muted = false;\n let newVolume = muted ? maxVolume : 0;\n if (!isFromShowreel) newVolume = maxVolume;\n $(audio).animate({ volume: muted ? maxVolume : 0 }, 1000, function () {\n audio.muted = !muted;\n });\n }\n }\n\n // func to toggle mute state\n function muteToggle() {\n if (isMuted) {\n unmuteAll(uiSounds);\n isMuted = false;\n showreelMuteState = false;\n } else {\n muteAll(uiSounds);\n isMuted = true;\n showreelMuteState = true;\n }\n }\n\n // func to mute all sounds\n function muteAll(audioArr = uiSounds) {\n audioArr.forEach((audio) => {\n audio.muted = true;\n });\n }\n\n // func to unmute all sounds\n function unmuteAll(audioArr = uiSounds) {\n audioArr.forEach((audio) => {\n audio.muted = false;\n });\n }\n\n // func to return mute state\n function mutedState() {\n return isMuted;\n }\n\n function getShowreelMuteState() {\n return showreelMuteState;\n }\n\n // forcefully set mute state\n function setMuteState(state) {\n isMuted = state;\n }\n\n // func to toggle the css animation of the soundwave (mute-btn)\n function toggleCssAnim() {\n wave.forEach((e) => {\n const style = getComputedStyle(e);\n if (style[\"animation-iteration-count\"] == \"infinite\") {\n e.setAttribute(\"style\", \"animation-iteration-count: 1!important;\");\n } else {\n e.setAttribute(\n \"style\",\n \"animation-iteration-count: infinite!important;\"\n );\n }\n // catch to ensure mute btn stays black when toggled whilst hamburger menu is open\n if (humburgerState == \"open\") {\n e.style.fill = \"#101012\"; //set mute svg fill back to white\n }\n });\n }\n\n return {\n isMuted,\n muteState,\n muteToggle,\n addSrc,\n playSound,\n filterOut,\n fadeOutMusic,\n fadeInMusic,\n fadeToggle,\n muteAll,\n unmuteAll,\n mutedState,\n toggleCssAnim,\n setMuteState,\n getShowreelMuteState,\n };\n}\n","export function showreelHome(audio) {\n const fadeMusicToggle = audio.fadeToggle;\n const showreelMuteState = audio.getShowreelMuteState;\n\n const homeBlock = document.querySelector(\"#showreel_block_home\");\n const showreelVideo = document.querySelector(\"#showreel_video\");\n const clickToUnmuteUI = document.querySelector(\".showreel-ui-wrapper\");\n const clickToMuteUI = document.querySelector(\".showreel-ui-wrapper-2\");\n const soundBtns = Array.from(\n document.querySelectorAll(\".showreel-sound-button\")\n );\n\n showreelVideo.volume = 0.7;\n\n let clickLogic = \"none\";\n let outOfView = false;\n\n // homepage showreel click logic\n homeBlock.addEventListener(\"click\", () => {\n switch (clickLogic) {\n case \"none\":\n firstClickLogic();\n break;\n case \"once\":\n secondClickLogic();\n break;\n case \"twice\":\n thirdClickLogic();\n break;\n default:\n firstClickLogic();\n }\n });\n\n // FIRST CLICK LOGIC\n function firstClickLogic() {\n showreelVideo.muted = false; //unmute video\n showreelVideo.currentTime = 0; //restart video\n clickToUnmuteUI.style.display = \"none\"; //hide unmute ui\n clickToMuteUI.style.opacity = 0; // set mute opacity to 0\n if (!showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade\n clickLogic = \"once\"; //update click logic\n outOfView = false; //ensure out of view logic is false\n }\n\n // SECOND CLICK LOGIC\n function secondClickLogic() {\n showreelVideo.muted = true; //mute video again\n if (!showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade\n clickToUnmuteUI.style.opacity = \"100\"; // set unmute opacity to 100\n clickToUnmuteUI.style.display = \"flex\"; // display unmute ui\n clickToMuteUI.style.display = \"none\"; // hide mute ui\n clickLogic = \"twice\"; //update click logic\n }\n\n // THIRD CLICK LOGIC\n function thirdClickLogic() {\n showreelVideo.muted = false; //unmute video\n if (!showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade\n clickToUnmuteUI.style.display = \"none\"; //hide unmute ui\n clickLogic = \"once\"; //update click logic\n outOfView = false; //ensure out of view logic is false\n }\n\n // catch for if user scrolls video out of view or clicks on nav\n showreelVideo.addEventListener(\n \"pause\",\n function () {\n outOfView = true;\n if (\n showreelVideo.muted == false && // check if video is unmuted\n document.visibilityState == \"visible\" // check if user is not in another tab\n ) {\n secondClickLogic();\n clickLogic = \"none\"; //reset click logic\n }\n },\n false\n );\n\n // catch to ensure mute ui is never visible when unmute ui is\n homeBlock.addEventListener(\"mouseenter\", () => {\n if (clickToUnmuteUI.style.display == \"flex\") {\n clickToMuteUI.style.display = \"none\";\n }\n });\n\n // initial show / hide on hover\n homeBlock.addEventListener(\"mouseenter\", () => {\n const unMuteStyle = window.getComputedStyle(clickToUnmuteUI);\n if (unMuteStyle.display == \"none\" && showreelVideo.muted) {\n clickToUnmuteUI.style.display = \"flex\";\n }\n });\n\n // hover out interaction with checks to ensure its not hovering out into the sound btns itself\n clickToUnmuteUI.addEventListener(\"mouseout\", (event) => {\n const unMuteStyle = window.getComputedStyle(clickToUnmuteUI);\n\n // Check if the mouse is still over clickToUnmuteUI or any soundBtns\n const isHoveringSoundBtns = soundBtns.some((btn) =>\n btn.contains(event.relatedTarget)\n );\n const isHoveringClickToUnmute = clickToUnmuteUI.contains(\n event.relatedTarget\n );\n\n if (\n !isHoveringSoundBtns &&\n !isHoveringClickToUnmute &&\n unMuteStyle.display === \"flex\" &&\n showreelVideo.muted\n ) {\n clickToUnmuteUI.style.display = \"none\";\n }\n });\n\n // catch if user hovers off showreel, after clicking once\n showreelVideo.addEventListener(\"mouseout\", function () {\n const clickedOnce = clickLogic == \"once\";\n if (clickedOnce && !outOfView) {\n setTimeout(() => {\n clickToMuteUI.style.display = \"flex\";\n }, 500);\n }\n });\n}\n\n// NAV SHOWREEL\nexport function showreelNav(audio) {\n const fadeMusicToggle = audio.fadeToggle;\n const showreelMuteState = audio.getShowreelMuteState;\n\n const navPlayReel = document.querySelector(\".navbar_playreel-wrapper\");\n const wave = document.querySelectorAll(\".wave\");\n const showreelVideo = document.querySelector(\"#showreelNavXL_video\");\n\n showreelVideo.volume = 0.7;\n\n // on showreel-nav click\n navPlayReel.addEventListener(\"click\", () => {\n showreelVideo.muted = false; //unmute video\n showreelVideo.currentTime = 0; //restart video\n if (!showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade\n wave.forEach((stroke) => {\n stroke.style.fill = \"#F5F4F2\"; //set mute svg fill back to white\n });\n });\n\n // when user navigates away from showreel\n showreelVideo.addEventListener(\n \"pause\",\n function () {\n if (\n showreelVideo.muted == false &&\n document.visibilityState == \"visible\"\n ) {\n if (!showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade\n }\n },\n false\n );\n}\n","function stopCmdClick() {\n document.addEventListener(\"click\", function (e) {\n if (e.ctrlKey || e.metaKey) {\n document.querySelectorAll(\".menu-transition-cover\").forEach((element) => {\n element.setAttribute(\"style\", \"visibility:hidden !important\");\n });\n } \n });\n}\nexport { stopCmdClick };","// dynamically set video sources based on screen size\nfunction setVideoSource(video) {\n const videoElem = document.getElementById(`${video}_video`);\n let videoSrc = \"\";\n\n if (window.innerWidth <= 560) {\n videoSrc = getURL(video, \"mobile\");\n } else if (window.innerWidth <= 1680) {\n videoSrc = getURL(video, \"laptop\");\n } else {\n videoSrc = getURL(video, \"desktop\");\n }\n\n // Check if the current source is already set\n if (videoElem.getAttribute(\"src\") !== videoSrc) {\n videoElem.src = videoSrc;\n if (video == \"metamorphoses\") videoElem.play();\n }\n\n // Preload only if the video is already in the viewport\n const isInViewport = (elem) => {\n const rect = elem.getBoundingClientRect();\n return (\n rect.top <\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.bottom > 0 &&\n rect.left < (window.innerWidth || document.documentElement.clientWidth) &&\n rect.right > 0\n );\n };\n\n if (isInViewport(videoElem) && videoElem.paused) {\n videoElem.play().catch((error) => {\n console.warn(`Failed to autoplay video: ${video}`, error);\n });\n }\n}\n\n// call to set all nav showreel video sources\nexport function responsiveNavShowreel() {\n function satNavSources() {\n setVideoSource(\"showreelNav\");\n setVideoSource(\"showreelNavXL\");\n }\n satNavSources();\n debounceWindowResizedListener(satNavSources);\n}\n\n// call to set all homepage video sources\nexport function setAllHomepageVideoSources() {\n function setAllVideoSources() {\n setVideoSource(\"oasis\");\n setVideoSource(\"showreel\");\n setVideoSource(\"sgf\");\n setVideoSource(\"metamorphoses\");\n }\n setAllVideoSources();\n debounceWindowResizedListener(setAllVideoSources);\n}\n\n// Main function to lazy load home videos\nexport function lazyLoadHomeVideos() {\n // SGF VIDEO\n setupLazyLoad(\n document.getElementById(\"sgf_video\"),\n document.getElementById(\"project-thumbnails\")\n );\n // OASIS VIDEO\n setupLazyLoad(\n document.getElementById(\"oasis_video\"),\n document.getElementById(\"project-thumbnails-2\")\n );\n // SHOWREEL VIDEO\n setupLazyLoad(\n document.getElementById(\"showreel_video\"),\n document.getElementById(\"project-thumbnails-3\")\n );\n // HERO TESSELATION VIDEO\n setupLazyLoad(\n document.getElementById(\"metamorphoses_video\"),\n document.getElementById(\"metamorphoses_video\")\n );\n}\n\n// UTILITY FUNCTIONS\n\n// set up IntersectionObserver for lazy loading videos\nfunction setupLazyLoad(videoElement, triggerElement) {\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n videoElement.setAttribute(\"preload\", \"auto\"); // Preload the video\n videoElement.play(); // Play the video\n observer.unobserve(triggerElement); // Stop observing after triggering\n }\n },\n { threshold: 0 }\n );\n observer.observe(triggerElement); // Start observing the trigger element\n}\n\n// render new video source based on window screen size change event\nfunction debounceWindowResizedListener(func) {\n let resizeTimeout;\n window.addEventListener(\"resize\", () => {\n clearTimeout(resizeTimeout);\n resizeTimeout = setTimeout(func, 500);\n });\n}\n\n// return correct digital ocean url\nfunction getURL(video, device) {\n let url;\n if (video.includes(\"Nav\")) {\n url = `https://psychoactive-website-media.sfo3.cdn.digitaloceanspaces.com/Responsive-Videos/showreel_${device}.mp4`;\n } else {\n url = `https://psychoactive-website-media.sfo3.cdn.digitaloceanspaces.com/Responsive-Videos/${video}_${device}.mp4`;\n }\n return url;\n}\n"],"names":[],"version":3,"file":"app.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file +{"mappings":"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","sources":["node_modules/@parcel/runtime-browser-hmr/lib/runtime-9e296157152139b2.js","app.js","js/global/copyEmail.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js","js/global/initCms.js","js/global/preloader.js","js/global/projectLotties.js","js/home/loadAnim.js","node_modules/animejs/lib/anime.es.js","js/global/audio.js","js/global/showreel.js","js/global/bugFixes.js","js/global/dynamicVideos.js"],"sourcesContent":["var HMR_HOST = null;var HMR_PORT = 50619;var HMR_SECURE = false;var HMR_ENV_HASH = \"d6ea1d42532a7575\";module.bundle.HMR_BUNDLE_ID = \"138b6a135baa4167\";\"use strict\";\n\n/* global HMR_HOST, HMR_PORT, HMR_ENV_HASH, HMR_SECURE, chrome, browser, globalThis, __parcel__import__, __parcel__importScripts__, ServiceWorkerGlobalScope */\n\n/*::\nimport type {\n HMRAsset,\n HMRMessage,\n} from '@parcel/reporter-dev-server/src/HMRServer.js';\ninterface ParcelRequire {\n (string): mixed;\n cache: {|[string]: ParcelModule|};\n hotData: mixed;\n Module: any;\n parent: ?ParcelRequire;\n isParcelRequire: true;\n modules: {|[string]: [Function, {|[string]: string|}]|};\n HMR_BUNDLE_ID: string;\n root: ParcelRequire;\n}\ninterface ParcelModule {\n hot: {|\n data: mixed,\n accept(cb: (Function) => void): void,\n dispose(cb: (mixed) => void): void,\n // accept(deps: Array | string, cb: (Function) => void): void,\n // decline(): void,\n _acceptCallbacks: Array<(Function) => void>,\n _disposeCallbacks: Array<(mixed) => void>,\n |};\n}\ninterface ExtensionContext {\n runtime: {|\n reload(): void,\n getURL(url: string): string;\n getManifest(): {manifest_version: number, ...};\n |};\n}\ndeclare var module: {bundle: ParcelRequire, ...};\ndeclare var HMR_HOST: string;\ndeclare var HMR_PORT: string;\ndeclare var HMR_ENV_HASH: string;\ndeclare var HMR_SECURE: boolean;\ndeclare var chrome: ExtensionContext;\ndeclare var browser: ExtensionContext;\ndeclare var __parcel__import__: (string) => Promise;\ndeclare var __parcel__importScripts__: (string) => Promise;\ndeclare var globalThis: typeof self;\ndeclare var ServiceWorkerGlobalScope: Object;\n*/\nvar OVERLAY_ID = '__parcel__error__overlay__';\nvar OldModule = module.bundle.Module;\n\nfunction Module(moduleName) {\n OldModule.call(this, moduleName);\n this.hot = {\n data: module.bundle.hotData,\n _acceptCallbacks: [],\n _disposeCallbacks: [],\n accept: function (fn) {\n this._acceptCallbacks.push(fn || function () {});\n },\n dispose: function (fn) {\n this._disposeCallbacks.push(fn);\n }\n };\n module.bundle.hotData = undefined;\n}\n\nmodule.bundle.Module = Module;\nvar checkedAssets\n/*: {|[string]: boolean|} */\n, acceptedAssets\n/*: {|[string]: boolean|} */\n, assetsToAccept\n/*: Array<[ParcelRequire, string]> */\n;\n\nfunction getHostname() {\n return HMR_HOST || (location.protocol.indexOf('http') === 0 ? location.hostname : 'localhost');\n}\n\nfunction getPort() {\n return HMR_PORT || location.port;\n} // eslint-disable-next-line no-redeclare\n\n\nvar parent = module.bundle.parent;\n\nif ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {\n var hostname = getHostname();\n var port = getPort();\n var protocol = HMR_SECURE || location.protocol == 'https:' && !/localhost|127.0.0.1|0.0.0.0/.test(hostname) ? 'wss' : 'ws';\n var ws = new WebSocket(protocol + '://' + hostname + (port ? ':' + port : '') + '/'); // Web extension context\n\n var extCtx = typeof chrome === 'undefined' ? typeof browser === 'undefined' ? null : browser : chrome; // Safari doesn't support sourceURL in error stacks.\n // eval may also be disabled via CSP, so do a quick check.\n\n var supportsSourceURL = false;\n\n try {\n (0, eval)('throw new Error(\"test\"); //# sourceURL=test.js');\n } catch (err) {\n supportsSourceURL = err.stack.includes('test.js');\n } // $FlowFixMe\n\n\n ws.onmessage = async function (event\n /*: {data: string, ...} */\n ) {\n checkedAssets = {}\n /*: {|[string]: boolean|} */\n ;\n acceptedAssets = {}\n /*: {|[string]: boolean|} */\n ;\n assetsToAccept = [];\n var data\n /*: HMRMessage */\n = JSON.parse(event.data);\n\n if (data.type === 'update') {\n // Remove error overlay if there is one\n if (typeof document !== 'undefined') {\n removeErrorOverlay();\n }\n\n let assets = data.assets.filter(asset => asset.envHash === HMR_ENV_HASH); // Handle HMR Update\n\n let handled = assets.every(asset => {\n return asset.type === 'css' || asset.type === 'js' && hmrAcceptCheck(module.bundle.root, asset.id, asset.depsByBundle);\n });\n\n if (handled) {\n console.clear(); // Dispatch custom event so other runtimes (e.g React Refresh) are aware.\n\n if (typeof window !== 'undefined' && typeof CustomEvent !== 'undefined') {\n window.dispatchEvent(new CustomEvent('parcelhmraccept'));\n }\n\n await hmrApplyUpdates(assets);\n\n for (var i = 0; i < assetsToAccept.length; i++) {\n var id = assetsToAccept[i][1];\n\n if (!acceptedAssets[id]) {\n hmrAcceptRun(assetsToAccept[i][0], id);\n }\n }\n } else fullReload();\n }\n\n if (data.type === 'error') {\n // Log parcel errors to console\n for (let ansiDiagnostic of data.diagnostics.ansi) {\n let stack = ansiDiagnostic.codeframe ? ansiDiagnostic.codeframe : ansiDiagnostic.stack;\n console.error('🚨 [parcel]: ' + ansiDiagnostic.message + '\\n' + stack + '\\n\\n' + ansiDiagnostic.hints.join('\\n'));\n }\n\n if (typeof document !== 'undefined') {\n // Render the fancy html overlay\n removeErrorOverlay();\n var overlay = createErrorOverlay(data.diagnostics.html); // $FlowFixMe\n\n document.body.appendChild(overlay);\n }\n }\n };\n\n ws.onerror = function (e) {\n console.error(e.message);\n };\n\n ws.onclose = function () {\n console.warn('[parcel] 🚨 Connection to the HMR server was lost');\n };\n}\n\nfunction removeErrorOverlay() {\n var overlay = document.getElementById(OVERLAY_ID);\n\n if (overlay) {\n overlay.remove();\n console.log('[parcel] ✨ Error resolved');\n }\n}\n\nfunction createErrorOverlay(diagnostics) {\n var overlay = document.createElement('div');\n overlay.id = OVERLAY_ID;\n let errorHTML = '
';\n\n for (let diagnostic of diagnostics) {\n let stack = diagnostic.frames.length ? diagnostic.frames.reduce((p, frame) => {\n return `${p}\n${frame.location}\n${frame.code}`;\n }, '') : diagnostic.stack;\n errorHTML += `\n
\n
\n 🚨 ${diagnostic.message}\n
\n
${stack}
\n
\n ${diagnostic.hints.map(hint => '
💡 ' + hint + '
').join('')}\n
\n ${diagnostic.documentation ? `` : ''}\n
\n `;\n }\n\n errorHTML += '
';\n overlay.innerHTML = errorHTML;\n return overlay;\n}\n\nfunction fullReload() {\n if ('reload' in location) {\n location.reload();\n } else if (extCtx && extCtx.runtime && extCtx.runtime.reload) {\n extCtx.runtime.reload();\n }\n}\n\nfunction getParents(bundle, id)\n/*: Array<[ParcelRequire, string]> */\n{\n var modules = bundle.modules;\n\n if (!modules) {\n return [];\n }\n\n var parents = [];\n var k, d, dep;\n\n for (k in modules) {\n for (d in modules[k][1]) {\n dep = modules[k][1][d];\n\n if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) {\n parents.push([bundle, k]);\n }\n }\n }\n\n if (bundle.parent) {\n parents = parents.concat(getParents(bundle.parent, id));\n }\n\n return parents;\n}\n\nfunction updateLink(link) {\n var newLink = link.cloneNode();\n\n newLink.onload = function () {\n if (link.parentNode !== null) {\n // $FlowFixMe\n link.parentNode.removeChild(link);\n }\n };\n\n newLink.setAttribute('href', // $FlowFixMe\n link.getAttribute('href').split('?')[0] + '?' + Date.now()); // $FlowFixMe\n\n link.parentNode.insertBefore(newLink, link.nextSibling);\n}\n\nvar cssTimeout = null;\n\nfunction reloadCSS() {\n if (cssTimeout) {\n return;\n }\n\n cssTimeout = setTimeout(function () {\n var links = document.querySelectorAll('link[rel=\"stylesheet\"]');\n\n for (var i = 0; i < links.length; i++) {\n // $FlowFixMe[incompatible-type]\n var href\n /*: string */\n = links[i].getAttribute('href');\n var hostname = getHostname();\n var servedFromHMRServer = hostname === 'localhost' ? new RegExp('^(https?:\\\\/\\\\/(0.0.0.0|127.0.0.1)|localhost):' + getPort()).test(href) : href.indexOf(hostname + ':' + getPort());\n var absolute = /^https?:\\/\\//i.test(href) && href.indexOf(location.origin) !== 0 && !servedFromHMRServer;\n\n if (!absolute) {\n updateLink(links[i]);\n }\n }\n\n cssTimeout = null;\n }, 50);\n}\n\nfunction hmrDownload(asset) {\n if (asset.type === 'js') {\n if (typeof document !== 'undefined') {\n let script = document.createElement('script');\n script.src = asset.url + '?t=' + Date.now();\n\n if (asset.outputFormat === 'esmodule') {\n script.type = 'module';\n }\n\n return new Promise((resolve, reject) => {\n var _document$head;\n\n script.onload = () => resolve(script);\n\n script.onerror = reject;\n (_document$head = document.head) === null || _document$head === void 0 ? void 0 : _document$head.appendChild(script);\n });\n } else if (typeof importScripts === 'function') {\n // Worker scripts\n if (asset.outputFormat === 'esmodule') {\n return __parcel__import__(asset.url + '?t=' + Date.now());\n } else {\n return new Promise((resolve, reject) => {\n try {\n __parcel__importScripts__(asset.url + '?t=' + Date.now());\n\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n }\n }\n }\n}\n\nasync function hmrApplyUpdates(assets) {\n global.parcelHotUpdate = Object.create(null);\n let scriptsToRemove;\n\n try {\n // If sourceURL comments aren't supported in eval, we need to load\n // the update from the dev server over HTTP so that stack traces\n // are correct in errors/logs. This is much slower than eval, so\n // we only do it if needed (currently just Safari).\n // https://bugs.webkit.org/show_bug.cgi?id=137297\n // This path is also taken if a CSP disallows eval.\n if (!supportsSourceURL) {\n let promises = assets.map(asset => {\n var _hmrDownload;\n\n return (_hmrDownload = hmrDownload(asset)) === null || _hmrDownload === void 0 ? void 0 : _hmrDownload.catch(err => {\n // Web extension bugfix for Chromium\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1255412#c12\n if (extCtx && extCtx.runtime && extCtx.runtime.getManifest().manifest_version == 3) {\n if (typeof ServiceWorkerGlobalScope != 'undefined' && global instanceof ServiceWorkerGlobalScope) {\n extCtx.runtime.reload();\n return;\n }\n\n asset.url = extCtx.runtime.getURL('/__parcel_hmr_proxy__?url=' + encodeURIComponent(asset.url + '?t=' + Date.now()));\n return hmrDownload(asset);\n }\n\n throw err;\n });\n });\n scriptsToRemove = await Promise.all(promises);\n }\n\n assets.forEach(function (asset) {\n hmrApply(module.bundle.root, asset);\n });\n } finally {\n delete global.parcelHotUpdate;\n\n if (scriptsToRemove) {\n scriptsToRemove.forEach(script => {\n if (script) {\n var _document$head2;\n\n (_document$head2 = document.head) === null || _document$head2 === void 0 ? void 0 : _document$head2.removeChild(script);\n }\n });\n }\n }\n}\n\nfunction hmrApply(bundle\n/*: ParcelRequire */\n, asset\n/*: HMRAsset */\n) {\n var modules = bundle.modules;\n\n if (!modules) {\n return;\n }\n\n if (asset.type === 'css') {\n reloadCSS();\n } else if (asset.type === 'js') {\n let deps = asset.depsByBundle[bundle.HMR_BUNDLE_ID];\n\n if (deps) {\n if (modules[asset.id]) {\n // Remove dependencies that are removed and will become orphaned.\n // This is necessary so that if the asset is added back again, the cache is gone, and we prevent a full page reload.\n let oldDeps = modules[asset.id][1];\n\n for (let dep in oldDeps) {\n if (!deps[dep] || deps[dep] !== oldDeps[dep]) {\n let id = oldDeps[dep];\n let parents = getParents(module.bundle.root, id);\n\n if (parents.length === 1) {\n hmrDelete(module.bundle.root, id);\n }\n }\n }\n }\n\n if (supportsSourceURL) {\n // Global eval. We would use `new Function` here but browser\n // support for source maps is better with eval.\n (0, eval)(asset.output);\n } // $FlowFixMe\n\n\n let fn = global.parcelHotUpdate[asset.id];\n modules[asset.id] = [fn, deps];\n } else if (bundle.parent) {\n hmrApply(bundle.parent, asset);\n }\n }\n}\n\nfunction hmrDelete(bundle, id) {\n let modules = bundle.modules;\n\n if (!modules) {\n return;\n }\n\n if (modules[id]) {\n // Collect dependencies that will become orphaned when this module is deleted.\n let deps = modules[id][1];\n let orphans = [];\n\n for (let dep in deps) {\n let parents = getParents(module.bundle.root, deps[dep]);\n\n if (parents.length === 1) {\n orphans.push(deps[dep]);\n }\n } // Delete the module. This must be done before deleting dependencies in case of circular dependencies.\n\n\n delete modules[id];\n delete bundle.cache[id]; // Now delete the orphans.\n\n orphans.forEach(id => {\n hmrDelete(module.bundle.root, id);\n });\n } else if (bundle.parent) {\n hmrDelete(bundle.parent, id);\n }\n}\n\nfunction hmrAcceptCheck(bundle\n/*: ParcelRequire */\n, id\n/*: string */\n, depsByBundle\n/*: ?{ [string]: { [string]: string } }*/\n) {\n if (hmrAcceptCheckOne(bundle, id, depsByBundle)) {\n return true;\n } // Traverse parents breadth first. All possible ancestries must accept the HMR update, or we'll reload.\n\n\n let parents = getParents(module.bundle.root, id);\n let accepted = false;\n\n while (parents.length > 0) {\n let v = parents.shift();\n let a = hmrAcceptCheckOne(v[0], v[1], null);\n\n if (a) {\n // If this parent accepts, stop traversing upward, but still consider siblings.\n accepted = true;\n } else {\n // Otherwise, queue the parents in the next level upward.\n let p = getParents(module.bundle.root, v[1]);\n\n if (p.length === 0) {\n // If there are no parents, then we've reached an entry without accepting. Reload.\n accepted = false;\n break;\n }\n\n parents.push(...p);\n }\n }\n\n return accepted;\n}\n\nfunction hmrAcceptCheckOne(bundle\n/*: ParcelRequire */\n, id\n/*: string */\n, depsByBundle\n/*: ?{ [string]: { [string]: string } }*/\n) {\n var modules = bundle.modules;\n\n if (!modules) {\n return;\n }\n\n if (depsByBundle && !depsByBundle[bundle.HMR_BUNDLE_ID]) {\n // If we reached the root bundle without finding where the asset should go,\n // there's nothing to do. Mark as \"accepted\" so we don't reload the page.\n if (!bundle.parent) {\n return true;\n }\n\n return hmrAcceptCheck(bundle.parent, id, depsByBundle);\n }\n\n if (checkedAssets[id]) {\n return true;\n }\n\n checkedAssets[id] = true;\n var cached = bundle.cache[id];\n assetsToAccept.push([bundle, id]);\n\n if (!cached || cached.hot && cached.hot._acceptCallbacks.length) {\n return true;\n }\n}\n\nfunction hmrAcceptRun(bundle\n/*: ParcelRequire */\n, id\n/*: string */\n) {\n var cached = bundle.cache[id];\n bundle.hotData = {};\n\n if (cached && cached.hot) {\n cached.hot.data = bundle.hotData;\n }\n\n if (cached && cached.hot && cached.hot._disposeCallbacks.length) {\n cached.hot._disposeCallbacks.forEach(function (cb) {\n cb(bundle.hotData);\n });\n }\n\n delete bundle.cache[id];\n bundle(id);\n cached = bundle.cache[id];\n\n if (cached && cached.hot && cached.hot._acceptCallbacks.length) {\n cached.hot._acceptCallbacks.forEach(function (cb) {\n var assetsToAlsoAccept = cb(function () {\n return getParents(module.bundle.root, id);\n });\n\n if (assetsToAlsoAccept && assetsToAccept.length) {\n // $FlowFixMe[method-unbinding]\n assetsToAccept.push.apply(assetsToAccept, assetsToAlsoAccept);\n }\n });\n }\n\n acceptedAssets[id] = true;\n}","import copyEmail from \"./js/global/copyEmail\";\nimport initCms from \"./js/global/initCms\";\nimport { loopLogoLoading, readyPreloader } from \"./js/global/preloader\";\nimport initProjectLotties from \"./js/global/projectLotties\";\nimport loadAnim from \"./js/home/loadAnim\";\nimport audioImplementation from \"./js/global/audio\";\nimport { showreelHome, showreelNav } from \"./js/global/showreel\";\nimport { stopCmdClick } from \"./js/global/bugFixes\";\nimport {\n setAllHomepageVideoSources,\n responsiveNavShowreel,\n lazyLoadHomeVideos,\n} from \"./js/global/dynamicVideos\";\n\nconst parceled = true; // for checking localhost vs github pages / CDN\nconst currentPage = window.location.pathname;\nconst homePage = currentPage == \"/\";\n\nconst onReady = () => {\n readyPreloader(); // hides preloader and add event listener for frog lottie\n const audio = audioImplementation(homePage); // adds music, ui-sounds and mute-lottie functionality\n responsiveNavShowreel();\n if (homePage) {\n setAllHomepageVideoSources();\n lazyLoadHomeVideos();\n showreelHome(audio); // code for homepage showreel video\n }\n showreelNav(audio); // code for nav showreel video\n initProjectLotties(); // initiates project lotties for home and work pages\n copyEmail(); // copies email to clipboard in footer\n initCms(); // sets color hovers and cms filtering style for work page & content hub\n document.querySelector(\".landing-video-container\") && loadAnim(); // for home page intro anim\n document.querySelectorAll(\".article-rich-text a\").forEach((e) => {\n e.target = \"_blank\";\n });\n stopCmdClick(); // prevent command click from triggering page transition\n};\n\nconst onLoading = () => {\n loopLogoLoading();\n};\n\nif (document.readyState !== \"loading\") {\n onLoading();\n onReady();\n} else {\n window.addEventListener(\"load\", onReady);\n document.addEventListener(\"DOMContentLoaded\", onLoading);\n}\n\n// close menu on escape key press\nconst handleEscape = (e) => {\n if (e.key === \"Escape\") {\n const closeBtn = document.querySelector(\".burger-close-icon\");\n const hamburgerMenu = document.querySelector(\".hamburger-box\");\n if (hamburgerMenu.style.opacity == 0) {\n closeBtn.click();\n }\n }\n};\nwindow.addEventListener(\"keydown\", handleEscape);\n","export default copyEmail = () => {\n function copyToClipboard(copyText) {\n // copies text to keyboard by creating then deleting selectable text area\n const el = document.createElement(\"textarea\");\n el.value = copyText;\n document.body.appendChild(el);\n el.select();\n document.execCommand(\"copy\");\n document.body.removeChild(el);\n\n // change text of header\n $(\".footer-title-roller-down\").each(function () {\n $(this).html(\"E-mail copied to clipboard\");\n });\n\n // reset text of header after 1000 ms\n setTimeout(function () {\n $(\".footer-title-roller-down\").each(function () {\n $(this).html(\"Copy email\");\n });\n }, 1400);\n }\n\n var remoteHelloBlock = document.getElementById(\"hello\");\n remoteHelloBlock.addEventListener(\"click\", function () {\n copyToClipboard(\"hello@psychoactive.co.nz\");\n });\n\n var careersBlock = document.getElementById(\"careers\");\n careersBlock.addEventListener(\"click\", function () {\n copyToClipboard(\"careers@psychoactive.co.nz\");\n });\n};\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n","export default initCms = () => {\n\n var launchSite = false;\n var cmsItem = document.querySelectorAll('.cms');\n cmsItem.forEach( (e, i) => {\n e.addEventListener(\"mouseover\", () => {\n $(e).addClass(\"cms-overlay\");\n var item = $(e)\n //set the color from cms on inner content on hover\n var colorClass = $(e).find(\".newColor\").attr('class')\n if(colorClass){\n var color = \"#\" + colorClass.split(\" \")[1]\n }\n $('.launch-site-wrapper').mouseover(function(){\n \n launchSite = true;\n item.find(\".underline\").css(\"background-image\", \"linear-gradient(transparent calc(100% - 2px), red 2px)\")\n item.find(\".underline\").css(\"background-size\", \"0 100%\")\n })\n $('.launch-site-wrapper').mouseout(function(){\n launchSite = false;\n })\n if (!launchSite) {\n $(e).find(\".top-bottom-margin\").css(\"color\", color)\n $(e).find(\".text-size-large.full-white\").css(\"color\", color)\n $(e).find(\".h3\").css(\"color\", color)\n $(e).find(\".button-text\").css(\"color\", color)\n $(e).find(\".h3.gets-underlined\").css(\"background-image\", \"linear-gradient(transparent calc(100% - 2px),\" + color + \" 2px)\")\n $(e).find(\".launch-site-icon\").css(\"color\", color)\n }\n });\n\n e.addEventListener(\"mouseout\", () => {\n $(e).removeClass(\"cms-overlay\");\n $(e).find(\".text-size-large.full-white\").css(\"color\", \"\")\n $(e).find(\".top-bottom-margin\").css(\"color\", \"\")\n $(e).find(\".h3.gets-underlined\").css(\"color\", \"\")\n $(e).find(\".button-text\").css(\"color\", \"\")\n $(e).find(\".h3.gets-underlined\").css(\"background-image\", \"linear-gradient(transparent calc(100% - 2px), #FFFFFF 2px)\")\n $(e).find(\".launch-site-icon\").css(\"color\", \"\")\n });\n })\n\n //get the length of all the cms items\n var total_items = cmsItem.length\n //on one of the filter buttons clicked check the length of the cms\n //if its less than the total remove the active class from 'All' filter\n if(document.querySelector('.sort-button') && document.querySelector('.reset-filter')) {\n $('.sort-button').click(function(){\n //adding a delay for finsweet to run its filter script\n setTimeout(function(){\n if($('.cms').length < total_items){\n $('.reset-filter').removeClass('is-active')\n }\n if($('.cms').length == total_items){\n $('.reset-filter').addClass('is-active')\n }\n },300)\n })\n }\n}","var anim;\nvar logoWrap;\nvar logoWrap_b;\nvar anim_b;\n\nconst readyPreloader = () => {\n stopLogoLoading();\n pageOutTransitionLinks();\n logoMouseEvents();\n};\n\n// This code delays the page going to the next URL for a moment so that we can fade the content out (page transition)\nfunction pageOutTransitionLinks() {\n function linkIsExternal(link) {\n return link.host !== window.location.host;\n }\n\n function linkIsPagination(link) {\n return (\n link.classList.contains(\"w-pagination-previous\") ||\n link.classList.contains(\"w-pagination-next\")\n );\n }\n\n const links = document.querySelectorAll(\"a\");\n\n links.forEach((link) => {\n if (!linkIsExternal(link)) {\n if (linkIsPagination(link)) return;\n link.addEventListener(\"click\", pageTransition);\n // Only internal links trigger page out logo animation\n // with the exception of content-hub inner page internal links\n // if (\n // (!link.classList.contains(\"hamburger-box\")) &&\n // (!link.classList.contains(\"close-menu-box\")) &&\n // (!link.target == \"_blank\")\n // ) {\n // link.addEventListener(\"click\", pageTransition);\n // }\n }\n });\n\n function pageTransition(e) {\n e.preventDefault();\n // flip phrog once\n logoWrap.querySelector(\"svg\").style.opacity = \"1\";\n logoWrap.querySelector(\"img\").style.opacity = \"0\";\n logoWrap_b.querySelector(\"svg\").style.opacity = \"1\";\n logoWrap_b.querySelector(\"img\").style.opacity = \"0\";\n\n // setting loop to false doesn't work above so:\n anim.loop = true;\n anim_b.loop = true;\n anim.play();\n anim_b.play();\n setTimeout(function () {\n anim.loop = false;\n anim_b.loop = false;\n }, 100);\n\n var linkUrl = $(this).attr(\"href\");\n\n if (e.ctrlKey || e.metaKey) {\n window.open(linkUrl, \"_blank\");\n } else {\n setTimeout(\n function (url) {\n window.location = url;\n },\n 1150,\n linkUrl\n );\n }\n }\n}\n\n// The lottie of the phrog flipping acts as our loading indicator\nfunction loopLogoLoading() {\n logoWrap = document.querySelector(\"#ps-logo-wrap\");\n logoWrap_b = document.querySelector(\"#ps-logo-wrap-black\");\n\n // White lottie\n anim = lottie.loadAnimation({\n container: logoWrap,\n renderer: \"svg\",\n autoplay: true,\n loop: true,\n name: \"clocked\",\n // animationData: data\n path: \"https://uploads-ssl.webflow.com/5f287eb0037f68c8a08d3520/5fc454a806388fa94227b1ee_White-V01.json\",\n });\n\n // Black lottie\n anim_b = lottie.loadAnimation({\n container: logoWrap_b,\n renderer: \"svg\",\n autoplay: false,\n loop: false,\n name: \"clocked\",\n // animationData: data\n path: \"https://uploads-ssl.webflow.com/5f287eb0037f68c8a08d3520/5fc456d931e1effecaab008c_Black-V02.json\",\n });\n\n // as soon as animation is ready (before other media on page)\n anim.addEventListener(\"data_ready\", () => {\n anim.play();\n logoWrap.querySelector(\"svg\").style.opacity = \"1\";\n logoWrap.querySelector(\"img\").style.opacity = \"0\";\n });\n\n // as soon as animation is ready (before other media on page)\n anim_b.addEventListener(\"data_ready\", () => {\n anim_b.play();\n logoWrap_b.querySelector(\"svg\").style.opacity = \"0\";\n logoWrap_b.querySelector(\"img\").style.opacity = \"1\";\n });\n}\n\n// Makes the phrog flip when hovered\nfunction logoMouseEvents() {\n logoWrap.addEventListener(\"mouseenter\", () => {\n anim.play();\n anim.loop = true;\n logoWrap.querySelector(\"svg\").style.opacity = \"1\";\n logoWrap.querySelector(\"img\").style.opacity = \"0\";\n });\n\n logoWrap.addEventListener(\"mouseleave\", () => {\n anim.loop = false;\n anim.addEventListener(\n \"complete\",\n () => {\n logoWrap.querySelector(\"svg\").style.opacity = \"0\";\n logoWrap.querySelector(\"img\").style.opacity = \"1\";\n },\n { once: true }\n );\n });\n\n logoWrap_b.addEventListener(\"mouseenter\", () => {\n anim_b.play();\n anim_b.loop = true;\n logoWrap_b.querySelector(\"svg\").style.opacity = \"1\";\n logoWrap_b.querySelector(\"img\").style.opacity = \"0\";\n });\n\n logoWrap_b.addEventListener(\"mouseleave\", () => {\n anim_b.loop = false;\n anim_b.addEventListener(\n \"complete\",\n () => {\n logoWrap_b.querySelector(\"svg\").style.opacity = \"0\";\n logoWrap_b.querySelector(\"img\").style.opacity = \"1\";\n },\n { once: true }\n );\n });\n}\n\nfunction stopLogoLoading() {\n anim.loop = false;\n anim.addEventListener(\n \"complete\",\n () => {\n logoWrap.querySelector(\"svg\").style.opacity = \"0\";\n logoWrap.querySelector(\"img\").style.opacity = \"1\";\n },\n { once: true }\n );\n}\n\nexport { loopLogoLoading, readyPreloader };\n","// query breakpoint and load suitable lottie into player\nexport default function initProjectLotties() {\n // check if lottie players exist \n if (document.querySelectorAll('lottie-player').length > 0) {\n // create array with all lotie players\n // var allLotties = [...document.querySelectorAll('lottie-player')]\n // //var allLottiesHover = document.querySelectorAll('.hover-lottie-wrapper')\n\n // let isMobile = window.innerWidth < 428\n \n // // create new array from lotties if it doesn't have a source attribute\n // allLotties = allLotties.filter( l => !l.hasAttribute('src'))\n\n // allLotties.forEach( e => {\n // // get source based to mobile or desktop based on mobile / screen width\n // let source = isMobile ? e.getAttribute('mobile-source') : e.getAttribute('desktop-source')\n // // if source is not empty, load the source into each lottie player\n // if(source != ''){\n // e.load(source)\n // }\n // })\n \n // remove safari placeholder \n document.querySelectorAll('.safari-image').forEach(e => {\n e.remove()\n })\n }\n}\n\n// // Play lotties one randomly and one at a time for performance\n// function isInViewport(el) {\n// var rect = el.getBoundingClientRect()\n// return (\n// rect.top >= 0 &&\n// rect.left >= 0 &&\n// rect.bottom <=\n// (window.innerHeight || document.documentElement.clientHeight) &&\n// rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n// )\n// }\n\n// // lotties only play when in viewport\n// var lottiesRemoved = false\n\n// var x = 0\n\n// // method 1, timeout\n// var deleteLottiesFunction = setInterval(function () {\n// deleteLotties()\n// if (++x === 50) {\n// clearInterval(deleteLottiesFunction)\n// }\n// }, 100)\n// //\n// //deleteLotties()\n\n// function deleteLotties() {\n// // Function runs every 4 seconds (the duration of the lottie animations)\n// if (pageLoaded) {\n// //availableLotties = []\n\n// //var lotties = document.getElementsByTagName(\"lottie-player\");\n// var lottieBoxes = document.getElementsByClassName('lottie-box')\n\n// var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent)\n// var isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0\n\n// //console.log()\n// if (isSafari && isMac && !lottiesRemoved) {\n// lottieBoxes = document.getElementsByClassName('lottie-box')\n// if (lottieBoxes.length == 0) {\n// //clearInterval(deleteLottiesFunction);\n// }\n\n// for (var i = 0; i < lottieBoxes.length; i++) {\n// //lottieBoxes[i].remove()\n// //lottiesRemoved = true\n// }\n// } else {\n// safariImages = document.getElementsByClassName('safari-image')\n\n// for (var i = 0; i < safariImages.length; i++) {\n// safariImages[i].remove()\n// //lottiesRemoved = true\n// }\n// }\n// }\n// }\n// }\n","import anime from \"animejs\";\n\nexport default loadAnim = () => {\n var topMargin;\n\n if ($(window).width() <= 1024) {\n topMargin = \"15vh\";\n } else {\n topMargin = \"6vw\";\n }\n\n // let targetQuery = \".landing-text-box\";\n // original\n // let targetQuery = \".landing-text-box, .project-card-parent\";\n\n //get cookies\n var hasVisited = sessionStorage.getItem(\"washere\");\n\n // anime.set(targetQuery, {\n // opacity: 0,\n // translateY: \"4vh\",\n // });\n\n anime.set(\"#hamburger, .logos-box, #mute-btn-container\", {\n opacity: 0,\n translateY: \"-4vh\",\n });\n\n anime.set(\".landing-video-container\", {\n opacity: 0,\n });\n\n const onOpen = (delay) => {\n $(\".body-dark\").css({ overflow: \"visible\" });\n $(\".preloader-background\").animate({ opacity: 0 }, 1000);\n $(\"#preloader\").css({ display: \"none\" });\n $(\"#mute-btn-container\").css({ display: \"none\" });\n\n anime({\n targets: \".landing-video-container\",\n opacity: { value: 1, duration: 800, easing: \"easeOutSine\" },\n delay: delay,\n });\n\n $(\"#mute-btn-container\").css({ display: \"block\" });\n $(\".navigation-bar\").css({ display: \"block\" });\n\n anime({\n targets: \"#hamburger, .logos-box, #mute-btn-container\",\n opacity: { value: 1, duration: 800, easing: \"easeOutSine\" },\n translateY: {\n value: [\"-4vh\", \"0vh\"],\n duration: 1000,\n easing: \"easeOutQuad\",\n },\n delay: anime.stagger(500, { start: delay }),\n });\n\n // anime({\n // targets: targetQuery,\n // opacity: { value: 1, duration: 800, easing: \"easeOutSine\" },\n // translateY: { value: 0, duration: 1000, easing: \"easeOutQuad\" },\n // delay: anime.stagger(500, { start: delay + 1000 }),\n // });\n };\n const visited = (delay) => {\n $(\".body-dark\").css({ overflow: \"visible\" });\n $(\".preloader-background\").css({ display: \"none\" });\n $(\"#preloader\").css({ display: \"none\" });\n $(\".navigation-bar\").css({ display: \"block;\" });\n $(\"#mute-btn-container\").css({ display: \"block;\" });\n\n anime({\n targets: \".landing-video-container\",\n opacity: { value: 1, duration: 800, easing: \"easeOutSine\" },\n delay: delay,\n });\n\n anime({\n targets: \"#hamburger, .logos-box, #mute-btn-container\",\n opacity: { value: 1, duration: 0, easing: \"easeOutSine\" },\n translateY: { value: [\"0\", \"0vh\"], duration: 0, easing: \"easeOutQuad\" },\n delay: anime.stagger(500, { start: delay }),\n });\n\n // anime({\n // targets: targetQuery,\n // opacity: { value: 1, duration: 0, easing: \"easeOutSine\" },\n // translateY: {\n // value: [\"0vh\", \"0vh\"],\n // duration: 1000,\n // easing: \"easeOutQuad\",\n // },\n // delay: anime.stagger(500, { start: delay + 1000 }),\n // });\n };\n\n //if page has been visited - don't animate\n if (hasVisited || $(window).width() <= 1024) {\n // remove black cover from DOM if user has visited site\n $(\"#black-cover\").remove();\n\n $(\".landing-video-container\").css({\n width: \"80vw\",\n height: \"40vh\",\n position: \"relative\",\n opacity: 0,\n });\n\n visited(0);\n }\n // if page not visited - animate\n else {\n $(\"#preloader\").css({ display: \"block\" });\n\n $(\"#trigger,#enter-btn\").on(\"click\", function () {\n // remove black cover from DOM if user has visited site\n $(\"#black-cover\").remove();\n\n $(\".landing-video-container\")\n .animate(\n {\n width: \"100vw\",\n height: \"100vh\",\n opacity: 1,\n },\n 1000\n )\n .delay(2000)\n .animate(\n {\n top: topMargin,\n width: \"80vw\",\n height: \"40vh\",\n position: \"relative\",\n },\n 1000,\n function () {\n onOpen(0);\n }\n );\n\n // do stuff\n console.log(\"Welcome, stranger !\");\n sessionStorage.setItem(\"washere\", true);\n });\n }\n};\n","/*\n * anime.js v3.2.1\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n nil: function (a) { return is.und(a) || a === null; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; },\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n eases['easeOutIn' + name] = function (a, b) { return function (t) { return t < 0.5 ? (1 - easeIn(a, b)(1 - t * 2)) / 2 : \n (easeIn(a, b)(t * 2 - 1) + 1) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (!is.nil(getAttribute(el, prop)) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width,\n h: height,\n vW: viewBox[2],\n vH: viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress, isPathTargetInsideSVG) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n var scaleX = isPathTargetInsideSVG ? 1 : svg.w / svg.vW;\n var scaleY = isPathTargetInsideSVG ? 1 : svg.h / svg.vH;\n switch (path.property) {\n case 'x': return (p.x - svg.x) * scaleX;\n case 'y': return (p.y - svg.y) * scaleY;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isPathTargetInsideSVG = tween.isPath && is.svg(animatable.target);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\n\nvar engine = (function () {\n var raf;\n\n function play() {\n if (!raf && (!isDocumentHidden() || !anime.suspendWhenDocumentHidden) && activeInstances.length > 0) {\n raf = requestAnimationFrame(step);\n }\n }\n function step(t) {\n // memo on algorithm issue:\n // dangerous iteration over mutable `activeInstances`\n // (that collection may be updated from within callbacks of `tick`-ed animation instances)\n var activeInstancesLength = activeInstances.length;\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n i++;\n } else {\n activeInstances.splice(i, 1);\n activeInstancesLength--;\n }\n }\n raf = i > 0 ? requestAnimationFrame(step) : undefined;\n }\n\n function handleVisibilityChange() {\n if (!anime.suspendWhenDocumentHidden) { return; }\n\n if (isDocumentHidden()) {\n // suspend ticks\n raf = cancelAnimationFrame(raf);\n } else { // is back to active tab\n // first adjust animations to consider the time that ticks were suspended\n activeInstances.forEach(\n function (instance) { return instance ._onDocumentVisibility(); }\n );\n engine();\n }\n }\n if (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n }\n\n return play;\n})();\n\nfunction isDocumentHidden() {\n return !!document && document.hidden;\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber, tween.isPathTargetInsideSVG);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // internal method (for engine) to adjust animation timings before restoring engine ticks (rAF)\n instance._onDocumentVisibility = resetTime;\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n engine();\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.remove = function(targets) {\n var targetsArray = parseTargets(targets);\n removeTargetsFromInstance(targetsArray, instance);\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargetsFromInstance(targetsArray, instance) {\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n}\n\nfunction removeTargetsFromActiveInstances(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n removeTargetsFromInstance(targetsArray, instance);\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.1';\nanime.speed = 1;\n// TODO:#review: naming, documentation\nanime.suspendWhenDocumentHidden = true;\nanime.running = activeInstances;\nanime.remove = removeTargetsFromActiveInstances;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nexport default anime;\n","export default function audioImplementation(homePage) {\n const showreelHome = document.querySelector(\"#showreel_video\");\n const showreelNav = document.querySelector(\"#showreelNavXL_video\");\n\n // MOBILE CHECK\n window.mobileCheck = function () {\n let check = false;\n (function (a) {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n a\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n a.substr(0, 4)\n )\n )\n check = true;\n })(navigator.userAgent || navigator.vendor || window.opera);\n return check;\n };\n\n const isMobile = mobileCheck();\n\n // Exit early if on mobile to prevent loading or playing UI sounds\n if (isMobile) {\n return;\n }\n\n // MUTE STATE\n let isMuted = false;\n let linkClicked = false;\n\n let muteState = sessionStorage.getItem(\"muteState\");\n let musicState = sessionStorage.getItem(\"musicTime\");\n\n if (muteState) {\n muteState = muteState == \"true\" ? (muteState = true) : (muteState = false);\n isMuted = muteState;\n }\n\n // LOAD BG MUSIC\n music = new Audio();\n const music_volume = 0.3;\n music.volume = music_volume;\n music.loop = true;\n music.src =\n \"https://psychoactive-website-media.sfo3.digitaloceanspaces.com/Audio/Music/ps-website-music-v2.mp3\";\n\n // IF MUSIC STATE IS PRESENT, FADE IN (IF IT'S NOT MOBILE)\n if (document.readyState !== \"loading\") {\n if (musicState) {\n music.currentTime = musicState + 10;\n }\n if (mobileCheck() == false && muteState == false) {\n fadeInMusic();\n }\n }\n\n // FADE MUSIC OUT & STORE IN SESSION STATE BEFORE UNLOAD\n window.onbeforeunload = function () {\n sessionStorage.setItem(\"musicTime\", music.currentTime);\n sessionStorage.setItem(\"muteState\", isMuted);\n if (mobileCheck() == false) {\n if (!isMuted && !linkClicked) fadeToggle(music, music_volume, false);\n }\n };\n\n // MUTE AUDIO IF USER NAVIGATES AWAY FROM BROWSER-TAB\n document.addEventListener(\"visibilitychange\", function () {\n if (mute_lottie.loop) {\n if (document.hidden) {\n music.muted = true;\n } else {\n music.muted = false;\n }\n }\n });\n\n // ************ UI AUDIO ************\n\n // preloader sound <-- currently using html audio from webflow instead\n // preloader_sound = new Audio();\n // addSrc(preloader_sound, 'preloader_sound');\n\n // open hamburger-menu sound\n frog_ui_open_menu = new Audio();\n addSrc(frog_ui_open_menu, \"frog_ui_open_WET\");\n\n // close hamburger-menu sound\n frog_ui_close_menu = new Audio();\n addSrc(frog_ui_close_menu, \"frog_ui_close_WET\");\n\n // menu click sounds\n frog_ui_single_click_1 = new Audio();\n addSrc(frog_ui_single_click_1, \"frog_ui_single_1_WET\");\n\n frog_ui_single_click_2 = new Audio();\n addSrc(frog_ui_single_click_2, \"frog_ui_single_2_WET\");\n\n // menu hover clack sound\n wood_clack_hover_menu = new Audio();\n wood_clack_hover_menu.volume = 0.9;\n addSrc(wood_clack_hover_menu, \"wood_clack\");\n\n // project hover & click sounds\n project_hover = new Audio();\n project_hover.volume = 0.4;\n addSrc(project_hover, \"ui_hover_WET\");\n\n project_click = new Audio();\n project_click.volume = 0.8;\n addSrc(project_click, \"ui_click_WET\");\n\n // text hover sound\n text_hover = new Audio();\n text_hover.volume = 0.1;\n addSrc(text_hover, \"text_hover\");\n\n // logo click sound\n home_ui = new Audio();\n addSrc(home_ui, \"home_ui\");\n\n // define metamorphosis sound\n metamorphosis_ui = new Audio();\n addSrc(metamorphosis_ui, \"frog_sfx\");\n\n // logo hover sound\n ps_logo_hover = new Audio();\n ps_logo_hover.loop = true;\n\n const logo_hover_volume = 0.2;\n ps_logo_hover.volume = logo_hover_volume;\n\n addSrc(ps_logo_hover, \"hover_sound_short\");\n\n // UI SOUNDS ARRAY\n const uiSounds = [\n frog_ui_open_menu,\n frog_ui_close_menu,\n frog_ui_single_click_1,\n frog_ui_single_click_2,\n wood_clack_hover_menu,\n project_hover,\n project_click,\n text_hover,\n ps_logo_hover,\n home_ui,\n // preloader_sound\n ];\n // ^ADD AUDIO VARIABLES HERE IF YOU WANT THEM TO BE INCLUDED IN MUTE FUNCTIONALITY\n\n // MUTE FUNCTIONALITY\n const mute_btn = document.querySelector(\"#mute-btn-container\");\n\n const soundwave = document.querySelector(\".soundwave-svg\");\n const wave = document.querySelectorAll(\".wave\");\n\n // toggle css animation on click\n soundwave.addEventListener(\"click\", function () {\n toggleCssAnim();\n });\n\n // MUTE LOTTIE\n // need bodymovin cdn in header for this to work\n const mute_lottie = bodymovin.loadAnimation({\n container: mute_btn,\n path: \"https://uploads-ssl.webflow.com/5f287eb0037f68c8a08d3520/639bd27ee53aaa1429f32a14_audio_wave_shorter.json\",\n renderer: \"svg\",\n loop: true,\n autoplay: true,\n });\n\n let showreelMuteState = false;\n\n // MUTE BUTTON TOGGLE ON CLICK\n mute_btn.addEventListener(\"click\", function () {\n muteToggle();\n const isMobile = mobileCheck() == false;\n if (showreelHome) {\n if (!isMuted) {\n if (isMobile) {\n if (!showreelHome.muted || !showreelNav.muted) {\n // console.log(\"user unmuted during video playback\");\n showreelMuteState = false;\n } else {\n // console.log(\"custom mute func ran\");\n music.volume = music_volume;\n music.muted = false;\n }\n }\n playLottie();\n } else {\n if (!showreelHome.muted || !showreelNav.muted) {\n // console.log(\"user muted during video playback\");\n showreelMuteState = true;\n }\n stopLottie();\n }\n } else {\n if (!isMuted) {\n if (isMobile) {\n if (!showreelNav.muted) {\n // console.log(\"user unmuted during video playback\");\n showreelMuteState = false;\n } else {\n // console.log(\"custom mute func ran\");\n music.volume = music_volume;\n music.muted = false;\n }\n }\n playLottie();\n } else {\n if (!showreelNav.muted) {\n // console.log(\"user muted during video playback\");\n showreelMuteState = true;\n }\n stopLottie();\n }\n }\n\n if (muteState) {\n music.play();\n }\n });\n\n function playLottie() {\n mute_lottie.setSpeed(1);\n mute_lottie.loop = true;\n mute_lottie.play();\n }\n\n function stopLottie() {\n music.volume = 0;\n mute_lottie.setSpeed(1.5);\n mute_lottie.loop = false;\n }\n\n // catch to make sure music & mute-lottie is never out of sync\n mute_btn.addEventListener(\"click\", function () {\n if (mobileCheck() == false) {\n if (!mute_lottie.loop) {\n fadeOutMusic();\n } else {\n fadeInMusic();\n }\n }\n });\n\n // MUTE ALL if user is muted\n if (muteState !== null && isMuted) {\n muteAll(uiSounds);\n if (mobileCheck() == false) {\n fadeToggle(music, music_volume, false);\n }\n // stop mute-btn lottie from playing - OLD\n mute_lottie.autoplay = false;\n\n // stop mute-btn lottie from playing - NEW\n wave.forEach((e) => {\n e.setAttribute(\"style\", \"animation-iteration-count: 0!important;\");\n });\n }\n\n // PLAY MUSIC WHEN CLICKED ANYWHERE (IF NO PRELOADER)\n if (muteState == false) {\n document.body.addEventListener(\"click\", function () {\n if (!isMuted && music.paused && mobileCheck() == false) {\n music.play();\n }\n });\n }\n\n // ************ AUDIO TRIGGERS ************\n\n // PRELOADER TRIGGER\n const preloader_trigger = document.querySelectorAll(\"#trigger\");\n const preloader_sound = document.querySelector(\"#preloader_sound\");\n\n playSound(preloader_trigger, preloader_sound);\n playSound(preloader_trigger, music);\n\n // MENU NAV-LINKS\n const menu_links = document.querySelectorAll(\".menu-link-box\");\n playSound(menu_links, frog_ui_single_click_1, wood_clack_hover_menu);\n\n menu_links.forEach((link) => {\n link.addEventListener(\"click\", function () {\n wood_clack_hover_menu.muted = true;\n fadeOutMusic();\n });\n });\n\n // ABOUT DEFINITION CARD - AMPHIBIOUS LANGUAGE\n const amphibious_lang = document.querySelectorAll(\".logo-sound\");\n playSound(amphibious_lang, project_click, project_hover);\n\n // TEAM CARDS\n const team_links = document.querySelectorAll(\".team-link-box\");\n playSound(team_links, project_click, project_hover);\n\n // NEW HOME HOVER LINKS\n const home_links = document.querySelectorAll(\".home-hover-outer\");\n playSound(home_links, project_click, project_hover);\n\n // PROJECT LINKS & ALL ELEMENTS WITH CLASS NAME CARD SOUND\n const project_links = document.querySelectorAll(\n \".project-link-wrapper, .project-link, .card-sound\"\n );\n playSound(project_links, project_click, project_hover);\n\n // UNDERLINED TEXT SOUND\n const underline_links = document.querySelectorAll(\n \".gets-underlined, .underlined, .underline-sound\"\n );\n\n // FILTER OUT HOVER SOUND FOR 'OPEN POSITIONS' CAREERS CARDS and CONTENT HUB cards\n const filter_Out = [\"sml\", \"content-hub-heading\"];\n playSound(underline_links, project_click, project_hover, filter_Out);\n\n // ARTICLE LINKS\n const article_links = document.querySelectorAll(\".article-rich-text a\");\n playSound(article_links, project_click, project_hover);\n\n // TAG-TEXT & ALL ELEMENTS WITH CLASS NAME TAG SOUND\n const tag_text = document.querySelectorAll(\n \".tag-text, .button-text, .tag-sound\"\n );\n playSound(tag_text, frog_ui_single_click_2, text_hover);\n\n // FOOTER\n const footer_sound = document.querySelectorAll(\".footer-sound\");\n playSound(footer_sound, frog_ui_single_click_2, text_hover);\n\n // MUTE BTN\n const mute_btn_container = document.querySelectorAll(\"#mute-btn-container\");\n playSound(mute_btn_container, frog_ui_single_click_2, text_hover);\n\n // CAREERS ACCORDION\n const careers_accordion = document.querySelectorAll(\".career-subtitle-box\");\n playSound(careers_accordion, frog_ui_single_click_1, text_hover);\n\n // CAREERS ARROW-BTNS\n const arrow_btns = document.querySelectorAll(\".arrow\");\n playSound(arrow_btns, frog_ui_single_click_2, text_hover);\n\n // HAMBURGER-MENU OPEN & CLOSE\n const hamburger_open = document.querySelector(\".hamburger-box\");\n const hamburger_close = document.querySelector(\".burger-close-icon\");\n\n // ABOUT DEFINITION CARD\n const about_definition = document.querySelectorAll(\".see-more-button\");\n playSound(about_definition, project_click, project_hover);\n\n // DEFINE METAMORPHOSIS BUTTON\n const metamorphosis_btn = document.querySelectorAll(\"#metamorphosis-btn\");\n playSound(metamorphosis_btn, metamorphosis_ui);\n\n const navPlayReel = document.querySelector(\".navbar_playreel-wrapper\");\n let humburgerState = \"closed\";\n\n navPlayReel.addEventListener(\"click\", () => {\n humburgerState = \"closed\";\n });\n\n // HAMBURGER MENU SOUNDS\n hamburger_open.addEventListener(\"click\", function () {\n frog_ui_open_menu.currentTime = 0;\n frog_ui_open_menu.play();\n humburgerState = \"open\";\n setTimeout(() => {\n wave.forEach((stroke) => {\n stroke.style.fill = \"#101012\"; // change mute btn lottie to black\n });\n }, 500);\n });\n\n hamburger_open.addEventListener(\"mouseenter\", function () {\n wood_clack_hover_menu.currentTime = 0;\n const closeAudio = wood_clack_hover_menu;\n closeAudio.volume = 0.9;\n closeAudio.play();\n });\n\n hamburger_close.addEventListener(\"click\", function () {\n frog_ui_close_menu.currentTime = 0;\n frog_ui_close_menu.play();\n humburgerState = \"closed\";\n wave.forEach((stroke) => {\n stroke.style.fill = \"#F5F4F2\"; // change mute btn lottie back to white\n });\n });\n\n hamburger_close.addEventListener(\"mouseenter\", function () {\n wood_clack_hover_menu.currentTime = 0;\n const closeAudio = wood_clack_hover_menu;\n closeAudio.volume = 0.9;\n closeAudio.play();\n });\n\n // LOGO HOME CLICK & HOVER\n const home_link = document.querySelectorAll(\n \"#ps-logo-wrap, #ps-logo-wrap-black\"\n );\n\n home_link.forEach((link) => {\n link.addEventListener(\"click\", function () {\n project_hover.pause();\n home_ui.play();\n fadeOutMusic();\n ps_logo_hover.volume = 0;\n });\n\n // PS-LOGO HOVER SOUNDS\n link.addEventListener(\"mouseenter\", function () {\n ps_logo_hover.currentTime = 0.1;\n ps_logo_hover.loop = true;\n ps_logo_hover.volume = logo_hover_volume;\n if (isMuted == false) ps_logo_hover.muted = false;\n ps_logo_hover.play();\n });\n\n link.addEventListener(\"mouseleave\", function () {\n ps_logo_hover.loop = false;\n });\n });\n\n // ************ CUSTOM FUNCTIONS ************\n\n // func to add src url to audio variable\n function addSrc(audio, file) {\n audio.src = `https://psychoactive-website-media.sfo3.digitaloceanspaces.com/Audio/UI/${file}.mp3`;\n }\n\n // func to play a specified sound either click or hover, with the option to filter out a class\n function playSound(triggerLink, clickSound, hoverSound, filteredClass) {\n triggerLink.forEach((trigger) => {\n trigger.addEventListener(\"click\", function () {\n if (trigger.nodeName == \"A\") {\n fadeOutMusic();\n }\n clickSound.currentTime = 0;\n clickSound.play();\n });\n\n if (hoverSound) {\n trigger.addEventListener(\"mouseenter\", function () {\n // check if a filtered class exists\n if (filteredClass == undefined) {\n hoverSound.currentTime = 0;\n hoverSound.play();\n } else {\n // if it exists, exit, if it doesn't play sound\n if (filterOut(trigger, filteredClass)) {\n return;\n } else {\n hoverSound.currentTime = 0;\n hoverSound.play();\n }\n }\n });\n }\n });\n }\n\n // func to filer out a class from nodelist\n const filterOut = (trigger, filteredClass) => {\n let isFiltered = false;\n filteredClass.forEach((className) => {\n if (trigger.classList.contains(className)) {\n isFiltered = true;\n }\n });\n return isFiltered;\n };\n\n // func to fade out music smoothly\n function fadeOutMusic() {\n if (!isMuted && mobileCheck() == false) {\n fadeToggle(music, music_volume, false);\n }\n linkClicked = true;\n }\n\n //func to fade in music smoothly\n function fadeInMusic() {\n music.play();\n\n const condition1 =\n showreelHome && (showreelHome.muted || showreelNav.muted);\n const condition2 = !showreelHome && showreelNav.muted;\n const overallCondition = (condition1 || condition2) && !isMuted;\n\n if (overallCondition) {\n music.volume = 0;\n $(music).animate({ volume: music_volume }, 1500, \"linear\");\n }\n }\n\n // func to toggle volume\n function fadeToggle(\n audio = music,\n maxVolume = music_volume,\n isFromShowreel = true\n ) {\n const condition1 = homePage && (showreelHome.muted || showreelNav.muted);\n const condition2 = !homePage && showreelNav.muted;\n const overallCondition = (condition1 || condition2) && isFromShowreel;\n\n if (overallCondition) {\n let muted = audio.muted;\n if (muted && !isFromShowreel) audio.muted = false;\n let newVolume = muted ? maxVolume : 0;\n if (!isFromShowreel) newVolume = maxVolume;\n $(audio).animate({ volume: muted ? maxVolume : 0 }, 1000, function () {\n audio.muted = !muted;\n });\n }\n }\n\n // func to toggle mute state\n function muteToggle() {\n if (isMuted) {\n unmuteAll(uiSounds);\n isMuted = false;\n showreelMuteState = false;\n } else {\n muteAll(uiSounds);\n isMuted = true;\n showreelMuteState = true;\n }\n }\n\n // func to mute all sounds\n function muteAll(audioArr = uiSounds) {\n audioArr.forEach((audio) => {\n audio.muted = true;\n });\n }\n\n // func to unmute all sounds\n function unmuteAll(audioArr = uiSounds) {\n audioArr.forEach((audio) => {\n audio.muted = false;\n });\n }\n\n // func to return mute state\n function mutedState() {\n return isMuted;\n }\n\n function getShowreelMuteState() {\n return showreelMuteState;\n }\n\n // forcefully set mute state\n function setMuteState(state) {\n isMuted = state;\n }\n\n // func to toggle the css animation of the soundwave (mute-btn)\n function toggleCssAnim() {\n wave.forEach((e) => {\n const style = getComputedStyle(e);\n if (style[\"animation-iteration-count\"] == \"infinite\") {\n e.setAttribute(\"style\", \"animation-iteration-count: 1!important;\");\n } else {\n e.setAttribute(\n \"style\",\n \"animation-iteration-count: infinite!important;\"\n );\n }\n // catch to ensure mute btn stays black when toggled whilst hamburger menu is open\n if (humburgerState == \"open\") {\n e.style.fill = \"#101012\"; //set mute svg fill back to white\n }\n });\n }\n\n return {\n isMuted,\n muteState,\n muteToggle,\n addSrc,\n playSound,\n filterOut,\n fadeOutMusic,\n fadeInMusic,\n fadeToggle,\n muteAll,\n unmuteAll,\n mutedState,\n toggleCssAnim,\n setMuteState,\n getShowreelMuteState,\n };\n}\n","export function showreelHome(audio) {\n const fadeMusicToggle = audio?.fadeToggle;\n const showreelMuteState = audio?.getShowreelMuteState;\n\n const homeBlock = document.querySelector(\"#showreel_block_home\");\n const showreelVideo = document.querySelector(\"#showreel_video\");\n const clickToUnmuteUI = document.querySelector(\".showreel-ui-wrapper\");\n const clickToMuteUI = document.querySelector(\".showreel-ui-wrapper-2\");\n const soundBtns = Array.from(\n document.querySelectorAll(\".showreel-sound-button\")\n );\n\n showreelVideo.volume = 0.7;\n\n let clickLogic = \"none\";\n let outOfView = false;\n\n // homepage showreel click logic\n homeBlock.addEventListener(\"click\", () => {\n switch (clickLogic) {\n case \"none\":\n firstClickLogic();\n break;\n case \"once\":\n secondClickLogic();\n break;\n case \"twice\":\n thirdClickLogic();\n break;\n default:\n firstClickLogic();\n }\n });\n\n // FIRST CLICK LOGIC\n function firstClickLogic() {\n showreelVideo.muted = false; //unmute video\n showreelVideo.currentTime = 0; //restart video\n clickToUnmuteUI.style.display = \"none\"; //hide unmute ui\n clickToMuteUI.style.opacity = 0; // set mute opacity to 0\n if (fadeMusicToggle && showreelMuteState && !showreelMuteState()) {\n fadeMusicToggle(); //if unmuted, toggle music fade\n }\n clickLogic = \"once\"; //update click logic\n outOfView = false; //ensure out of view logic is false\n }\n\n // SECOND CLICK LOGIC\n function secondClickLogic() {\n showreelVideo.muted = true; //mute video again\n if (fadeMusicToggle && showreelMuteState && !showreelMuteState()) {\n fadeMusicToggle(); //if unmuted, toggle music fade\n }\n clickToUnmuteUI.style.opacity = \"100\"; // set unmute opacity to 100\n clickToUnmuteUI.style.display = \"flex\"; // display unmute ui\n clickToMuteUI.style.display = \"none\"; // hide mute ui\n clickLogic = \"twice\"; //update click logic\n }\n\n // THIRD CLICK LOGIC\n function thirdClickLogic() {\n showreelVideo.muted = false; //unmute video\n if (fadeMusicToggle && showreelMuteState && !showreelMuteState()) {\n fadeMusicToggle(); //if unmuted, toggle music fade\n }\n clickToUnmuteUI.style.display = \"none\"; //hide unmute ui\n clickLogic = \"once\"; //update click logic\n outOfView = false; //ensure out of view logic is false\n }\n\n // catch for if user scrolls video out of view or clicks on nav\n showreelVideo.addEventListener(\n \"pause\",\n function () {\n outOfView = true;\n if (\n showreelVideo.muted == false && // check if video is unmuted\n document.visibilityState == \"visible\" // check if user is not in another tab\n ) {\n secondClickLogic();\n clickLogic = \"none\"; //reset click logic\n }\n },\n false\n );\n\n // catch to ensure mute ui is never visible when unmute ui is\n homeBlock.addEventListener(\"mouseenter\", () => {\n if (clickToUnmuteUI.style.display == \"flex\") {\n clickToMuteUI.style.display = \"none\";\n }\n });\n\n // initial show / hide on hover\n homeBlock.addEventListener(\"mouseenter\", () => {\n const unMuteStyle = window.getComputedStyle(clickToUnmuteUI);\n if (unMuteStyle.display == \"none\" && showreelVideo.muted) {\n clickToUnmuteUI.style.display = \"flex\";\n }\n });\n\n // hover out interaction with checks to ensure its not hovering out into the sound btns itself\n clickToUnmuteUI.addEventListener(\"mouseout\", (event) => {\n const unMuteStyle = window.getComputedStyle(clickToUnmuteUI);\n\n // Check if the mouse is still over clickToUnmuteUI or any soundBtns\n const isHoveringSoundBtns = soundBtns.some((btn) =>\n btn.contains(event.relatedTarget)\n );\n const isHoveringClickToUnmute = clickToUnmuteUI.contains(\n event.relatedTarget\n );\n\n if (\n !isHoveringSoundBtns &&\n !isHoveringClickToUnmute &&\n unMuteStyle.display === \"flex\" &&\n showreelVideo.muted\n ) {\n clickToUnmuteUI.style.display = \"none\";\n }\n });\n\n // catch if user hovers off showreel, after clicking once\n showreelVideo.addEventListener(\"mouseout\", function () {\n const clickedOnce = clickLogic == \"once\";\n if (clickedOnce && !outOfView) {\n setTimeout(() => {\n clickToMuteUI.style.display = \"flex\";\n }, 500);\n }\n });\n}\n\n// NAV SHOWREEL\nexport function showreelNav(audio) {\n const fadeMusicToggle = audio?.fadeToggle;\n const showreelMuteState = audio?.getShowreelMuteState;\n\n const navPlayReel = document.querySelector(\".navbar_playreel-wrapper\");\n const wave = document.querySelectorAll(\".wave\");\n const showreelVideo = document.querySelector(\"#showreelNavXL_video\");\n\n showreelVideo.volume = 0.7;\n\n // on showreel-nav click\n navPlayReel.addEventListener(\"click\", () => {\n showreelVideo.muted = false; //unmute video\n showreelVideo.currentTime = 0; //restart video\n if (fadeMusicToggle && showreelMuteState && !showreelMuteState()) {\n fadeMusicToggle(); //if unmuted, toggle music fade\n }\n wave.forEach((stroke) => {\n stroke.style.fill = \"#F5F4F2\"; //set mute svg fill back to white\n });\n });\n\n // when user navigates away from showreel\n showreelVideo.addEventListener(\n \"pause\",\n function () {\n if (\n showreelVideo.muted == false &&\n document.visibilityState == \"visible\"\n ) {\n if (fadeMusicToggle && showreelMuteState && !showreelMuteState()) {\n fadeMusicToggle(); //if unmuted, toggle music fade\n }\n }\n },\n false\n );\n}\n","function stopCmdClick() {\n document.addEventListener(\"click\", function (e) {\n if (e.ctrlKey || e.metaKey) {\n document.querySelectorAll(\".menu-transition-cover\").forEach((element) => {\n element.setAttribute(\"style\", \"visibility:hidden !important\");\n });\n } \n });\n}\nexport { stopCmdClick };","// dynamically set video sources based on screen size\nfunction setVideoSource(video) {\n const videoElem = document.getElementById(`${video}_video`);\n let videoSrc = \"\";\n\n if (window.innerWidth <= 560) {\n videoSrc = getURL(video, \"mobile\");\n } else if (window.innerWidth <= 1680) {\n videoSrc = getURL(video, \"laptop\");\n } else {\n videoSrc = getURL(video, \"desktop\");\n }\n\n // Check if the current source is already set\n if (videoElem.getAttribute(\"src\") !== videoSrc) {\n videoElem.src = videoSrc;\n // if (video == \"metamorphoses\") videoElem.play(); // catch to always play tesselation\n }\n\n // Preload only if the video is already in the viewport\n const isInViewport = (elem) => {\n const rect = elem.getBoundingClientRect();\n return (\n rect.top <\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.bottom > 0 &&\n rect.left < (window.innerWidth || document.documentElement.clientWidth) &&\n rect.right > 0\n );\n };\n\n if (isInViewport(videoElem) && videoElem.paused) {\n videoElem.play().catch((error) => {\n console.warn(`Failed to autoplay video: ${video}`, error);\n });\n }\n}\n\n// call to set all nav showreel video sources\nexport function responsiveNavShowreel() {\n function satNavSources() {\n setVideoSource(\"showreelNav\");\n setVideoSource(\"showreelNavXL\");\n }\n satNavSources();\n debounceWindowResizedListener(satNavSources);\n}\n\n// call to set all homepage video sources\nexport function setAllHomepageVideoSources() {\n function setAllVideoSources() {\n setVideoSource(\"oasis\");\n setVideoSource(\"showreel\");\n setVideoSource(\"sgf\");\n setVideoSource(\"metamorphoses\");\n }\n setAllVideoSources();\n debounceWindowResizedListener(setAllVideoSources);\n}\n\n// Main function to lazy load home videos\nexport function lazyLoadHomeVideos() {\n // SGF VIDEO\n setupLazyLoad(\n document.getElementById(\"sgf_video\"),\n document.getElementById(\"project-thumbnails\")\n );\n // OASIS VIDEO\n setupLazyLoad(\n document.getElementById(\"oasis_video\"),\n document.getElementById(\"project-thumbnails-2\")\n );\n // SHOWREEL VIDEO\n setupLazyLoad(\n document.getElementById(\"showreel_video\"),\n document.getElementById(\"project-thumbnails-3\")\n );\n // HERO TESSELATION VIDEO\n setupLazyLoad(\n document.getElementById(\"metamorphoses_video\"),\n document.getElementById(\"metamorphoses_video\")\n );\n}\n\n// UTILITY FUNCTIONS\n\n// set up IntersectionObserver for lazy loading videos\nfunction setupLazyLoad(videoElement, triggerElement) {\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n videoElement.setAttribute(\"preload\", \"auto\"); // Preload the video\n videoElement.play(); // Play the video\n observer.unobserve(triggerElement); // Stop observing after triggering\n }\n },\n { threshold: 0 }\n );\n observer.observe(triggerElement); // Start observing the trigger element\n}\n\n// render new video source based on window screen size change event\nfunction debounceWindowResizedListener(func) {\n let resizeTimeout;\n window.addEventListener(\"resize\", () => {\n clearTimeout(resizeTimeout);\n resizeTimeout = setTimeout(func, 500);\n });\n}\n\n// return correct digital ocean url\nfunction getURL(video, device) {\n let url;\n if (video.includes(\"Nav\")) {\n url = `https://psychoactive-website-media.sfo3.cdn.digitaloceanspaces.com/Responsive-Videos/showreel_${device}.mp4`;\n } else {\n url = `https://psychoactive-website-media.sfo3.cdn.digitaloceanspaces.com/Responsive-Videos/${video}_${device}.mp4`;\n }\n return url;\n}\n"],"names":[],"version":3,"file":"app.js.map","sourceRoot":"/__parcel_source_root/"} \ No newline at end of file diff --git a/js/global/audio.js b/js/global/audio.js index 0cee024..f88eff5 100755 --- a/js/global/audio.js +++ b/js/global/audio.js @@ -19,6 +19,13 @@ export default function audioImplementation(homePage) { return check; }; + const isMobile = mobileCheck(); + + // Exit early if on mobile to prevent loading or playing UI sounds + if (isMobile) { + return; + } + // MUTE STATE let isMuted = false; let linkClicked = false; diff --git a/js/global/showreel.js b/js/global/showreel.js index 14926f2..974911c 100644 --- a/js/global/showreel.js +++ b/js/global/showreel.js @@ -1,6 +1,6 @@ export function showreelHome(audio) { - const fadeMusicToggle = audio.fadeToggle; - const showreelMuteState = audio.getShowreelMuteState; + const fadeMusicToggle = audio?.fadeToggle; + const showreelMuteState = audio?.getShowreelMuteState; const homeBlock = document.querySelector("#showreel_block_home"); const showreelVideo = document.querySelector("#showreel_video"); @@ -38,7 +38,9 @@ export function showreelHome(audio) { showreelVideo.currentTime = 0; //restart video clickToUnmuteUI.style.display = "none"; //hide unmute ui clickToMuteUI.style.opacity = 0; // set mute opacity to 0 - if (!showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade + if (fadeMusicToggle && showreelMuteState && !showreelMuteState()) { + fadeMusicToggle(); //if unmuted, toggle music fade + } clickLogic = "once"; //update click logic outOfView = false; //ensure out of view logic is false } @@ -46,7 +48,9 @@ export function showreelHome(audio) { // SECOND CLICK LOGIC function secondClickLogic() { showreelVideo.muted = true; //mute video again - if (!showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade + if (fadeMusicToggle && showreelMuteState && !showreelMuteState()) { + fadeMusicToggle(); //if unmuted, toggle music fade + } clickToUnmuteUI.style.opacity = "100"; // set unmute opacity to 100 clickToUnmuteUI.style.display = "flex"; // display unmute ui clickToMuteUI.style.display = "none"; // hide mute ui @@ -56,7 +60,9 @@ export function showreelHome(audio) { // THIRD CLICK LOGIC function thirdClickLogic() { showreelVideo.muted = false; //unmute video - if (!showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade + if (fadeMusicToggle && showreelMuteState && !showreelMuteState()) { + fadeMusicToggle(); //if unmuted, toggle music fade + } clickToUnmuteUI.style.display = "none"; //hide unmute ui clickLogic = "once"; //update click logic outOfView = false; //ensure out of view logic is false @@ -128,8 +134,8 @@ export function showreelHome(audio) { // NAV SHOWREEL export function showreelNav(audio) { - const fadeMusicToggle = audio.fadeToggle; - const showreelMuteState = audio.getShowreelMuteState; + const fadeMusicToggle = audio?.fadeToggle; + const showreelMuteState = audio?.getShowreelMuteState; const navPlayReel = document.querySelector(".navbar_playreel-wrapper"); const wave = document.querySelectorAll(".wave"); @@ -141,7 +147,9 @@ export function showreelNav(audio) { navPlayReel.addEventListener("click", () => { showreelVideo.muted = false; //unmute video showreelVideo.currentTime = 0; //restart video - if (!showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade + if (fadeMusicToggle && showreelMuteState && !showreelMuteState()) { + fadeMusicToggle(); //if unmuted, toggle music fade + } wave.forEach((stroke) => { stroke.style.fill = "#F5F4F2"; //set mute svg fill back to white }); @@ -155,7 +163,9 @@ export function showreelNav(audio) { showreelVideo.muted == false && document.visibilityState == "visible" ) { - if (!showreelMuteState()) fadeMusicToggle(); //if unmuted, toggle music fade + if (fadeMusicToggle && showreelMuteState && !showreelMuteState()) { + fadeMusicToggle(); //if unmuted, toggle music fade + } } }, false