1import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/assets/components/SessionList.jsx");import __vite__cjsImport0_react_jsxDevRuntime from "/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=991a57be"; 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, "/doctors-dashboard/src/assets/components/SessionList.jsx " + id); 14 }; 15 window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform; 16} 17var _s = $RefreshSig$(); 18import __vite__cjsImport3_react from "/node_modules/.vite/deps/react.js?v=991a57be"; const React = __vite__cjsImport3_react.__esModule ? __vite__cjsImport3_react.default : __vite__cjsImport3_react; 19import __vite__cjsImport4_react from "/node_modules/.vite/deps/react.js?v=991a57be"; const useEffect = __vite__cjsImport4_react["useEffect"]; const useState = __vite__cjsImport4_react["useState"]; 20import { getSessionsByDoctor } from "/src/assets/api/doctorsAPI.js"; 21import { useUser } from "/node_modules/.vite/deps/@clerk_clerk-react.js?v=4f524b5a"; 22import { Link } from "/node_modules/.vite/deps/react-router-dom.js?v=2ecb7ed9"; 23import { Calendar, Clock, CheckCircle, PlusCircle, ArrowRight, ChevronRight } from "/node_modules/.vite/deps/lucide-react.js?v=78b25a04"; 24const SessionList = ({ setSession }) => { 25 _s(); 26 const [sessionsData, setSessionsData] = useState([]); 27 const [latestSession, setLatestSession] = useState(null); 28 const [upcomingSessions, setUpcomingSessions] = useState([]); 29 const [isLoading, setIsLoading] = useState(true); 30 const { user } = useUser(); 31 const clerkId = user ? user.id : null; 32 const fetchSessions = async () => { 33 try { 34 setIsLoading(true); 35 const data = await getSessionsByDoctor(clerkId); 36 console.log("Sessions data fetched:", data); 37 setSessionsData(data); 38 setIsLoading(false); 39 } catch (error) { 40 console.error("Error fetching sessions:", error); 41 setIsLoading(false); 42 } 43 }; 44 useEffect(() => { 45 fetchSessions(); 46 }, [clerkId]); 47 useEffect(() => { 48 if (sessionsData.length > 0) { 49 setLatestSession(sessionsData[0]); 50 setUpcomingSessions(sessionsData.slice(1)); 51 console.log("Latest session:", sessionsData[0]); 52 console.log("Upcoming sessions:", sessionsData.slice(1)); 53 } 54 }, [sessionsData]); 55 const formatDate = (dateString) => { 56 if (!dateString) return ""; 57 const date = new Date(dateString); 58 return date.toLocaleDateString("en-US", { 59 year: "numeric", 60 month: "short", 61 day: "numeric" 62 }); 63 }; 64 if (isLoading) { 65 return /* @__PURE__ */ jsxDEV("div", { className: "flex justify-center items-center h-full w-full bg-white", children: /* @__PURE__ */ jsxDEV("div", { className: "animate-spin rounded-full h-16 w-16 border-t-4 border-b-4 border-[#295567]" }, void 0, false, { 66 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 67 lineNumber: 61, 68 columnNumber: 9 69 }, this) }, void 0, false, { 70 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 71 lineNumber: 60, 72 columnNumber: 7 73 }, this); 74 } 75 return /* @__PURE__ */ jsxDEV("div", { className: "flex bg-[#FAFAF9] min-h-screen font-['Raleway',sans-serif] animate-pageTransition", children: [ 76 /* @__PURE__ */ jsxDEV("div", { className: "w-2/5 flex items-center justify-center p-8", children: /* @__PURE__ */ jsxDEV("div", { className: "relative", children: [
77 /* @__PURE__ */ jsxDEV( 78 "img", 79 { 80 src: "/src/assets/images/img.png", 81 alt: "Data analyst with charts", 82 className: "w-96 h-auto" 83 }, 84 void 0, 85 false, 86 { 87 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 88 lineNumber: 71, 89 columnNumber: 11 90 }, 91 this 92 ), 93 /* @__PURE__ */ jsxDEV("div", { className: "absolute -bottom-4 -right-4 bg-[#295567] text-white px-6 py-3 rounded-xl shadow-lg", children: /* @__PURE__ */ jsxDEV("p", { className: "text-sm font-medium", children: "Manage your sessions efficiently" }, void 0, false, { 94 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 95 lineNumber: 77, 96 columnNumber: 13 97 }, this) }, void 0, false, { 98 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 99 lineNumber: 76, 100 columnNumber: 11 101 }, this) 102 ] }, void 0, true, { 103 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 104 lineNumber: 70, 105 columnNumber: 9 106 }, this) }, void 0, false, { 107 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 108 lineNumber: 69, 109 columnNumber: 7 110 }, this), 111 /* @__PURE__ */ jsxDEV("div", { className: "w-3/5 p-10 bg-white rounded-tl-3xl shadow-md", children: /* @__PURE__ */ jsxDEV("div", { className: "max-w-2xl mx-auto", children: [
112 /* @__PURE__ */ jsxDEV("h1", { className: "text-2xl font-bold text-gray-800 mb-8 flex items-center", children: [ 113 /* @__PURE__ */ jsxDEV(Calendar, { className: "mr-3 text-[#295567]", size: 24 }, void 0, false, { 114 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 115 lineNumber: 86, 116 columnNumber: 13 117 }, this), 118 "Your Sessions" 119 ] }, void 0, true, { 120 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 121 lineNumber: 85, 122 columnNumber: 11 123 }, this), 124 /* @__PURE__ */ jsxDEV("div", { className: "bg-[#FAFAF9] rounded-xl shadow-sm p-6", children: [ 125 /* @__PURE__ */ jsxDEV("h2", { className: "text-lg font-bold text-gray-700 mb-4 flex items-center", children: [ 126 /* @__PURE__ */ jsxDEV(CheckCircle, { className: "mr-2 text-[#295567]", size: 20 }, void 0, false, { 127 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 128 lineNumber: 94, 129 columnNumber: 15 130 }, this), 131 "Latest Session" 132 ] }, void 0, true, { 133 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 134 lineNumber: 93, 135 columnNumber: 13 136 }, this), 137 latestSession ? /* @__PURE__ */ jsxDEV("div", { className: "bg-white rounded-xl p-4 mb-6 shadow-sm border border-gray-100 transform transition-transform hover:scale-[1.01]", children: /* @__PURE__ */ jsxDEV("div", { className: "flex justify-between items-center", children: [
138 /* @__PURE__ */ jsxDEV("div", { children: [ 139 /* @__PURE__ */ jsxDEV("div", { className: "flex items-center mb-2", children: /* @__PURE__ */ jsxDEV("p", { className: "text-gray-700 font-semibold", children: [ 140 "Session ID: ", 141 /* @__PURE__ */ jsxDEV("span", { className: "text-[#295567]", children: [ 142 "#", 143 latestSession._id ? latestSession._id.slice(-6) : "" 144 ] }, void 0, true, { 145 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 146 lineNumber: 103, 147 columnNumber: 78 148 }, this) 149 ] }, void 0, true, { 150 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 151 lineNumber: 103, 152 columnNumber: 23 153 }, this) }, void 0, false, { 154 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 155 lineNumber: 102, 156 columnNumber: 21 157 }, this),
158 /* @__PURE__ */ jsxDEV("div", { className: "flex items-center text-gray-600 text-sm", children: [ 159 /* @__PURE__ */ jsxDEV(Calendar, { size: 14, className: "mr-1 text-[#295567]" }, void 0, false, { 160 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 161 lineNumber: 106, 162 columnNumber: 23 163 }, this), 164 /* @__PURE__ */ jsxDEV("span", { className: "mr-3", children: formatDate(latestSession.date) }, void 0, false, { 165 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 166 lineNumber: 107, 167 columnNumber: 23 168 }, this), 169 /* @__PURE__ */ jsxDEV(Clock, { size: 14, className: "mr-1 text-[#295567]" }, void 0, false, { 170 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 171 lineNumber: 108, 172 columnNumber: 23 173 }, this), 174 /* @__PURE__ */ jsxDEV("span", { children: latestSession.time || "" }, void 0, false, { 175 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 176 lineNumber: 109, 177 columnNumber: 23 178 }, this) 179 ] }, void 0, true, { 180 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 181 lineNumber: 105, 182 columnNumber: 21 183 }, this) 184 ] }, void 0, true, { 185 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 186 lineNumber: 101, 187 columnNumber: 19 188 }, this),
189 /* @__PURE__ */ jsxDEV( 190 "button", 191 { 192 className: "bg-gradient-to-r from-[#295567] to-[#295567]/80 hover:from-[#295567]/90 hover:to-[#295567] text-white font-medium px-5 py-2 rounded-lg transition shadow-sm flex items-center", 193 onClick: () => setSession(latestSession._id), 194 children: [ 195 /* @__PURE__ */ jsxDEV("span", { children: "Start" }, void 0, false, { 196 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 197 lineNumber: 116, 198 columnNumber: 21 199 }, this), 200 /* @__PURE__ */ jsxDEV(ArrowRight, { size: 16, className: "ml-1" }, void 0, false, { 201 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 202 lineNumber: 117, 203 columnNumber: 21 204 }, this) 205 ] 206 }, 207 void 0, 208 true, 209 { 210 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 211 lineNumber: 112, 212 columnNumber: 19 213 }, 214 this 215 ) 216 ] }, void 0, true, { 217 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 218 lineNumber: 100, 219 columnNumber: 17 220 }, this) }, void 0, false, { 221 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 222 lineNumber: 99, 223 columnNumber: 13 224 }, this) : /* @__PURE__ */ jsxDEV("div", { className: "bg-white rounded-xl p-4 mb-6 text-center text-gray-500 shadow-sm border border-gray-100", children: "No latest session available" }, void 0, false, { 225 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 226 lineNumber: 122, 227 columnNumber: 13 228 }, this),
229 /* @__PURE__ */ jsxDEV("h2", { className: "text-lg font-bold text-gray-700 mb-4 mt-6 flex items-center", children: [ 230 /* @__PURE__ */ jsxDEV(Clock, { className: "mr-2 text-[#295567]", size: 20 }, void 0, false, { 231 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 232 lineNumber: 129, 233 columnNumber: 15 234 }, this), 235 "Upcoming Sessions" 236 ] }, void 0, true, { 237 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 238 lineNumber: 128, 239 columnNumber: 13 240 }, this), 241 /* @__PURE__ */ jsxDEV("div", { className: "space-y-3 mb-6 max-h-64 overflow-y-auto pr-2 custom-scrollbar", children: upcomingSessions.length > 0 ? upcomingSessions.map( 242 (session, index) => /* @__PURE__ */ jsxDEV( 243 "div", 244 { 245 className: "bg-white rounded-xl p-4 shadow-sm border border-gray-100 transform transition-transform hover:scale-[1.01]", 246 style: { 247 animationName: "fadeIn", 248 animationDuration: "0.5s", 249 animationDelay: `${index * 0.05}s`, 250 animationFillMode: "both" 251 }, 252 children: /* @__PURE__ */ jsxDEV("div", { className: "flex justify-between items-center", children: [
253 /* @__PURE__ */ jsxDEV("div", { children: [ 254 /* @__PURE__ */ jsxDEV("div", { className: "flex items-center mb-2", children: /* @__PURE__ */ jsxDEV("p", { className: "text-gray-700 font-semibold", children: [ 255 "Session ID: ", 256 /* @__PURE__ */ jsxDEV("span", { className: "text-[#295567]", children: [ 257 "#", 258 session._id ? session._id.slice(-6) : "" 259 ] }, void 0, true, { 260 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 261 lineNumber: 149, 262 columnNumber: 82 263 }, this) 264 ] }, void 0, true, { 265 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 266 lineNumber: 149, 267 columnNumber: 27 268 }, this) }, void 0, false, { 269 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 270 lineNumber: 148, 271 columnNumber: 25 272 }, this),
273 /* @__PURE__ */ jsxDEV("div", { className: "flex items-center text-gray-600 text-sm", children: [ 274 /* @__PURE__ */ jsxDEV(Calendar, { size: 14, className: "mr-1 text-[#295567]" }, void 0, false, { 275 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 276 lineNumber: 152, 277 columnNumber: 27 278 }, this), 279 /* @__PURE__ */ jsxDEV("span", { className: "mr-3", children: formatDate(session.date) }, void 0, false, { 280 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 281 lineNumber: 153, 282 columnNumber: 27 283 }, this), 284 /* @__PURE__ */ jsxDEV(Clock, { size: 14, className: "mr-1 text-[#295567]" }, void 0, false, { 285 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 286 lineNumber: 154, 287 columnNumber: 27 288 }, this),
289 /* @__PURE__ */ jsxDEV("span", { children: session.time || "" }, void 0, false, { 290 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 291 lineNumber: 155, 292 columnNumber: 27 293 }, this) 294 ] }, void 0, true, { 295 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 296 lineNumber: 151, 297 columnNumber: 25 298 }, this) 299 ] }, void 0, true, { 300 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 301 lineNumber: 147, 302 columnNumber: 23 303 }, this), 304 /* @__PURE__ */ jsxDEV(ChevronRight, { size: 20, className: "text-gray-400" }, void 0, false, { 305 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 306 lineNumber: 158, 307 columnNumber: 23 308 }, this) 309 ] }, void 0, true, { 310 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 311 lineNumber: 146, 312 columnNumber: 21 313 }, this) 314 }, 315 session._id, 316 false, 317 { 318 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 319 lineNumber: 136, 320 columnNumber: 15 321 }, 322 this 323 ) 324 ) : /* @__PURE__ */ jsxDEV("div", { className: "bg-white rounded-xl p-4 text-center text-gray-500 shadow-sm border border-gray-100", children: "No upcoming sessions available" }, void 0, false, { 325 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 326 lineNumber: 163, 327 columnNumber: 15 328 }, this) }, void 0, false, { 329 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 330 lineNumber: 133, 331 columnNumber: 13 332 }, this),
333 /* @__PURE__ */ jsxDEV(Link, { to: "../schedule", className: "block mt-8", children: /* @__PURE__ */ jsxDEV( 334 "button", 335 { 336 className: "w-full bg-gradient-to-r from-[#295567] to-[#295567]/80 hover:from-[#295567]/90 hover:to-[#295567] text-white font-medium py-3 rounded-lg transition shadow-sm flex items-center justify-center", 337 children: [ 338 /* @__PURE__ */ jsxDEV(PlusCircle, { size: 18, className: "mr-2" }, void 0, false, { 339 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 340 lineNumber: 174, 341 columnNumber: 17 342 }, this), 343 "Create New Session" 344 ] 345 }, 346 void 0, 347 true, 348 { 349 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 350 lineNumber: 171, 351 columnNumber: 15 352 }, 353 this 354 ) }, void 0, false, { 355 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 356 lineNumber: 170, 357 columnNumber: 13 358 }, this) 359 ] }, void 0, true, { 360 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 361 lineNumber: 91, 362 columnNumber: 11 363 }, this) 364 ] }, void 0, true, { 365 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 366 lineNumber: 84, 367 columnNumber: 9 368 }, this) }, void 0, false, { 369 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 370 lineNumber: 83, 371 columnNumber: 7 372 }, this), 373 /* @__PURE__ */ jsxDEV("style", { jsx: true, children: ` 374 .custom-scrollbar::-webkit-scrollbar {
375 width: 6px; 376 } 377 378 .custom-scrollbar::-webkit-scrollbar-track { 379 background: #f1f1f1; 380 border-radius: 10px; 381 } 382 383 .custom-scrollbar::-webkit-scrollbar-thumb { 384 background: #ccc; 385 border-radius: 10px; 386 } 387 388 .custom-scrollbar::-webkit-scrollbar-thumb:hover { 389 background: #bbb; 390 } 391 392 @keyframes fadeIn { 393 from { opacity: 0; transform: translateY(10px); } 394 to { opacity: 1; transform: translateY(0); } 395 } 396 397 @keyframes pageTransition { 398 0% { opacity: 0; transform: translateY(10px); } 399 100% { opacity: 1; transform: translateY(0); } 400 } 401 ` }, void 0, false, { 402 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 403 lineNumber: 183, 404 columnNumber: 7 405 }, this) 406 ] }, void 0, true, { 407 fileName: "/doctors-dashboard/src/assets/components/SessionList.jsx", 408 lineNumber: 67, 409 columnNumber: 5 410 }, this); 411}; 412_s(SessionList, "F9WEqimzy5eC2CTsmGVBI3CFm7I=", false, function() { 413 return [useUser]; 414}); 415_c = SessionList; 416export default SessionList; 417var _c; 418$RefreshReg$(_c, "SessionList"); 419if (import.meta.hot && !inWebWorker) { 420 window.$RefreshReg$ = prevRefreshReg; 421 window.$RefreshSig$ = prevRefreshSig; 422} 423if (import.meta.hot && !inWebWorker) { 424 RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => { 425 RefreshRuntime.registerExportsForReactRefresh("/doctors-dashboard/src/assets/components/SessionList.jsx", currentExports); 426 import.meta.hot.accept((nextExports) => { 427 if (!nextExports) return; 428 const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate("/doctors-dashboard/src/assets/components/SessionList.jsx", currentExports, nextExports); 429 if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage); 430 }); 431 }); 432} 433 434//# sourceMappingURL=data:application/json;base64,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0FBQUE7QUFBQTtBQUFBLHFCQWFBO0FBQUE7QUFBQSxZQXRCS0UsUUFBUUg7QUFBQUEsWUFEZjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFVBd0JBO0FBQUEsUUFDRCxJQUVELHVCQUFDLFNBQUksV0FBVSxzRkFBcUYsOENBQXBHO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFFQSxLQWhDSjtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBa0NBO0FBQUEsUUFHQSx1QkFBQyxRQUFLLElBQUcsZUFBYyxXQUFVLGNBQy9CO0FBQUEsVUFBQztBQUFBO0FBQUEsWUFDQyxXQUFVO0FBQUEsWUFFVjtBQUFBLHFDQUFDLGNBQVcsTUFBTSxJQUFJLFdBQVUsVUFBaEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxxQkFBc0M7QUFBQSxjQUFHO0FBQUE7QUFBQTtBQUFBLFVBSDNDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQUtBLEtBTkY7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQU9BO0FBQUEsV0F0RkY7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQXVGQTtBQUFBLFNBOUZGO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0ErRkEsS0FoR0Y7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQWlHQTtBQUFBLElBR0EsdUJBQUMsV0FBTSxLQUFHLE1BQUU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQUFaO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0E0QkU7QUFBQSxPQWhKSjtBQUFBO0FBQUE7QUFBQTtBQUFBLFNBaUpBO0FBRUo7QUFBRTNCLEdBOU1JRixhQUFXO0FBQUEsVUFNRVIsT0FBTztBQUFBO0FBQUE4QyxLQU5wQnRDO0FBZ05OLGVBQWVBO0FBQVksSUFBQXNDO0FBQUFDLGFBQUFELElBQUEiLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsImdldFNlc3Npb25zQnlEb2N0b3IiLCJ1c2VVc2VyIiwiTGluayIsIkNhbGVuZGFyIiwiQ2xvY2siLCJDaGVja0NpcmNsZSIsIlBsdXNDaXJjbGUiLCJBcnJvd1JpZ2h0IiwiQ2hldnJvblJpZ2h0IiwiU2Vzc2lvbkxpc3QiLCJzZXRTZXNzaW9uIiwiX3MiLCJzZXNzaW9uc0RhdGEiLCJzZXRTZXNzaW9uc0RhdGEiLCJsYXRlc3RTZXNzaW9uIiwic2V0TGF0ZXN0U2Vzc2lvbiIsInVwY29taW5nU2Vzc2lvbnMiLCJzZXRVcGNvbWluZ1Nlc3Npb25zIiwiaXNMb2FkaW5nIiwic2V0SXNMb2FkaW5nIiwidXNlciIsImNsZXJrSWQiLCJpZCIsImZldGNoU2Vzc2lvbnMiLCJkYXRhIiwiY29uc29sZSIsImxvZyIsImVycm9yIiwibGVuZ3RoIiwic2xpY2UiLCJmb3JtYXREYXRlIiwiZGF0ZVN0cmluZyIsImRhdGUiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwieWVhciIsIm1vbnRoIiwiZGF5IiwiX2lkIiwidGltZSIsIm1hcCIsInNlc3Npb24iLCJpbmRleCIsImFuaW1hdGlvbk5hbWUiLCJhbmltYXRpb25EdXJhdGlvbiIsImFuaW1hdGlvbkRlbGF5IiwiYW5pbWF0aW9uRmlsbE1vZGUiLCJfYyIsIiRSZWZyZXNoUmVnJCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJTZXNzaW9uTGlzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBnZXRTZXNzaW9uc0J5RG9jdG9yIH0gZnJvbSAnLi4vYXBpL2RvY3RvcnNBUEknO1xyXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSBcIkBjbGVyay9jbGVyay1yZWFjdFwiO1xyXG5pbXBvcnQgeyBMaW5rIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XHJcbmltcG9ydCB7
434IENhbGVuZGFyLCBDbG9jaywgQ2hlY2tDaXJjbGUsIFBsdXNDaXJjbGUsIEFycm93UmlnaHQsIENoZXZyb25SaWdodCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XHJcblxyXG5jb25zdCBTZXNzaW9uTGlzdCA9ICh7IHNldFNlc3Npb24gfSkgPT4ge1xyXG4gIGNvbnN0IFtzZXNzaW9uc0RhdGEsIHNldFNlc3Npb25zRGF0YV0gPSB1c2VTdGF0ZShbXSk7XHJcbiAgY29uc3QgW2xhdGVzdFNlc3Npb24sIHNldExhdGVzdFNlc3Npb25dID0gdXNlU3RhdGUobnVsbCk7XHJcbiAgY29uc3QgW3VwY29taW5nU2Vzc2lvbnMsIHNldFVwY29taW5nU2Vzc2lvbnNdID0gdXNlU3RhdGUoW10pO1xyXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZSh0cnVlKTtcclxuICBcclxuICBjb25zdCB7IHVzZXIgfSA9IHVzZVVzZXIoKTtcclxuICBjb25zdCBjbGVya0lkID0gdXNlciA/IHVzZXIuaWQgOiBudWxsO1xyXG4gICBcclxuICBjb25zdCBmZXRjaFNlc3Npb25zID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgc2V0SXNMb2FkaW5nKHRydWUpO1xyXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0U2Vzc2lvbnNCeURvY3RvcihjbGVya0lkKTtcclxuICAgICAgY29uc29sZS5sb2coXCJTZXNzaW9ucyBkYXRhIGZldGNoZWQ6XCIsIGRhdGEpO1xyXG4gICAgICBzZXRTZXNzaW9uc0RhdGEoZGF0YSk7XHJcbiAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBzZXNzaW9uczonLCBlcnJvcik7XHJcbiAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XHJcbiAgICB9XHJcbiAgfTtcclxuICBcclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgZmV0Y2hTZXNzaW9ucygpO1xyXG4gIH0sIFtjbGVya0lkXSk7XHJcbiAgXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGlmIChzZXNzaW9uc0RhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAvLyBTZXQgbGF0ZXN0IHNlc3Npb24gdG8gdGhlIGZpcnN0IG9uZVxyXG4gICAgICBzZXRMYXRlc3RTZXNzaW9uKHNlc3Npb25zRGF0YVswXSk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBTZXQgdXBjb21pbmcgc2Vzc2lvbnMgdG8gYWxsIGV4Y2VwdCB0aGUgZmlyc3Qgb25lXHJcbiAgICAgIHNldFVwY29taW5nU2Vzc2lvbnMoc2Vzc2lvbnNEYXRhLnNsaWNlKDEpKTtcclxuICAgICAgXHJcbiAgICAgIGNvbnNvbGUubG9nKFwiTGF0ZXN0IHNlc3Npb246XCIsIHNlc3Npb25zRGF0YVswXSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVXBjb21pbmcgc2Vzc2lvbnM6XCIsIHNlc3Npb25zRGF0YS5zbGljZSgxKSk7XHJcbiAgICB9XHJcbiAgfSwgW3Nlc3Npb25zRGF0YV0pO1xyXG5cclxuICAvLyBGb3JtYXQgZGF0ZSBmdW5jdGlvblxyXG4gIGNvbnN0IGZvcm1hdERhdGUgPSAoZGF0ZVN0cmluZykgPT4ge1xyXG4gICAgaWYgKCFkYXRlU3RyaW5nKSByZXR1cm4gXCJcIjtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlU3RyaW5nKTtcclxuICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tVVMnLCB7IFxyXG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXHJcbiAgICAgIG1vbnRoOiAnc2hvcnQnLCBcclxuICAgICAgZGF5OiAnbnVtZXJpYycgXHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBpZiAoaXNMb2FkaW5nKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGgtZnVsbCB3LWZ1bGwgYmctd2hpdGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgaC0xNiB3LTE2IGJvcmRlci10LTQgYm9yZGVyLWItNCBib3JkZXItWyMyOTU1NjddXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBiZy1bI0ZBRkFGOV0gbWluLWgtc2NyZWVuIGZvbnQtWydSYWxld2F5JyxzYW5zLXNlcmlmXSBhbmltYXRlLXBhZ2VUcmFuc2l0aW9uXCI+XHJcbiAgICAgIHsvKiBMZWZ0IHNpZGUgd2l0aCBpbGx1c3RyYXRpb24gKi99XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0yLzUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC04XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICBzcmM9XCIvc3JjL2Fzc2V0cy9pbWFnZXMvaW1nLnBuZ1wiXHJcbiAgICAgICAgICAgIGFsdD1cIkRhdGEgYW5hbHlzdCB3aXRoIGNoYXJ0c1wiXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInctOTYgaC1hdXRvXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIC1ib3R0b20tNCAtcmlnaHQtNCBiZy1bIzI5NTU2N10gdGV4dC13aGl0ZSBweC02IHB5LTMgcm91bmRlZC14bCBzaGFkb3ctbGdcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bVwiPk1hbmFnZSB5b3VyIHNlc3Npb25zIGVmZmljaWVudGx5PC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBcclxuICAgICAgey8qIFJpZ2h0IHNpZGUgd2l0aCBzZXNzaW9ucyBpbmZvcm1hdGlvbiAqL31cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMvNSBwLTEwIGJnLXdoaXRlIHJvdW5kZWQtdGwtM3hsIHNoYWRvdy1tZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctMnhsIG14LWF1dG9cIj5cclxuICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ncmF5LTgwMCBtYi04IGZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxDYWxlbmRhciBjbGFzc05hbWU9XCJtci0zIHRleHQtWyMyOTU1NjddXCIgc2l6ZT17MjR9IC8+XHJcbiAgICAgICAgICAgIFlvdXIgU2Vzc2lvbnNcclxuICAgICAgICAgIDwvaDE+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgI
434HsvKiBXaGl0ZSBjb250YWluZXIgKi99XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLVsjRkFGQUY5XSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTZcIj5cclxuICAgICAgICAgICAgey8qIExhdGVzdCBTZXNzaW9uIFNlY3Rpb24gKi99XHJcbiAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtYm9sZCB0ZXh0LWdyYXktNzAwIG1iLTQgZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8Q2hlY2tDaXJjbGUgY2xhc3NOYW1lPVwibXItMiB0ZXh0LVsjMjk1NTY3XVwiIHNpemU9ezIwfSAvPlxyXG4gICAgICAgICAgICAgIExhdGVzdCBTZXNzaW9uXHJcbiAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB7bGF0ZXN0U2Vzc2lvbiA/IChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgcC00IG1iLTYgc2hhZG93LXNtIGJvcmRlciBib3JkZXItZ3JheS0xMDAgdHJhbnNmb3JtIHRyYW5zaXRpb24tdHJhbnNmb3JtIGhvdmVyOnNjYWxlLVsxLjAxXVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS03MDAgZm9udC1zZW1pYm9sZFwiPlNlc3Npb24gSUQ6IDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWyMyOTU1NjddXCI+I3tsYXRlc3RTZXNzaW9uLl9pZCA/IGxhdGVzdFNlc3Npb24uX2lkLnNsaWNlKC02KSA6IFwiXCJ9PC9zcGFuPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHRleHQtZ3JheS02MDAgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPENhbGVuZGFyIHNpemU9ezE0fSBjbGFzc05hbWU9XCJtci0xIHRleHQtWyMyOTU1NjddXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1yLTNcIj57Zm9ybWF0RGF0ZShsYXRlc3RTZXNzaW9uLmRhdGUpfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxDbG9jayBzaXplPXsxNH0gY2xhc3NOYW1lPVwibXItMSB0ZXh0LVsjMjk1NTY3XVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57bGF0ZXN0U2Vzc2lvbi50aW1lIHx8IFwiXCJ9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy1ncmFkaWVudC10by1yIGZyb20tWyMyOTU1NjddIHRvLVsjMjk1NTY3XS84MCBob3Zlcjpmcm9tLVsjMjk1NTY3XS85MCBob3Zlcjp0by1bIzI5NTU2N10gdGV4dC13aGl0ZSBmb250LW1lZGl1bSBweC01IHB5LTIgcm91bmRlZC1sZyB0cmFuc2l0aW9uIHNoYWRvdy1zbSBmbGV4IGl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2Vzc2lvbiggbGF0ZXN0U2Vzc2lvbi5faWQgKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlN0YXJ0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxBcnJvd1JpZ2h0IHNpemU9ezE2fSBjbGFzc05hbWU9XCJtbC0xXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgcC00IG1iLTYgdGV4dC1jZW50ZXIgdGV4dC1ncmF5LTUwMCBzaGFkb3ctc20gYm9yZGVyIGJvcmRlci1ncmF5LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgTm8gbGF0ZXN0IHNlc3Npb24gYXZhaWxhYmxlXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB7LyogVXBjb21pbmcgU2Vzc2lvbnMgU2VjdGlvbiAqL31cclxuICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1ib2xkIHRleHQtZ3JheS03MDAgbWItNCBtdC02IGZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPENsb2NrIGNsYXNzTmFtZT1cIm1yLTIgdGV4dC1bIzI5NTU2N11cIiBzaXplPXsyMH0gLz5cclxuICAgICAgICAgICAgICBVcGNvbWluZyBTZXNzaW9uc1xyXG4gICAgICAgICAgICA8L2gyPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTMgbWItNiBtYXgtaC02NCBvdmVyZmxvdy15LWF1dG8gcHItMiBjdXN0b20tc2Nyb2xsYmFyXCI+XHJcbiAgICAgICAgICAgICAge3VwY29taW5nU2Vzc2lvbnMubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgIHVwY29taW5nU2Vzc2lvbnMubWFwKChzZXNzaW9uLCBpbmRleCkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgIGtleT17c2Vzc2lvbi5faWR9IFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgcC00IHNoYWRvdy1zbSBib3JkZXIgYm9yZGVyLWdyYXktMTAwIHRyYW5zZm9ybSB0cmFuc2l0aW9uLXRyYW5zZm9ybSBob3ZlcjpzY2FsZS1bMS4wMV1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25OYW1lOiAnZmFkZUluJyxcclxuICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uOiAnMC41cycsXHJcbiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25EZWxheTogYCR7aW5kZXggKiAwLjA1fXNgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uRmlsbE1vZGU6ICdib3RoJ1xyXG4gICAgICAgICAgICAgICAgICAgI
434H19XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTcwMCBmb250LXNlbWlib2xkXCI+U2Vzc2lvbiBJRDogPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1bIzI5NTU2N11cIj4je3Nlc3Npb24uX2lkID8gc2Vzc2lvbi5faWQuc2xpY2UoLTYpIDogXCJcIn08L3NwYW4+PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LWdyYXktNjAwIHRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FsZW5kYXIgc2l6ZT17MTR9IGNsYXNzTmFtZT1cIm1yLTEgdGV4dC1bIzI5NTU2N11cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1yLTNcIj57Zm9ybWF0RGF0ZShzZXNzaW9uLmRhdGUpfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2xvY2sgc2l6ZT17MTR9IGNsYXNzTmFtZT1cIm1yLTEgdGV4dC1bIzI5NTU2N11cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPntzZXNzaW9uLnRpbWUgfHwgXCJcIn08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IHNpemU9ezIwfSBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNDAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIHJvdW5kZWQteGwgcC00IHRleHQtY2VudGVyIHRleHQtZ3JheS01MDAgc2hhZG93LXNtIGJvcmRlciBib3JkZXItZ3JheS0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgTm8gdXBjb21pbmcgc2Vzc2lvbnMgYXZhaWxhYmxlXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHsvKiBDcmVhdGUgTmV3IFNlc3Npb24gQnV0dG9uICovfVxyXG4gICAgICAgICAgICA8TGluayB0bz0nLi4vc2NoZWR1bGUnIGNsYXNzTmFtZT1cImJsb2NrIG10LThcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1bIzI5NTU2N10gdG8tWyMyOTU1NjddLzgwIGhvdmVyOmZyb20tWyMyOTU1NjddLzkwIGhvdmVyOnRvLVsjMjk1NTY3XSB0ZXh0LXdoaXRlIGZvbnQtbWVkaXVtIHB5LTMgcm91bmRlZC1sZyB0cmFuc2l0aW9uIHNoYWRvdy1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFBsdXNDaXJjbGUgc2l6ZT17MTh9IGNsYXNzTmFtZT1cIm1yLTJcIiAvPlxyXG4gICAgICAgICAgICAgICAgQ3JlYXRlIE5ldyBTZXNzaW9uXHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvTGluaz4gIFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgey8qIEN1c3RvbSBTY3JvbGxiYXIgYW5kIEFuaW1hdGlvbnMgKi99XHJcbiAgICAgIDxzdHlsZSBqc3g+e2BcclxuICAgICAgICAuY3VzdG9tLXNjcm9sbGJhcjo6LXdlYmtpdC1zY3JvbGxiYXIge1xyXG4gICAgICAgICAgd2lkdGg6IDZweDtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLmN1c3RvbS1zY3JvbGxiYXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcclxuICAgICAgICAgIGJhY2tncm91bmQ6ICNmMWYxZjE7XHJcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAuY3VzdG9tLXNjcm9sbGJhcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xyXG4gICAgICAgICAgYmFja2dyb3VuZDogI2NjYztcclxuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC5jdXN0b20tc2Nyb2xsYmFyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAjYmJiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBAa2V5ZnJhbWVzIGZhZGVJbiB7XHJcbiAgICAgICAgICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpOyB9XHJcbiAgICAgICAgICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBAa2V5ZnJhbWVzIHBhZ2VUcmFuc2l0aW9uIHtcclxuICAgICAgICAgIDAlIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpOyB9XHJcbiAgICAgICAgICAxMDAlIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9XHJcbiAgICAgICAgfVxyXG4gICAgICBgfTwvc3R5bGU+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU2Vzc2lvbkxpc3Q7Il0sImZpbGUiOiIvZG9jdG9ycy1kYXNoYm9hcmQvc3JjL2Fzc2V0cy9jb21wb25lbnRzL1Nlc3Npb25MaXN0LmpzeCJ9
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.