1<!DOCTYPE html> 2<html lang="en-us"> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 6 <title>Future Software Lab | AskAva</title> 7 <link rel="shortcut icon" href="TemplateData/favicon.ico"> 8 <link rel="stylesheet" href="TemplateData/style.css"> 9 <link rel="manifest" href="manifest.webmanifest"> 10
10<script src="TemplateData/ConvaiWebGLSDK.js"></script>
10 11 <!-- ERİÅİM KONTROLà BAÅLANGIà --> 12
12<script> 13 document.addEventListener("DOMContentLoaded", function() { 14 var allowedReferer = "https://askavafuturesoftwarelab.netlify.app/"; 15 var allowedSourceParam = "askavafuturesoftwarelab.netlify"; 16 var referrer = document.referrer; 17 var urlParams = new URLSearchParams(window.location.search); 18 var sourceParam = urlParams.get("source"); 19 console.log("Referer:", referrer); 20 console.log("Source Param:", sourceParam); 21 22 // Kullanıcının daha önce yetkilendirildiÄini kontrol et 23 var isAuthorized = sessionStorage.getItem("authorized"); 24 25 // EÄer daha önce yetkilendirildiyse iÅlemi bitir (sayfa yenilendiÄinde tekrar kontrol etmesin) 26 if (isAuthorized === "true") { 27 console.log("Ãnceden yetkilendirilmiÅ kullanıcı."); 28 return; 29 } 30 31 // EÄer futuresoftwarelab.com referansı varsa veya doÄru source parametresi geldiyse yetkilendir 32 if ((referrer.indexOf(allowedReferer) !== -1) || (sourceParam === allowedSourceParam)) { 33 console.log("EriÅim baÅarılı! DoÄru siteden gelindi."); 34 sessionStorage.setItem("authorized", "true"); 35 36 // URL'den ?source parametresini kaldır (yenileme olmadan) 37 window.history.replaceState({}, document.title, window.location.pathname); 38 } else { 39 console.log("EriÅim reddedildi! YanlıŠsiteden gelindi."); 40 window.location.href = "https://futuresoftwarelab.com/erisim-yasak"; // Yetkisiz giriÅ sayfası 41 } 42 }); 43 </script>
43 44 <!-- ERİÅİM KONTROLà BİTİŠ--> 45 </head> 46 <body> 47 <div id="unity-container"> 48 <canvas id="unity-canvas" width=960 height=600 tabindex="-1"></canvas> 49 <div id="unity-loading-bar"> 50 <div id="unity-logo"></div> 51 <div id="unity-progress-bar-empty"> 52 <div id="unity-progress-bar-full"></div> 53 </div> 54 </div> 55 <div id="unity-warning"> </div> 56 </div> 57
57<script> 58 window.addEventListener("load", function () { 59 if ("serviceWorker" in navigator) { 60 navigator.serviceWorker.register("ServiceWorker.js"); 61 } 62 }); 63 64 var container = document.querySelector("#unity-container"); 65 var canvas = document.querySelector("#unity-canvas"); 66 var loadingBar = document.querySelector("#unity-loading-bar"); 67 var progressBarFull = document.querySelector("#unity-progress-bar-full"); 68 var warningBanner = document.querySelector("#unity-warning"); 69 70 // Shows a temporary message banner/ribbon for a few seconds, or 71 // a permanent error message on top of the canvas if type=='error'. 72 // If type=='warning', a yellow highlight color is used. 73 // Modify or remove this function to customize the visually presented 74 // way that non-critical warnings and error messages are presented to the 75 // user. 76 function unityShowBanner(msg, type) { 77 function updateBannerVisibility() { 78 warningBanner.style.display = warningBanner.children.length ? 'block' : 'none'; 79 } 80 var div = document.createElement('div'); 81 div.innerHTML = msg; 82 warningBanner.appendChild(div); 83 if (type == 'error') div.style = 'background: red; padding: 10px;'; 84 else { 85 if (type == 'warning') div.style = 'background: yellow; padding: 10px;'; 86 setTimeout(function() { 87 warningBanner.removeChild(div); 88 updateBannerVisibility(); 89 }, 5000); 90 } 91 updateBannerVisibility(); 92 } 93 94 var buildUrl = "Build"; 95 var loaderUrl = buildUrl + "/bb0d9ecdb05db3e84da20bd14a4f84dc.loader.js"; 96 var config = { 97 dataUrl: buildUrl + "/4f8ac0615870510bd58ddf9da8b72496.data.gz", 98 frameworkUrl: buildUrl + "/e6cc00909a744ccc8564e38f5c36a26b.framework.js.gz", 99 codeUrl: buildUrl + "/a1967143cd49c51df81deeb480b8f08e.wasm.gz", 100 streamingAssetsUrl: "StreamingAssets", 101 companyName: "DefaultCompany", 102 productName: "TestAi", 103 productVersion: "0.1", 104 showBanner: unityShowBanner, 105 }; 106 107 // By default Unity keeps WebGL canvas render target size matched with 108 // the DOM size of the canvas element (scaled by window.devicePixelRatio) 109 // Set this to false if you want to decouple this synchronization from 110 // happening inside the engine, and you would instead like to size up 111 // the canvas DOM size and WebGL render target sizes yourself. 112 // config.matchWebGLToCanvasSize = false; 113 114 if (/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)) { 115 // Mobile device style: fill the whole browser client area with the game canvas: 116 var meta = document.createElement('meta'); 117 meta.name = 'viewport'; 118 meta.content = 'width=device-width, height=device-height, initial-scale=1.0, user-scalable=no, shrink-to-fit=yes'; 119 document.getElementsByTagName('head')[0].appendChild(meta); 120 } 121 122 loadingBar.style.display = "block"; 123 124 var script = document.createElement("script"); 125 script.src = loaderUrl; 126 script.onload = () => { 127 createUnityInstance(canvas, config, (progress) => { 128 progressBarFull.style.width = 100 * progress + "%"; 129 }).then((unityInstance) => { 130 loadingBar.style.display = "none"; 131 }).catch((message) => { 132 alert(message); 133 }); 134 }; 135 document.body.appendChild(script); 136 </script>
136 137 </body> 138</html>
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.