<!DOCTYPE html>


<!-- Ultimate Game Stash file--> 
<!-- For the regularly updating doc go to https://docs.google.com/document/d/1_FmH3BlSBQI7FGgAQL59-ZPe8eCxs35wel6JUyVaG8Q/ -->


<html lang="en-us">
  <head>
    <base href="https://cdn.jsdelivr.net/gh/bubbls/UGS-Assets@5765230aac4c0072a5b1021eab4a6a4b9df597f9/stone-grass-mowing-simulator/">
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> 
  </head>
  <body style="margin:0;padding:0" class="noselect">
    <div id="loading-text" style="color: black; font-size: 48px; font-family: cursive; text-align: center; margin-top: 20px;">LOADING...</div>
    <canvas id="unity-canvas"
      style="position:fixed;top:0;left:0;width:100%;height:100%;outline:none"></canvas>

    <script>
    const SPLIT_MAP = {"8e12edaf08bc00cba646a7df97480baf.wasm": null};
    </script>

    <script>
    async function mergeParts(baseUrl) {
      const parts = [];
      for (let i = 1; i <= 99; i++) {
        const testUrl = baseUrl + ".part" + i;
        try {
          const head = await fetch(testUrl, { method: "HEAD" });
          if (!head.ok) break;
          parts.push(testUrl); 
        } catch { break; }
      }
      if (parts.length === 0) return baseUrl;

      const buffers = await Promise.all(parts.map(async (u) => {
        const r = await fetch(u);
        if (!r.ok) throw new Error("Failed part " + u);
        return new Uint8Array(await r.arrayBuffer());
      }));

      const total = buffers.reduce((a, b) => a + b.length, 0);
      const merged = new Uint8Array(total);
      let offset = 0;
      for (const b of buffers) { merged.set(b, offset); offset += b.length; }

      return URL.createObjectURL(new Blob([merged]));
    }

    async function preMergeAll() {
      const map = {};
      const files = Object.entries(SPLIT_MAP);
      const total = files.length;
      let done = 0;

      const loadingText = document.getElementById("loading-text");

      for (const [file, _] of files) {
        const merged = await mergeParts("Build/" + file);
        map[file] = merged;
        done++;
        const percent = Math.floor((done / total) * 100);
        loadingText.innerText = `LOADING... ${percent}%`;
        console.log("Premerged:", file, "→", merged);
      }

      loadingText.style.display = "none";

      return map;
    }

    (async () => {
      const mergedMap = await preMergeAll();
      window.SPLIT_MAP = mergedMap;
      const origFetch = window.fetch;
      window.fetch = async function(resource, options) {
        if (typeof resource === "string") {
          const key = resource.split("/").pop();
          if (mergedMap[key]) {
            console.log("Redirect fetch:", key);
            return origFetch(mergedMap[key], options);
          }
          if (resource.includes("StreamingAssets")) {
            return origFetch((document.querySelector('base').href !== null ? document.querySelector('base').href+"/" : "") + "StreamingAssets/"+resource.split("/StreamingAssets/")[1])
          }
        }
        return origFetch(resource, options);
      };

      const OrigXHR = window.XMLHttpRequest; 
      window.XMLHttpRequest = function() {
        const xhr = new OrigXHR();
        const origOpen = xhr.open;
        xhr.open = function(method, url, ...rest) {
          const key = url.split("/").pop();
          if (mergedMap[key]) {
            console.log("Redirect XHR:", key);
            origOpen.call(xhr, method, mergedMap[key], ...rest);
          } else {
            origOpen.call(xhr, method, url, ...rest);
          }
        };
        return xhr;
      };

      const canvas = document.querySelector("#unity-canvas");
      const loaderUrl = "Build/e40682cd4a2e8826aa72fb3216daf773.loader.js";
      const config = {
        dataUrl: "Build/5339d669eb849446a68aba9a48d61098.data",
        frameworkUrl: "Build/9f98a295b940d80834f1bfc1792d2663.framework.js",
        codeUrl: "Build/8e12edaf08bc00cba646a7df97480baf.wasm",
        streamingAssetsUrl: "StreamingAssets",
        companyName: "Stone Grass: Mowing Simulator",
        productName: "Stone Grass: Mowing Simulator",
        productVersion: "1.0.0"
      };

      const script = document.createElement("script");
      script.src = loaderUrl;
      script.onload = () => {
        createUnityInstance(canvas, config, (progress) => {}).then((unityInstance) => {
          window.gameInstance = unityInstance;
        }).catch((message) => alert(message));
      };
      document.body.appendChild(script);
    })();
    </script>

    <script>
    function resizeCanvas() {
      const canvas = document.getElementById("unity-canvas");
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      canvas.style.width = window.innerWidth + "px";
      canvas.style.height = window.innerHeight + "px";
    }
    window.addEventListener("load", resizeCanvas);
    window.addEventListener("resize", resizeCanvas);
    </script>
  </body>
</html> 
clgrassmowing.html

Displaying clgrassmowing.html.
/* Add your styles here */

// Add your code here