1class DAAnimationEmbed{constructor(o){if(o.container){var t;[...document.querySelectorAll("script")].some(t=>"https://unpkg.com/@dotlottie/[email protected]/dist/dotlottie-player.mjs"===t.src)||((t=document.createElement("script")).src="https://unpkg.com/@dotlottie/[email protected]/dist/dotlottie-player.mjs",t.type="module",document.head.appendChild(t)),this.options=Object.assign({autoplay:!1,loop:!1,speed:1,container:null,width:"50vh",height:"50vh",maxWidth:"80vw",controls:!1},o),this.options.cdnHost=window.location.host.startsWith("dev")?"https://"+window.location.host:"https://static."+window.location.host.replace(/^www\./,"");let e=this;function i(t){"string"!=typeof o.src||o.src.startsWith("http")||o.src.startsWith("data:")||o.src.startsWith("blob:")||(o.src=`${t.options.cdnHost}/cdn/games/${window.cacheVersion}/lottie/animations/`+o.src,t.options.src=o.src);var e=document.createElement("dotlottie-player");getComputedStyle(t.options.container);e.style.width=t.options.width||"50vh",e.style.height=t.options.height||"50vh",e.style.maxWidth=t.options.maxWidth||"80vw",e.setAttribute("background","transparent"),e.setAttribute("speed",t.options.speed),t.options.autoplay&&e.setAttribute("autoplay",!0),t.options.loop&&e.setAttribute("loop",!0),t.options.controls&&e.setAttribute("controls",!0),e.setAttribute("src",t.options.src),t.options.container.querySelectorAll("dotlottie-player").forEach(t=>t.remove()),t.animation=e,t.container=t.options.container,t.options.container.appendChild(e)}void 0===window.cacheVersion?fetch("/slworld/get-lottie-cache-version").then(t=>t.json()).then(t=>{if(!(t="string"==typeof t?JSON.parse(t):t)||!t.cache_version)throw new Error("Invalid cache version format received");window.cacheVersion=t.cache_version,i(e)}).catch(t=>{}):i(e)}}isLoaded(){return new Promise((e,t)=>{let o=this.animation;if(!o)return void t(new Error("DotLottie player has not been created."));let i=null,r=null,n=!1,a=()=>{i&&clearInterval(i),r&&clearTimeout(r),o.removeEventListener("ready",d),o.removeEventListener("error",p),o.removeEventListener("data_fail",p)},s=()=>
1{if(!n){if("function"!=typeof o.getLottie)return!1;var t=o.getLottie();if(!t||!Number.isFinite(t.totalFrames)||t.totalFrames<=0)return!1;n=!0,a(),$(this.container).trigger("animationLoaded"),e(t)}return!0},d=()=>{s()},p=()=>{n||(n=!0,a(),t(new Error("DotLottie animation failed to load.")))};s()||(o.addEventListener("ready",d),o.addEventListener("error",p),o.addEventListener("data_fail",p),i=setInterval(s,25),r=setTimeout(()=>{n||(n=!0,a(),t(new Error("Timed out waiting for DotLottie animation.")))},1e4))})}preload(t){let r=this;return new Promise((e,o)=>{let i=`${r.options.cdnHost}/cdn/games/${window.cacheVersion}/lottie/animations/`+t;fetch(i).then(t=>(t.ok||o(new Error(`Failed to preload: ${i}, status: `+t.status)),t.blob())).then(t=>{t=URL.createObjectURL(t);e(t)}).catch(t=>{o(new Error("Error preloading Lottie file: "+t.message))})})}play(){this.animation&&(this.animation.play(),$(this.container).trigger("animationPlayed"))}pause(){this.animation&&(this.animation.pause(),$(this.container).trigger("animationPaused"))}stop(){this.animation&&(this.animation.stop(),$(this.container).trigger("animationStopped"))}setSpeed(t){this.animation&&(this.animation.setSpeed(t),this.options.speed=t,$(this.container).trigger("animationSpeedChanged",t))}speed(){return this.animation?this.animation.speed:null}setLoop(t){this.animation&&(this.animation.loop=t,this.options.loop=t,$(this.container).trigger("animationLoopChanged",t))}changeSource(t){"string"!=typeof t||t.startsWith("http")||t.startsWith("data:")||"undefined"!=typeof options&&options.src.startsWith("blob:")||(t=`${this.options.cdnHost}/cdn/games/${window.cacheVersion}/lottie/animations/`+t),this.src!==t&&(this.src=t,this.animation.src=t,this.animation.load(t))}changeSourceBlob(t){this.src!==t&&(this.src=t,this.animation.src=t,this.animation.load(t))}}class DAAnimation{constructor(i){if(!window.DotLottie)throw new Error("DotLottie module is not loaded.");this.options=Object.assign({autoplay:!1,loop:!1,speed:1,autoResize:!0,canvas:null},i),this.options.cdnHost=window.location.host.startsWith("dev")?"https://"+window.location.host:"https://static.studyladder.com";let e=this;function o(o){try{var t,e;"DIV"===o.options.canvas.tagName&&(t=Array.from(div.attributes).reduce((t,e)=>(t.setAttribute(e.name,e.value),t),document.createElement("canvas")),e=window.getComputedStyle(div),t.width=parseInt(e.width,10)||div.offsetWidth,t.height=parseInt(e.height,10)||div.offsetHeight,o.options.canvas.replaceWith(t)),"string"!=typeof i.src||i.src.startsWith("http")||i.src.startsWith("data:")||i.src.startsWith("blob:")?o.animation=new window.DotLottie({autoplay:o.options.autoplay,loop:o.options.loop,canvas:o.options.canvas,data:i.data,speed:o.options.speed,renderConfig:{autoResize:o.options.autoResize}}):(i.src=`${o.options.cdnHost}/cdn/games/${window.cacheVersion}/lottie/animations/`+i.src,o.options.src=i.src,o.animation=new window.DotLottie({autoplay:o.options.autoplay,loop:o.options.loop,canvas:o.options.canvas,src:o.options.src,speed:o.options.speed,renderConfig:{autoResize:o.options.autoResize}}))}catch(t){}o.animation&&(o.animation._eventManager.addEventListener("loadError",t=>{o.options.canvas=(t=>{if("CANVAS"!==t.tagName)return null;let e=document.createElement("dotlottie-wc");return Array.from(t.attributes).forEach(t=>{e.setAttribute(t.name,t.value)}),t.parentNode.replaceChild(e,t),e})(o.options.canvas);var e=new Blob([o.options.data],{type:"application/octet-stream"}),e=URL.createObjectURL(e),e=(o.options.canvas.setAttribute("src",e),o.options.canvas.autoplay=!0,document.createElement("script"));e.type="module",e.src="https://unpkg.com/@lottiefiles/[email protected]/dist/dotlottie-wc.js",o.options.canvas.parentNode.appendChild(e)}),o.animation.addEventListener("load",()=>{$(o.options.canvas).trigger("animationLoaded")}),o.animation.addEventListener("error",t=>{$(o.options.canvas).trigger("animationError",t)}))}void 0===window.cacheVersion?fetch("/slworld/get-lottie-cache-version").then(t=>t.json()).then(t=>{if(!(t="string"==typeof t?JSON.parse(t):t)||!t.cache_version)throw new Error("Invalid cac
1he version format received");window.cacheVersion=t.cache_version,o(e)}).catch(t=>{}):o(e)}play(){this.animation&&(this.animation.play(),$(this.animation.canvas).trigger("animationPlayed"))}destroy(){var t,e;this.animation&&(t=this.animation.canvas,this.animation.destroy(),$(t).trigger("animationDestroyed"),e=t.getContext("2d"))&&e.clearRect(0,0,t.width,t.height)}pause(){this.animation&&(this.animation.pause(),$(this.animation.canvas).trigger("animationPaused"))}stop(){this.animation&&(this.animation.stop(),$(this.animation.canvas).trigger("animationStopped"))}setSpeed(t){this.animation&&(this.animation.setSpeed(t),this.options.speed=t,$(this.animation.canvas).trigger("animationSpeedChanged",t))}speed(){return this.animation?this.animation.speed:null}setLoop(t){this.animation&&(this.animation.loop=t,this.options.loop=t,$(this.animation.canvas).trigger("animationLoopChanged",t))}changeSource(t){this.animation&&("string"!=typeof t||t.startsWith("http")||t.startsWith("data:")||options.src.startsWith("blob:")||(t=`${this.options.cdnHost}/cdn/games/${window.cacheVersion}/lottie/animations/`+t),this.options.src=t,this.animation.load(this.options),$(this.animation.canvas).trigger("animationSourceChanged",t))}}class DriverWrapper{constructor(t={}){this.options=Object.assign({popoverClass:"slTour-theme",showProgress:!0,addSlFooter:!0},t),this.driverObj=null}async loadDriverJsAndCss(){return"undefined"!=typeof Driver?Promise.resolve():Promise.all([this.loadScript("/js/Driver/driver_1_3_1.js"),this.loadCss("/js/Driver/driver_1_3_1.css")])}loadScript(i){return new Promise((t,e)=>{var o;document.querySelector(`script[src="${i}"]`)?t():((o=document.createElement("script")).src=i,o.type="module",o.async=!0,o.onload=()=>{t()},o.onerror=()=>{e(new Error("Failed to load script: "+i))},document.head.appendChild(o))})}loadCss(i){return new Promise((t,e)=>{var o;document.querySelector(`link[href="${i}"]`)?t():((o=document.createElement("link")).href=i,o.rel="stylesheet",o.type="text/css",o.onload=()=>{t()},o.onerror=()=>{e(new Error("Failed to load CSS: "+i))},document.head.appendChild(o))})}addCustomStyles(){var t;document.querySelector("style[data-driver-custom-styles]")||((t=document.createElement("style")).setAttribute("data-driver-custom-styles","true"),t.textContent=` 2 .driver-popover.slTour-theme { 3 background-color: /*#fde047*/aliceblue; 4 color: #333; 5 } 6 7 .driver-popover.slTour-theme .driver-popover-title { 8 font-size: 20px; 9 } 10 11 .driver-popover.slTour-theme .driver-popover-title, 12 .driver-popover.slTour-theme .driver-popover-description, 13 .driver-popover.slTour-theme .driver-popover-progress-text { 14 color: #333; 15 } 16 17 .driver-popover.slTour-theme button { 18 flex: 1; 19 text-align: center; 20 background-color: #cae3ff; 21 color: #333; 22 border: 1px solid #b2d3fa; 23 text-shadow: none; 24 font-size: 14px; 25 padding: 5px 8px; 26 border-radius: 6px; 27 } 28 29 .driver-popover.slTour-theme button:hover { 30 background-color: #000; 31 color: #ffffff; 32 } 33 34 .driver-popover.slTour-theme .driver-popover-navigation-btns { 35 justify-content: space-between; 36 gap: 3px; 37 } 38 39 .driver-popover.slTour-theme .driver-popover-close-btn { 40 color: #9b9b9b; 41 background: transparent; 42 border: none; 43 max-height: 1.5rem; 44 max-width: 1.5rem; 45 font-size: 1.5rem; 46 line-height: 1.5rem; 47 } 48 49 .driver-popover.slTour-theme .driver-popover-close-btn:hover { 50 color: #000; 51 background-color: transparent; 52 } 53 54 .driver-popover.slTour-theme .driver-popover-arrow-side-left.driver-popover-arrow { 55 border-left-color: /*#fde047*/white; 56 } 57 58 .driver-popover.slTour-theme .driver-popover-arrow-side-right.driver-popover-arrow { 59 border-right-color: /*#fde047*/white; 60 } 61 62 .driver-popover.slTour-theme .driver-popover-arrow-side-top.driver-popover-arrow { 63 border-top-color: /*#fde047*/white; 64 } 65 66 .driver-popover.slTour-theme .driver-popover-arrow-side-bottom.driver-popover-arrow { 67 border-bottom-color:/*#fde047*/white; 68 } 69 70 .driver-popover.slTour-theme .driver-popover-prev-btn, .driver-popover.slTour-theme .driver-popover-next-btn{ 71 white-space: nowrap; 72 } 73 74 .driver-popover.slTour-theme .driver-popover-progress-text{ 75 white-space: nowrap; 76 padding-right: 0.5rem; 77 } 78 79 .driver-popover.slTour-theme .driver-popover-title{ 80 font-size: 1.3rem; 81 font-weight: 500; 82 line-height: 1.3rem; 83 padding-bottom: 0.75rem; 84 padding-top: 0.75rem; 85 } 86 87 `,document.head.appendChild(t))}async initDriver(){await this.loadDriverJsAndCss(),this.addCustomStyles(),this.driverObj=new driver.js.driver(this.options)}async drive(){this.driverObj||await this.initDriver(),this.driverObj.drive()}}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.