1<!doctype html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 6 <title>AFRIMETRO</title> 7 8 <!-- Favicon --> 9 <link rel="icon" type="image/x-icon" href="/favicon.ico" /> 10 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> 11 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> 12 <link rel="apple-touch-icon" href="/apple-touch-icon.png" /> 13 <link rel="shortcut icon" href="/favicon.ico" /> 14
14<script type="module" crossorigin src="/assets/index-Bx0c1cDW.js"></script>
14 15 <link rel="stylesheet" crossorigin href="/assets/index-DJ2BgtjW.css"> 16 </head> 17 18 <body> 19 <div id="root"></div> 20 21 22 <!-- Live Chat Widget with Enhanced Error Handling --> 23
23<script> 24 // Enhanced error handling for live chat script 25 window.addEventListener("error", function (e) { 26 if (e.filename && e.filename.includes("live_chat.v1.0.0.js")) { 27 console.warn("Live chat script error caught and handled:", e.message); 28 e.preventDefault(); // Prevent the error from bubbling up 29 return true; 30 } 31 // Also catch postMessage related errors 32 if (e.message && e.message.includes("postMessage")) { 33 console.warn("PostMessage error caught and handled:", e.message); 34 e.preventDefault(); 35 return true; 36 } 37 }); 38 39 // Catch unhandled promise rejections from live chat 40 window.addEventListener("unhandledrejection", function (e) { 41 if ( 42 e.reason && 43 e.reason.message && 44 e.reason.message.includes("postMessage") 45 ) { 46 console.warn( 47 "Live chat promise rejection handled:", 48 e.reason.message, 49 ); 50 e.preventDefault(); 51 } 52 }); 53 54 // Override postMessage to add safety checks 55 const originalPostMessage = window.postMessage; 56 window.postMessage = function (message, targetOrigin, transfer) { 57 try { 58 if (typeof targetOrigin === "string" && targetOrigin !== "*") { 59 return originalPostMessage.call( 60 this, 61 message, 62 targetOrigin, 63 transfer, 64 ); 65 } 66 } catch (error) { 67 console.warn("PostMessage error prevented:", error.message); 68 } 69 }; 70 71 // Load live chat script after DOM is ready 72 document.addEventListener("DOMContentLoaded", function () { 73 // Wait longer to ensure everything is fully loaded 74 setTimeout(function () { 75 try { 76 const script = document.createElement("script"); 77 script.src = 78 "https://connect.ras.yeastar.com/live_chat.v1.0.0.js?channelNumber=LC00000"; 79 script.onerror = function () { 80 console.warn( 81 "Failed to load live chat script - continuing without live chat", 82 ); 83 }; 84 // Add more safety checks 85 script.onload = function () { 86 console.log("Live chat script loaded successfully"); 87 }; 88 document.head.appendChild(script); 89 } catch (error) { 90 console.warn("Error loading live chat:", error); 91 } 92 }, 2000); // 2 second delay for better stability 93 }); 94 </script>
94 95 </body> 96</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.