1<!doctype html> 2<html lang="en-US"> 3 <head> 4 <meta charset="utf-8" /> 5 <base href="/" /> 6 <meta name="theme-color" content="#171717" /> 7 <meta name="mobile-web-app-capable" content="yes" /> 8 <meta name="apple-mobile-web-app-capable" content="yes" /> 9 <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> 10 <meta 11 name="description" 12 content="LibreChat - An open source chat application with support for multiple AI models" 13 /> 14 <title>LibreChat</title> 15 <link rel="icon" type="image/png" sizes="32x32" href="assets/favicon-32x32.png" /> 16 <link rel="icon" type="image/png" sizes="16x16" href="assets/favicon-16x16.png" /> 17 <link rel="apple-touch-icon" href="assets/apple-touch-icon-180x180.png" /> 18 <meta 19 name="viewport" 20 content="width=device-width, initial-scale=1, interactive-widget=resizes-content" 21 /> 22 <style> 23 html, 24 body { 25 margin: 0; 26 padding: 0; 27 height: 100%; 28 } 29 </style> 30
30<script> 31 const theme = localStorage.getItem('color-theme'); 32 const loadingContainerStyle = document.createElement('style'); 33 let backgroundColor; 34 35 if (theme === 'dark') { 36 backgroundColor = '#0d0d0d'; 37 } else if (theme === 'light') { 38 backgroundColor = '#ffffff'; 39 } else if (theme === 'system') { 40 const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)').matches; 41 backgroundColor = prefersDarkScheme ? '#0d0d0d' : '#ffffff'; 42 } else { 43 backgroundColor = '#ffffff'; 44 } 45 46 loadingContainerStyle.innerHTML = ` 47 #loading-container { 48 display: flex; 49 align-items: center; 50 justify-content: center; 51 height: 100vh; 52 background-color: ${backgroundColor}; 53 } 54 `; 55 document.head.appendChild(loadingContainerStyle); 56 </script>
56 57
57<script> 58 (function () { 59 var KEY = 'lc-asset-recovery-at'; 60 var RUM_QUEUE_KEY = 'lc-rum-queue'; 61 var MAX_RUM_QUEUE = 20; 62 window.__lcRumRecoveryGuardInstalled = true; 63 window.__lcRumQueue = Array.isArray(window.__lcRumQueue) ? window.__lcRumQueue : []; 64 try { 65 var persistedQueue = JSON.parse(sessionStorage.getItem(RUM_QUEUE_KEY) || '[]'); 66 if (Array.isArray(persistedQueue)) { 67 window.__lcRumQueue = persistedQueue.concat(window.__lcRumQueue).slice(-MAX_RUM_QUEUE); 68 } 69 } catch (e) { 70 /* Diagnostics should never affect application startup. */ 71 } 72 window.__lcRumPush = function (type, attributes) { 73 try { 74 var safeAttributes = {}; 75 Object.keys(attributes || {}).forEach(function (key) { 76 var value = attributes[key]; 77 if ( 78 typeof value !== 'string' && 79 typeof value !== 'number' && 80 typeof value !== 'boolean' 81 ) { 82 return; 83 } 84 safeAttributes[key] = value; 85 }); 86 if (window.__lcRumQueue.length >= MAX_RUM_QUEUE) { 87 window.__lcRumQueue.shift(); 88 } 89 window.__lcRumQueue.push({ 90 type: type, 91 at: Math.round(performance.now()), 92 visibilityState: document.visibilityState, 93 attributes: safeAttributes, 94 }); 95 sessionStorage.setItem(RUM_QUEUE_KEY, JSON.stringify(window.__lcRumQueue)); 96 } catch (e) { 97 /* Diagnostics should never affect application startup. */ 98 } 99 }; 100 function shouldRecover() { 101 try { 102 var last = Number(sessionStorage.getItem(KEY)) || 0; 103 if (Date.now() - last < 60000) { 104 return false; 105 } 106 sessionStorage.setItem(KEY, String(Date.now())); 107 return true; 108 } catch (e) { 109 return false; 110 } 111 } 112 window.__lcRecoverStaleAssets = function () { 113 if (!shouldRecover()) { 114 return false; 115 } 116 window.__lcRumPush('stale-asset-recovery-start'); 117 var reload = function () { 118 window.__lcRumPush('stale-asset-recovery-reload'); 119 window.location.reload(); 120 }; 121 if (navigator.serviceWorker) { 122 var scopeBase = new URL('./', document.baseURI || window.location.href).href; 123 navigator.serviceWorker 124 .getRegistrations() 125 .then(function (registrations) { 126 return Promise.all( 127 registrations 128 .filter(function (registration) { 129 return registration.scope.indexOf(scopeBase) === 0; 130 }) 131 .map(function (registration) { 132 return registration.unregister(); 133 }), 134 ); 135 }) 136 .then(reload, reload); 137 } else { 138 reload(); 139 } 140 return true; 141 }; 142 if (navigator.serviceWorker) { 143 navigator.serviceWorker.addEventListener('message', function (event) { 144 if (!event.data || event.data.type !== 'LC_SW_PING') { 145 return; 146 } 147 var source = event.source || navigator.serviceWorker.controller; 148 if (source) { 149 source.postMessage({ type: 'LC_SW_PONG' }); 150 } 151 }); 152 } 153 window.addEventListener( 154 'error', 155 function (event) { 156 var el = event.target; 157 if (!el || !el.tagName) { 158 return; 159 } 160 var failedScript = el.tagName === 'SCRIPT' && el.src; 161 var failedPreload = 162 el.tagName === 'LINK' && /preload/.test(el.rel || '') && /\.js$/.test(el.href || ''); 163 if (failedScript || failedPreload) { 164 var isRumBootstrap = el.getAttribute('data-lc-rum-bootstrap') === 'true'; 165 window.__lcRumPush('asset-load-error', { 166 tagName: el.tagName, 167 assetUrl: el.src || el.href, 168 optional: isRumBootstrap, 169 }); 170 if (isRumBootstrap) { 171 return; 172 } 173 window.__lcRecoverStaleAssets(); 174 } 175 }, 176 true, 177 ); 178 window.addEventListener('unhandledrejection', function (event) { 179 var message = event.reason && event.reason.message; 180 if ( 181 typeof message === 'string' && 182 (message.indexOf('dynamically imported module') !== -1 || 183 message.indexOf('Importing a module script failed') !== -1) 184 ) { 185 window.__lcRumPush('dynamic-import-error'); 186 window.__lcRecoverStaleAssets(); 187 } 188 }); 189 })(); 190 </script>
190 191
191<script type="module" crossorigin src="./assets/index.P3glMaNP.js"></script>
191 192 <link rel="modulepreload" crossorigin href="./assets/rolldown-runtime.Cyuzqnbw.js"> 193 <link rel="modulepreload" crossorigin href="./assets/codemirror-core.DCeggAsc.js"> 194 <link rel="modulepreload" crossorigin href="./assets/http-client.D1qXypdn.js"> 195 <link rel="modulepreload" crossorigin href="./assets/mermaid.CpNRA-E5.js"> 196 <link rel="modulepreload" crossorigin href="./assets/advanced-inputs.BKUrQSBb.js"> 197 <link rel="modulepreload" crossorigin href="./assets/animations.Cg77P7xO.js"> 198 <link rel="modulepreload" crossorigin href="./assets/react-vtree.Bv__m2K7.js"> 199 <link rel="modulepreload" crossorigin href="./assets/query-devtools.CnpBJy7z.js"> 200 <link rel="modulepreload" crossorigin href="./assets/validation.DV1yC6np.js"> 201 <link rel="modulepreload" crossorigin href="./assets/vendor.C3HLprAE.js"> 202 <link rel="modulepreload" crossorigin href="./assets/avatars.CH7OGiPh.js"> 203 <link rel="modulepreload" crossorigin href="./assets/headlessui.CLu2eCui.js"> 204 <link rel="modulepreload" crossorigin href="./assets/radix-ui.DSF0o2-E.js"> 205 <link rel="modulepreload" crossorigin href="./assets/react-interactions.Ggqtj1A5.js"> 206 <link rel="modulepreload" crossorigin href="./assets/routing.Cb7G0LKm.js"> 207 <link rel="modulepreload" crossorigin href="./assets/tanstack-vendor.B02iI_qw.js"> 208 <link rel="modulepreload" crossorigin href="./assets/markdown-processing.BqkdC0TQ.js"> 209 <link rel="modulepreload" crossorigin href="./assets/date-utils.7tLVf9uC.js"> 210 <link rel="modulepreload" crossorigin href="./assets/framer-motion.CMPOPEls.js"> 211 <link rel="modulepreload" crossorigin href="./assets/i18n.D3Gbp8tn.js"> 212 <link rel="modulepreload" crossorigin href="./assets/utilities.B8O80BWK.js"> 213 <link rel="modulepreload" crossorigin href="./assets/forms.BEEooEiq.js"> 214 <link rel="modulepreload" crossorigin href="./assets/virtualization.l82hJAz3.js"> 215 <link rel="modulepreload" crossorigin href="./assets/hooks.CueFou3h.js"> 216 <link rel="modulepreload" crossorigin href="./assets/sandpack.CEJsOUxH.js"> 217 <link rel="modulepreload" crossorigin href="./assets/MyFilesModal.EXcdQ66N.js"> 218 <link rel="modulepreload" crossorigin href="./assets/security-ui.BjsCPful.js"> 219 <link rel="modulepreload" crossorigin href="./assets/ProjectCreateDialog.1vRHTKmx.js"> 220 <link rel="modulepreload" crossorigin href="./assets/forms.D_zl9-KT.js"> 221 <link rel="modulepreload" crossorigin href="./assets/polyfills.BnDHDYRr.js"> 222 <link rel="modulepreload" crossorigin href="./assets/code-editor.CMtCNxFi.js"> 223 <link rel="modulepreload" crossorigin href="./assets/math-katex.BMlcaHSk.js"> 224 <link rel="stylesheet" crossorigin href="./assets/math-katex.uZ8_QngQ.css"> 225 <link rel="stylesheet" crossorigin href="./assets/index.BspIZSKW.css"> 226 <link rel="manifest" href="./manifest.webmanifest" crossorigin="use-credentials">
226<script id="vite-plugin-pwa:register-sw" src="./registerSW.js"></script>
226</head> 227 <body> 228 <div id="root"> 229 <div id="loading-container"></div> 230 </div> 231 </body> 232</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.