1<!DOCTYPE html> 2<html> 3 <head> 4 <!-- 5 If you are serving your web app in a path other than the root, change the 6 href value below to reflect the base path you are serving from. 7 8 The path provided below has to start and end with a slash "/" in order for 9 it to work correctly. 10 11 For more details: 12 * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base 13 14 This is a placeholder for base href that will be replaced by the value of 15 the `--base-href` argument provided to `flutter build`. 16 --> 17 <base href="/" /> 18 19 <meta charset="UTF-8" /> 20 <meta content="IE=Edge" http-equiv="X-UA-Compatible" /> 21 <meta name="description" content="Siento Sim" /> 22 23 <!-- iOS meta tags & icons --> 24 <meta name="mobile-web-app-capable" content="yes" /> 25 <meta name="apple-mobile-web-app-status-bar-style" content="black" /> 26 <meta name="apple-mobile-web-app-title" content="Siento Sim" /> 27 <link rel="apple-touch-icon" href="favicon.ico" /> 28 29 <!-- Favicon --> 30 <link rel="icon" type="image/png" href="favicon.ico" /> 31 32 <title>Siento Sim</title> 33 <link rel="manifest" href="manifest.json" /> 34 </head> 35 <style> 36 body { 37 margin: 0; 38 padding: 0; 39 overflow: hidden; 40 background-color: #f5f5f5; 41 /* Light background color */ 42 } 43 44 .loader { 45 border: 4px solid transparent; 46 /* Transparent border to create space for the loader */
47 border-top: 4px solid #fff; 48 /* Top border (appears as the loader) */ 49 border-radius: 50%; 50 width: 50px; 51 height: 50px; 52 animation: spin 1s linear infinite; 53 position: absolute; 54 top: 50%; 55 /* Center the loader vertically */ 56 left: 50%; 57 /* Center the loader horizontally */ 58 transform: translate(-50%, -50%); 59 /* Center the loader precisely */ 60 } 61 62 .flutter-progress { 63 width: 100%; 64 height: 100%; 65 display: flex; 66 justify-content: center; 67 align-items: center; 68 background-color: #ffffff; 69 /* Splash background color */ 70 } 71 72 .flutter-progress div { 73 width: 50px; 74 /* Progress indicator size */ 75 height: 50px; 76 border: 4px solid #e0e0e0; 77 /* Outer border color */ 78 border-radius: 50%; 79 border-top: 4px solid #007bff; 80 /* Progress color */ 81 animation: spin 1s linear infinite; 82 } 83 84 .container { 85 width: 100vw; 86 height: 100vh; 87 display: flex; 88 justify-content: center; 89 align-items: center; 90 flex-direction: column; 91 text-align: center; 92 } 93 94 .indicator { 95 width: 250px; 96 /* Increased size of the icon */ 97 height: 250px; 98 margin-bottom: 20px; 99 } 100 101 @keyframes progress { 102 0% { 103 width: 0%; 104 } 105 106 100% { 107 width: 100%; 108 } 109 } 110 111 .progress-bar-fill { 112 height: 100%; 113 background-color: #007bff; 114 /* Change to a more noticeable color */ 115 border-radius: 4px; 116 transition: width 0.2s ease-in; 117 animation: progress 5s ease-in-out forwards; 118 } 119 </style> 120 121 <body> 122 <div id="loading_indicator" class="container"> 123 <img class="indicator" src="./assets/splash_logo.svg" alt="Loading..." /> 124 <div class="progress-bar"> 125 <div class="progress-bar-fill" style="width: 50%"></div> 126 </div> 127 </div> 128
128<script> 129 async function getServiceWorkerVersion() { 130 try { 131 const swText = await ( 132 await fetch("flutter_service_worker.js") 133 ).text(); 134 const versionMatch = swText.match( 135 /"main\.dart\.js":\s*"([a-f0-9]+)"/ 136 ); 137 return versionMatch?.[1] || null; 138 } catch (e) { 139 console.error("[SW] Failed to fetch version:", e); 140 return null; 141 } 142 } 143 144 if ("serviceWorker" in navigator) { 145 window.addEventListener("load", async function () { 146 try { 147 const newVersion = await getServiceWorkerVersion(); 148 const storedVersion = localStorage.getItem("sw-version"); 149 150 if (newVersion && storedVersion !== newVersion) { 151 console.log("[SW] New version detected."); 152 localStorage.setItem("sw-version", newVersion); 153 154 // Reload only after new controller activates 155 navigator.serviceWorker.addEventListener( 156 "controllerchange", 157 () => { 158 console.log("[SW] Controller changed. Reloading..."); 159 window.location.reload(); 160 } 161 ); 162 } 163 164 // Register main Flutter service worker 165 const registration = await navigator.serviceWorker.register( 166 "flutter_service_worker.js" 167 ); 168 console.log("[SW] Registered:", registration); 169 } catch (err) { 170 console.error("[SW] Error:", err); 171 } 172 }); 173 } 174 </script>
174 175 176
176<script src="main.dart.js" type="application/javascript"></script>
176 177
177<script src="flutter.js?v=2"></script>
177 178 <!--
178<script src="flutter_bootstrap.js" async></script>
178 --> 179 </body> 180</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.