1import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/components/CookieConsent.tsx");import __vite__cjsImport0_react_jsxDevRuntime from "/@fs/home/runner/workspace/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=9ce4103e"; const Fragment = __vite__cjsImport0_react_jsxDevRuntime["Fragment"]; const jsxDEV = __vite__cjsImport0_react_jsxDevRuntime["jsxDEV"]; 2import RefreshRuntime from "/@react-refresh"; 3const inWebWorker = typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope; 4let prevRefreshReg; 5let prevRefreshSig; 6if (import.meta.hot && !inWebWorker) { 7 if (!window.__vite_plugin_react_preamble_installed__) { 8 throw new Error("@vitejs/plugin-react can't detect preamble. Something is wrong. See https://github.com/vitejs/vite-plugin-react/pull/11#discussion_r430879201"); 9 } 10 prevRefreshReg = window.$RefreshReg$; 11 prevRefreshSig = window.$RefreshSig$; 12 window.$RefreshReg$ = (type, id) => { 13 RefreshRuntime.register(type, "/home/runner/workspace/client/src/components/CookieConsent.tsx " + id); 14 }; 15 window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform; 16} 17var _s = $RefreshSig$(); 18import __vite__cjsImport3_react from "/@fs/home/runner/workspace/node_modules/.vite/deps/react.js?v=9ce4103e"; const useState = __vite__cjsImport3_react["useState"]; const useEffect = __vite__cjsImport3_react["useEffect"]; 19import { X } from "/@fs/home/runner/workspace/node_modules/.vite/deps/lucide-react.js?v=9ce4103e"; 20import CookieSettingsPanel from "/src/components/CookieSettingsPanel.tsx"; 21import { useLanguage } from "/src/lib/LanguageContext.tsx"; 22const CookieConsent = () => { 23 _s(); 24 const { language } = useLanguage(); 25 const [isVisible, setIsVisible] = useState(false); 26 const [showCookiePanel, setShowCookiePanel] = useState(false); 27 const [hasConsent, setHasConsent] = useState(() => { 28 return !!localStorage.getItem("kyn_cookie_consent"); 29 }); 30 useEffect(() => { 31 if (!hasConsent) { 32 setTimeout(() => { 33 setIsVisible(true); 34 }, 800); 35 } 36 }, [hasConsent]); 37 useEffect(() => { 38 if (isVisible) { 39 document.body.style.overflow = "hidden"; 40 } else { 41 document.body.style.overflow = ""; 42 } 43 return () => { 44 document.body.style.overflow = ""; 45 }; 46 }, [isVisible]); 47 const handleAccept = () => { 48 localStorage.setItem("kyn_cookie_consent", "accepted"); 49 setHasConsent(true); 50 setIsVisible(false); 51 }; 52 const handleOpenPreferences = () => { 53 setShowCookiePanel(true); 54 }; 55 const handleCloseCookiePanel = () => { 56 setShowCookiePanel(false); 57 }; 58 const handleCookieDecisionMade = () => { 59 setHasConsent(true); 60 setIsVisible(false); 61 setShowCookiePanel(false); 62 }; 63 if (!isVisible) return null; 64 return /* @__PURE__ */ jsxDEV(Fragment, { children: [ 65 /* @__PURE__ */ jsxDEV( 66 "div", 67 { 68 className: "fixed inset-0 z-[998]", 69 style: { 70 backgroundColor: "rgba(0, 0, 0, 0.4)", 71 animation: "fadeIn 0.4s ease-out" 72 } 73 }, 74 void 0, 75 false, 76 { 77 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 78 lineNumber: 58, 79 columnNumber: 7 80 }, 81 this 82 ), 83 /* @__PURE__ */ jsxDEV( 84 "div", 85 { 86 className: "fixed bottom-0 left-0 right-0 z-[999]", 87 style: { 88 animation: "slideUp 0.5s ease-out" 89 }, 90 children: [
91 /* @__PURE__ */ jsxDEV("style", { children: ` 92 @keyframes slideUp { 93 from { 94 transform: translateY(100%); 95 opacity: 0; 96 } 97 to { 98 transform: translateY(0); 99 opacity: 1; 100 } 101 } 102 @keyframes fadeIn { 103 from { opacity: 0; } 104 to { opacity: 1; } 105 } 106 ` }, void 0, false, { 107 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 108 lineNumber: 72, 109 columnNumber: 9 110 }, this), 111 /* @__PURE__ */ jsxDEV( 112 "div", 113 { 114 className: "w-full bg-white px-4 md:px-12 lg:px-20 py-4 md:py-6", 115 style: { 116 boxShadow: "0 -2px 20px rgba(0, 0, 0, 0.08)", 117 fontFamily: "Helvetica, Arial, sans-serif", 118 borderTop: "1px solid #E5E5E5" 119 }, 120 children: /* @__PURE__ */ jsxDEV("div", { className: "max-w-7xl mx-auto", children: /* @__PURE__ */ jsxDEV("div", { className: "flex flex-col md:flex-row md:items-center md:justify-between gap-3 md:gap-8", children: [
121 /* @__PURE__ */ jsxDEV("div", { className: "flex-1", children: /* @__PURE__ */ jsxDEV("div", { className: "flex items-start justify-between gap-2", children: [ 122 /* @__PURE__ */ jsxDEV( 123 "p", 124 { 125 className: "text-xs md:text-sm leading-relaxed", 126 style: { fontWeight: 300, color: "#1A1A1A" }, 127 children: [ 128 language === "fr" ? "KYN utilise des cookies pour vous offrir la meilleure expérience. " : "KYN uses cookies for the best experience. ", 129 /* @__PURE__ */ jsxDEV( 130 "a", 131 { 132 href: "/cookies", 133 className: "underline hover:opacity-60 transition-opacity", 134 style: { textUnderlineOffset: "2px" }, 135 children: language === "fr" ? "En savoir plus" : "Learn more" 136 }, 137 void 0, 138 false, 139 { 140 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 141 lineNumber: 111, 142 columnNumber: 21 143 }, 144 this 145 ) 146 ] 147 }, 148 void 0, 149 true, 150 { 151 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 152 lineNumber: 104, 153 columnNumber: 19 154 }, 155 this 156 ),
157 /* @__PURE__ */ jsxDEV( 158 "button", 159 { 160 onClick: handleAccept, 161 className: "p-1 hover:opacity-60 transition-opacity md:hidden flex-shrink-0", 162 "aria-label": "Close", 163 children: /* @__PURE__ */ jsxDEV(X, { size: 16, strokeWidth: 1, color: "#1A1A1A" }, void 0, false, { 164 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 165 lineNumber: 124, 166 columnNumber: 21 167 }, this) 168 }, 169 void 0, 170 false, 171 { 172 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 173 lineNumber: 119, 174 columnNumber: 19 175 }, 176 this 177 ) 178 ] }, void 0, true, { 179 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 180 lineNumber: 103, 181 columnNumber: 17 182 }, this) }, void 0, false, { 183 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 184 lineNumber: 102, 185 columnNumber: 15 186 }, this),
187 /* @__PURE__ */ jsxDEV("div", { className: "flex flex-row gap-2 md:gap-3 md:flex-shrink-0", children: [ 188 /* @__PURE__ */ jsxDEV( 189 "button", 190 { 191 onClick: handleAccept, 192 className: "px-4 md:px-8 py-2 md:py-3 uppercase transition-all duration-300 hover:opacity-80", 193 style: { 194 backgroundColor: "#1A1A1A", 195 color: "#FFFFFF", 196 fontSize: "10px", 197 fontWeight: 400, 198 letterSpacing: "1px", 199 border: "none", 200 whiteSpace: "nowrap" 201 }, 202 "data-testid": "button-accept-cookies", 203 children: language === "fr" ? "ACCEPTER" : "ACCEPT" 204 }, 205 void 0, 206 false, 207 { 208 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 209 lineNumber: 131, 210 columnNumber: 17 211 }, 212 this 213 ),
214 /* @__PURE__ */ jsxDEV( 215 "button", 216 { 217 onClick: handleOpenPreferences, 218 className: "px-4 md:px-8 py-2 md:py-3 uppercase transition-all duration-300 hover:bg-gray-50", 219 style: { 220 backgroundColor: "transparent", 221 color: "#1A1A1A", 222 fontSize: "10px", 223 fontWeight: 400, 224 letterSpacing: "1px", 225 border: "1px solid #1A1A1A", 226 whiteSpace: "nowrap" 227 }, 228 "data-testid": "button-cookie-preferences", 229 children: language === "fr" ? "PRÃFÃRENCES" : "PREFERENCES" 230 }, 231 void 0, 232 false, 233 { 234 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 235 lineNumber: 148, 236 columnNumber: 17 237 }, 238 this 239 ) 240 ] }, void 0, true, { 241 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 242 lineNumber: 130, 243 columnNumber: 15 244 }, this),
245 /* @__PURE__ */ jsxDEV( 246 "button", 247 { 248 onClick: handleAccept, 249 className: "hidden md:flex p-1 hover:opacity-60 transition-opacity flex-shrink-0", 250 "aria-label": "Close", 251 children: /* @__PURE__ */ jsxDEV(X, { size: 20, strokeWidth: 1, color: "#1A1A1A" }, void 0, false, { 252 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 253 lineNumber: 172, 254 columnNumber: 17 255 }, this) 256 }, 257 void 0, 258 false, 259 { 260 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 261 lineNumber: 167, 262 columnNumber: 15 263 }, 264 this 265 ) 266 ] }, void 0, true, { 267 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 268 lineNumber: 100, 269 columnNumber: 13 270 }, this) }, void 0, false, { 271 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 272 lineNumber: 98, 273 columnNumber: 11 274 }, this) 275 }, 276 void 0, 277 false, 278 { 279 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 280 lineNumber: 90, 281 columnNumber: 9 282 }, 283 this 284 ),
285 /* @__PURE__ */ jsxDEV( 286 CookieSettingsPanel, 287 { 288 isOpen: showCookiePanel, 289 onClose: handleCloseCookiePanel, 290 onDecisionMade: handleCookieDecisionMade 291 }, 292 void 0, 293 false, 294 { 295 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 296 lineNumber: 179, 297 columnNumber: 9 298 }, 299 this 300 ) 301 ] 302 }, 303 void 0, 304 true, 305 { 306 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 307 lineNumber: 66, 308 columnNumber: 7 309 }, 310 this 311 ) 312 ] }, void 0, true, { 313 fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx", 314 lineNumber: 56, 315 columnNumber: 5 316 }, this); 317}; 318_s(CookieConsent, "PD2IdRuVIsFZcD/uflAGXcYTYjA=", false, function() { 319 return [useLanguage]; 320}); 321_c = CookieConsent; 322export default CookieConsent; 323var _c; 324$RefreshReg$(_c, "CookieConsent"); 325if (import.meta.hot && !inWebWorker) { 326 window.$RefreshReg$ = prevRefreshReg; 327 window.$RefreshSig$ = prevRefreshSig; 328} 329if (import.meta.hot && !inWebWorker) { 330 RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => { 331 RefreshRuntime.registerExportsForReactRefresh("/home/runner/workspace/client/src/components/CookieConsent.tsx", currentExports); 332 import.meta.hot.accept((nextExports) => { 333 if (!nextExports) return; 334 const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate("/home/runner/workspace/client/src/components/CookieConsent.tsx", currentExports, nextExports); 335 if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage); 336 }); 337 }); 338} 339 340//# sourceMappingURL=data:application/json;base64,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VO0FBQUEsb0JBQ1YsY0FBVztBQUFBLG9CQUVYLGlDQUFDLEtBQUUsTUFBTSxJQUFJLGFBQWEsR0FBRyxPQUFNLGFBQW5DO0FBQUE7QUFBQTtBQUFBO0FBQUEsMkJBQTRDO0FBQUE7QUFBQSxrQkFMOUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQU1BO0FBQUEsbUJBekVGO0FBQUE7QUFBQTtBQUFBO0FBQUEscUJBMEVBLEtBNUVGO0FBQUE7QUFBQTtBQUFBO0FBQUEscUJBNkVBO0FBQUE7QUFBQSxZQXJGRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFzRkE7QUFBQSxVQUdBO0FBQUEsWUFBQztBQUFBO0FBQUEsY0FDQyxRQUFRWDtBQUFBQSxjQUNSLFNBQVNjO0FBQUFBLGNBQ1QsZ0JBQWdCQztBQUFBQTtBQUFBQSxZQUhsQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFHMkM7QUFBQTtBQUFBO0FBQUEsTUFwSDdDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQXNIQTtBQUFBLE9BaElGO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FpSUE7QUFFSjtBQUFFcEIsR0FyTElELGVBQXVCO0FBQUEsVUFDTkQsV0FBVztBQUFBO0FBQUFtQyxLQUQ1QmxDO0FBdUxOLGVBQWVBO0FBQWMsSUFBQWtDO0FBQUFDLGFBQUFELElBQUEiLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJYIiwiQ29va2llU2V0dGluZ3NQYW5lbCIsInVzZUxhbmd1YWdlIiwiQ29va2llQ29uc2VudCIsIl9zIiwibGFuZ3VhZ2UiLCJpc1Zpc2libGUiLCJzZXRJc1Zpc2libGUiLCJ1c2VTdGF0ZSIsInNob3dDb29raWVQYW5lbCIsInNldFNob3dDb29raWVQYW5lbCIsImhhc0NvbnNlbnQiLCJzZXRIYXNDb25zZW50IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInNldFRpbWVvdXQiLCJkb2N1bWVudCIsImJvZHkiLCJzdHlsZSIsIm92ZXJmbG93IiwiaGFuZGxlQWNjZXB0Iiwic2V0SXRlbSIsImhhbmRsZU9wZW5QcmVmZXJlbmNlcyIsImhhbmRsZUNsb3NlQ29va2llUGFuZWwiLCJoYW5kbGVDb29raWVEZWNpc2lvbk1hZGUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJhbmltYXRpb24iLCJib3hTaGFkb3ciLCJmb250RmFtaWx5IiwiYm9yZGVyVG9wIiwiZm9udFdlaWdodCIsImNvbG9yIiwidGV4dFVuZGVybGluZU9mZnNldCIsImZvbnRTaXplIiwibGV0dG
340VyU3BhY2luZyIsImJvcmRlciIsIndoaXRlU3BhY2UiLCJfYyIsIiRSZWZyZXNoUmVnJCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJDb29raWVDb25zZW50LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgWCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgQ29va2llU2V0dGluZ3NQYW5lbCBmcm9tICcuL0Nvb2tpZVNldHRpbmdzUGFuZWwnO1xuaW1wb3J0IHsgdXNlTGFuZ3VhZ2UgfSBmcm9tICcuLi9saWIvTGFuZ3VhZ2VDb250ZXh0JztcblxuY29uc3QgQ29va2llQ29uc2VudDogUmVhY3QuRkMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgbGFuZ3VhZ2UgfSA9IHVzZUxhbmd1YWdlKCk7XG4gIGNvbnN0IFtpc1Zpc2libGUsIHNldElzVmlzaWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93Q29va2llUGFuZWwsIHNldFNob3dDb29raWVQYW5lbF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtoYXNDb25zZW50LCBzZXRIYXNDb25zZW50XSA9IHVzZVN0YXRlKCgpID0+IHtcbiAgICByZXR1cm4gISFsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgna3luX2Nvb2tpZV9jb25zZW50Jyk7XG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFoYXNDb25zZW50KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0SXNWaXNpYmxlKHRydWUpO1xuICAgICAgfSwgODAwKTtcbiAgICB9XG4gIH0sIFtoYXNDb25zZW50XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICBkb2
340N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnJztcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnJztcbiAgICB9O1xuICB9LCBbaXNWaXNpYmxlXSk7XG5cbiAgY29uc3QgaGFuZGxlQWNjZXB0ID0gKCkgPT4ge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdreW5fY29va2llX2NvbnNlbnQnLCAnYWNjZXB0ZWQnKTtcbiAgICBzZXRIYXNDb25zZW50KHRydWUpO1xuICAgIHNldElzVmlzaWJsZShmYWxzZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3BlblByZWZlcmVuY2VzID0gKCkgPT4ge1xuICAgIHNldFNob3dDb29raWVQYW5lbCh0cnVlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDbG9zZUNvb2tpZVBhbmVsID0gKCkgPT4ge1xuICAgIHNldFNob3dDb29raWVQYW5lbChmYWxzZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ29va2llRGVjaXNpb25NYWRlID0gKCkgPT4ge1xuICAgIHNldEhhc0NvbnNlbnQodHJ1ZSk7XG4gICAgc2V0SXNWaXNpYmxlKGZhbHNlKTtcbiAgICBzZXRTaG93Q29va2llUGFuZWwoZmFsc2UpO1xuICB9O1xuXG4gIGlmICghaXNWaXNpYmxlKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7LyogRGFyayBvdmVybGF5ICovfVxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIHotWzk5OF1cIlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwgMCwgMCwgMC40KScsXG4gICAgICAgICAgYW5pbWF0aW9uOiAnZmFkZUluIDAuNHMgZWFzZS1vdXQnXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICAgXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cImZpeGVkIGJvdHRvbS0wIGxlZnQtMCByaWdodC0wIHotWzk5OV1cIlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIGFuaW1hdGlvbjogJ3NsaWRlVXAgMC41cyBlYXNlLW91dCdcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPHN0eWxlPntgXG4gICAgICAgICAgQGtleWZyYW1lcyBzbGlkZVVwIHtcbiAgICAgICAgICAgIGZyb20ge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0byB7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGtleWZyYW1lcyBmYWRlSW4ge1xuICAgICAgICAgICAgZnJvbSB7IG9wYWNpdHk6IDA7IH1cbiAgICAgICAgICAgIHRvIHsgb3BhY2l0eTogMTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgYH08L3N0eWxlPlxuXG4gICAgICAgIHsvKiBGdWxsLXdpZHRoIGhvcml6b250YWwgYmFubmVyIC0gY29tcGFjdCBvbiBtb2JpbGUgKi99XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgYmctd2hpdGUgcHgtNCBtZDpweC0xMiBsZzpweC0yMCBweS00IG1kOnB5LTZcIlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBib3hTaGFkb3c6ICcwIC0ycHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDgpJyxcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6ICdIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmJyxcbiAgICAgICAgICAgIGJvcmRlclRvcDogJzFweCBzb2xpZCAjRTVFNUU1J1xuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvXCI+XG4gICAgICAgICAgICB7LyogRGVza3RvcDogSG9yaXpvbnRhbCBsYXlvdXQgLyBNb2JpbGU6IENvbXBhY3Qgc3RhY2tlZCBsYXlvdXQgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgbWQ6ZmxleC1yb3cgbWQ6aXRlbXMtY2VudGVyIG1kOmp1c3RpZnktYmV0d2VlbiBnYXAtMyBtZDpnYXAtOFwiPlxuICAgICAgICAgICAgICB7LyogTGVmdCBzaWRlOiBEZXNjcmlwdGlvbiAobm8gdGl0bGUgb24gbW9iaWxlIHRvIHNhdmUgc3BhY2UpICovfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW4gZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgbWQ6dGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWRcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBmb250V2VpZ2h0OiAzMDAsIGNvbG9yOiAnIzFBMUExQScgfX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2xhbmd1YWdlID09PSAnZnInIFxuICAgICAgICAgICAgICAgICAgICAgID8gXCJLWU4gdXRpbGlzZSBkZXMgY29va2llcyBwb3VyIHZvdXMgb2ZmcmlyIGxhIG1laWxsZXVyZSBleHDDqXJpZW5jZS4gXCJcbiAgICAgICAgICAgICAgICAgICAgICA6IFwiS1lOIHVzZXMgY29va2llcyBmb3IgdGhlIGJlc3QgZXhwZXJpZW5jZS4gXCJ9XG4gICAgICAgICAgICAgICAgICAgIDxhIFxuICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIvY29va2llc1wiIFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInVuZGVybGluZSBob3ZlcjpvcGFjaXR5LTYwIHRyYW5zaXRpb24tb3BhY2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgdGV4dFVuZGVybGluZU9mZnNldDogJzJweCcgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtsYW5ndWFnZSA9PT0gJ2ZyJyA/ICdFbiBzYXZvaXIgcGx1cycgOiAnTGVhcm4gbW9yZSd9XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQWNjZXB0fVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwLTEgaG92ZXI6b3BhY2l0eS02MCB0cmFuc2l0aW9uLW9wYWNpdHkgbWQ6aGlkZGVuIGZsZXgtc2hyaW5rLTBcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8WCBzaXplPXsxNn0gc3Ryb2tlV2lkdGg9ezF9IGNvbG9yPVwiIzFBMUExQVwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgey8qIFJpZ2h0IHNpZGU6IEJ1dHRvbnMgLSBob3Jpem9udGFsIG9uIG1vYmlsZSB0b28gKi99XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXJvdyBnYXAtMiBtZDpnYXAtMyBtZDpmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQWNjZXB0fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHgtNCBtZDpweC04IHB5LTIgbWQ6cHktMyB1cHBlcmNhc2UgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIGhvdmVyOm9wYWNpdHktODBcIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzFBMUExQScsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnI0ZGRkZGRicsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMTBweCcsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyU3BhY2luZzogJzFweCcsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiYnV0dG9uLWFjY2VwdC1jb29raWVzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7bGFuZ3VhZ2UgPT09ICdmcicgPyAnQUNDRVBURVInIDogJ0FDQ0VQVCd9XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVPcGVuUHJlZmVyZW5jZXN9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJweC00IG1kOnB4LTggcHktMiBtZDpweS0zIHVwcGVyY2FzZSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgaG92ZXI6YmctZ3JheS01MFwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5k
340Q29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzFBMUExQScsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMTBweCcsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyU3BhY2luZzogJzFweCcsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCAjMUExQTFBJyxcbiAgICAgICAgICAgICAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCdcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImJ1dHRvbi1jb29raWUtcHJlZmVyZW5jZXNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtsYW5ndWFnZSA9PT0gJ2ZyJyA/ICdQUsOJRsOJUkVOQ0VTJyA6ICdQUkVGRVJFTkNFUyd9XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIHsvKiBEZXNrdG9wIGNsb3NlIGJ1dHRvbiAqL31cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFjY2VwdH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoaWRkZW4gbWQ6ZmxleCBwLTEgaG92ZXI6b3BhY2l0eS02MCB0cmFuc2l0aW9uLW9wYWNpdHkgZmxleC1zaHJpbmstMFwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxYIHNpemU9ezIwfSBzdHJva2VXaWR0aD17MX0gY29sb3I9XCIjMUExQTFBXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIENvb2tpZSBTZXR0aW5ncyBQYW5lbCAqL31cbiAgICAgICAgPENvb2tpZVNldHRpbmdzUGFuZWwgXG4gICAgICAgICAgaXNPcGVuPXtzaG93Q29va2llUGFuZWx9IFxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlQ29va2llUGFuZWx9IFxuICAgICAgICAgIG9uRGVjaXNpb25NYWRlPXtoYW5kbGVDb29raWVEZWNpc2lvbk1hZGV9IFxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb29raWVDb25zZW50O1xuIl0sImZpbGUiOiIvaG9tZS9ydW5uZXIvd29ya3NwYWNlL2NsaWVudC9zcmMvY29tcG9uZW50cy9Db29raWVDb25zZW50LnRzeCJ9
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.