1import __vite__cjsImport0_react_jsxRuntime from "/@fs/home/runner/workspace/node_modules/.vite/deps/react_jsx-runtime.js?v=3bc92834"; const jsx = __vite__cjsImport0_react_jsxRuntime["jsx"]; const jsxs = __vite__cjsImport0_react_jsxRuntime["jsxs"]; 2import { Card, CardContent, CardHeader, CardTitle } from "/src/components/ui/card.tsx"; 3import { Badge } from "/src/components/ui/badge.tsx"; 4import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "/src/components/ui/table.tsx"; 5import { AlertTriangle, Shield, Clock, CheckCircle } from "/@fs/home/runner/workspace/node_modules/.vite/deps/lucide-react.js?v=c62bd0b8"; 6export default function SupplyChainMonitoring({ supplyChainAlerts }) { 7 const getSeverityColor = (severity) => { 8 switch (severity.toLowerCase()) { 9 case "critical": 10 return "bg-red-500/20 text-red-400 border-red-500/30"; 11 case "high": 12 return "bg-orange-500/20 text-orange-400 border-orange-500/30"; 13 case "medium": 14 return "bg-yellow-500/20 text-yellow-400 border-yellow-500/30"; 15 case "low": 16 return "bg-green-500/20 text-green-400 border-green-500/30"; 17 default: 18 return "bg-gray-500/20 text-gray-400 border-gray-500/30"; 19 } 20 }; 21 const getStatusIcon = (status) => { 22 switch (status.toLowerCase()) { 23 case "active": 24 return /* @__PURE__ */ jsx(AlertTriangle, { className: "h-4 w-4 text-red-400" }); 25 case "investigating": 26 return /* @__PURE__ */ jsx(Clock, { className: "h-4 w-4 text-yellow-400" }); 27 case "resolved": 28 return /* @__PURE__ */ jsx(CheckCircle, { className: "h-4 w-4 text-green-400" }); 29 default: 30 return /* @__PURE__ */ jsx(Shield, { className: "h-4 w-4 text-gray-400" }); 31 } 32 }; 33 const getAlertTypeColor = (alertType) => { 34 switch (alertType.toLowerCase()) { 35 case "security incident": 36 return "text-red-400"; 37 case "service disruption": 38 return "text-orange-400"; 39 case "compliance violation": 40 return "text-yellow-400"; 41 case "data breach": 42 return "text-red-500"; 43 default: 44 return "text-gray-400"; 45 } 46 }; 47 const activeAlerts = supplyChainAlerts.filter((alert) => alert.status === "active"); 48 const totalAlerts = supplyChainAlerts.length; 49 const criticalAlerts = supplyChainAlerts.filter((alert) => alert.severity === "critical").length; 50 const resolvedAlerts = supplyChainAlerts.filter((alert) => alert.status === "resolved").length; 51 return /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [ 52 /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-4", children: [
53 /* @__PURE__ */ jsxs(Card, { className: "bg-gray-800/50 border-red-500/20", children: [ 54 /* @__PURE__ */ jsx(CardHeader, { className: "pb-2", children: /* @__PURE__ */ jsxs(CardTitle, { className: "text-sm text-gray-400 flex items-center gap-2", children: [ 55 /* @__PURE__ */ jsx(AlertTriangle, { className: "h-4 w-4" }), 56 "Active Alerts" 57 ] }) }), 58 /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("div", { className: "text-2xl font-bold text-red-400", children: activeAlerts.length }) }) 59 ] }), 60 /* @__PURE__ */ jsxs(Card, { className: "bg-gray-800/50 border-yellow-500/20", children: [ 61 /* @__PURE__ */ jsx(CardHeader, { className: "pb-2", children: /* @__PURE__ */ jsxs(CardTitle, { className: "text-sm text-gray-400 flex items-center gap-2", children: [ 62 /* @__PURE__ */ jsx(Shield, { className: "h-4 w-4" }), 63 "Total Alerts" 64 ] }) }), 65 /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("div", { className: "text-2xl font-bold text-yellow-400", children: totalAlerts }) }) 66 ] }),
67 /* @__PURE__ */ jsxs(Card, { className: "bg-gray-800/50 border-red-500/20", children: [ 68 /* @__PURE__ */ jsx(CardHeader, { className: "pb-2", children: /* @__PURE__ */ jsxs(CardTitle, { className: "text-sm text-gray-400 flex items-center gap-2", children: [ 69 /* @__PURE__ */ jsx(AlertTriangle, { className: "h-4 w-4" }), 70 "Critical" 71 ] }) }), 72 /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("div", { className: "text-2xl font-bold text-red-400", children: criticalAlerts }) }) 73 ] }), 74 /* @__PURE__ */ jsxs(Card, { className: "bg-gray-800/50 border-green-500/20", children: [ 75 /* @__PURE__ */ jsx(CardHeader, { className: "pb-2", children: /* @__PURE__ */ jsxs(CardTitle, { className: "text-sm text-gray-400 flex items-center gap-2", children: [ 76 /* @__PURE__ */ jsx(CheckCircle, { className: "h-4 w-4" }), 77 "Resolved" 78 ] }) }), 79 /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("div", { className: "text-2xl font-bold text-green-400", children: resolvedAlerts }) }) 80 ] }) 81 ] }), 82 /* @__PURE__ */ jsxs(Card, { className: "bg-gray-800/50 border-green-500/20", children: [
83 /* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsx(CardTitle, { className: "text-green-400", children: "Supply Chain Security Alerts" }) }), 84 /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs(Table, { children: [ 85 /* @__PURE__ */ jsx(TableHeader, { children: /* @__PURE__ */ jsxs(TableRow, { className: "border-b border-green-500/20", children: [ 86 /* @__PURE__ */ jsx(TableHead, { className: "text-green-400", children: "Vendor" }), 87 /* @__PURE__ */ jsx(TableHead, { className: "text-green-400", children: "Alert Type" }), 88 /* @__PURE__ */ jsx(TableHead, { className: "text-green-400", children: "Severity" }), 89 /* @__PURE__ */ jsx(TableHead, { className: "text-green-400", children: "Status" }), 90 /* @__PURE__ */ jsx(TableHead, { className: "text-green-400", children: "Description" }), 91 /* @__PURE__ */ jsx(TableHead, { className: "text-green-400", children: "Affected Services" }),
92 /* @__PURE__ */ jsx(TableHead, { className: "text-green-400", children: "Detected" }) 93 ] }) }), 94 /* @__PURE__ */ jsx(TableBody, { children: supplyChainAlerts.map((alert) => /* @__PURE__ */ jsxs(TableRow, { className: "border-b border-gray-700/50 hover:bg-gray-800/30", children: [ 95 /* @__PURE__ */ jsx(TableCell, { className: "font-mono text-green-300", children: alert.vendorName }), 96 /* @__PURE__ */ jsx(TableCell, { className: getAlertTypeColor(alert.alertType), children: alert.alertType }), 97 /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(Badge, { className: getSeverityColor(alert.severity), children: alert.severity.toUpperCase() }) }), 98 /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [ 99 getStatusIcon(alert.status), 100 /* @__PURE__ */ jsx("span", { className: "text-gray-300 capitalize", children: alert.status }) 101 ] }) }), 102 /* @__PURE__ */ jsx(TableCell, { className: "text-gray-300 max-w-xs truncate", children: alert.description }),
103 /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: alert.affectedServices?.map((service, index) => /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "text-xs text-blue-400 border-blue-500/30", children: service }, index)) || /* @__PURE__ */ jsx("span", { className: "text-gray-500", children: "None" }) }) }), 104 /* @__PURE__ */ jsx(TableCell, { className: "text-gray-400", children: new Date(alert.detectedAt).toLocaleDateString() }) 105 ] }, alert.id)) }) 106 ] }) }) }) 107 ] }), 108 /* @__PURE__ */ jsxs(Card, { className: "bg-gray-800/50 border-green-500/20", children: [ 109 /* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsx(CardTitle, { className: "text-green-400", children: "Recent Activity" }) }), 110 /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("div", { className: "space-y-4", children: supplyChainAlerts.slice(0, 5).map((alert, index) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4 p-3 bg-gray-900/50 rounded border border-gray-700/50", children: [
111 /* @__PURE__ */ jsx("div", { className: "flex-shrink-0", children: getStatusIcon(alert.status) }), 112 /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [ 113 /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-1", children: [ 114 /* @__PURE__ */ jsx("span", { className: "font-mono text-green-300", children: alert.vendorName }), 115 /* @__PURE__ */ jsx(Badge, { className: getSeverityColor(alert.severity), size: "sm", children: alert.severity }) 116 ] }), 117 /* @__PURE__ */ jsx("p", { className: "text-sm text-gray-400", children: alert.description }) 118 ] }), 119 /* @__PURE__ */ jsx("div", { className: "text-xs text-gray-500", children: new Date(alert.detectedAt).toLocaleDateString() }) 120 ] }, alert.id)) }) }) 121 ] }) 122 ] }); 123} 124 125//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN1cHBseS1jaGFpbi1tb25pdG9yaW5nLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYXJkLCBDYXJkQ29udGVudCwgQ2FyZEhlYWRlciwgQ2FyZFRpdGxlIH0gZnJvbSBcIkAvY29tcG9uZW50cy91aS9jYXJkXCI7XG5pbXBvcnQgeyBCYWRnZSB9IGZyb20gXCJAL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IFRhYmxlLCBUYWJsZUJvZHksIFRhYmxlQ2VsbCwgVGFibGVIZWFkLCBUYWJsZUhlYWRlciwgVGFibGVSb3cgfSBmcm9tIFwiQC9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBBbGVydFRyaWFuZ2xlLCBTaGllbGQsIENsb2NrLCBDaGVja0NpcmNsZSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW50ZXJmYWNlIFN1cHBseUNoYWluQWxlcnQge1xuICBpZDogbnVtYmVyO1xuICB2ZW5kb3JOYW1lOiBzdHJpbmc7XG4gIGFsZXJ0VHlwZTogc3RyaW5nO1xuICBzZXZlcml0eTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgZGV0ZWN0ZWRBdDogc3RyaW5nO1xuICBhZmZlY3RlZFNlcnZpY2VzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIFN1cHBseUNoYWluTW9uaXRvcmluZ1Byb3BzIHtcbiAgc3VwcGx5Q2hhaW5BbGVydHM6IFN1cHBseUNoYWluQWxlcnRbXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU3VwcGx5Q2hhaW5Nb25pdG9yaW5nKHsgc3VwcGx5Q2hhaW5BbGVydHMgfTogU3VwcGx5Q2hhaW5Nb25pdG9yaW5nUHJvcHMpIHtcbiAgY29uc3QgZ2V0U2V2ZXJpdHlDb2xvciA9IChzZXZlcml0eTogc3RyaW5nKSA9PiB7XG4gICAgc3dpdGNoIChzZXZlcml0eS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlICdjcml0aWNhbCc6IHJldHVybiAnYmctcmVkLTUwMC8yMCB0ZXh0LXJlZC00MDAgYm9yZGVyLXJlZC01MDAvMzAnO1xuICAgICAgY2FzZSAnaGlnaCc6IHJldHVybiAnYmctb3JhbmdlLTUwMC8yMCB0ZXh0LW9yYW5nZS00MDAgYm9yZGVyLW9yYW5nZS01MDAvMzAnO1xuICAgICAgY2FzZSAnbWVkaXVtJzogcmV0dXJuICdiZy15ZWxsb3ctNTAwLzIwIHRleHQteWVsbG93LTQwMCBib3JkZXIteWVsbG93LTUwMC8zMCc7XG4gICAgICBjYXNlICdsb3cnOiByZXR1cm4gJ2JnLWdyZWVuLTUwMC8yMCB0ZXh0LWdyZWVuLTQwMCBib3JkZXItZ3JlZW4tNTAwLzMwJztcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAnYmctZ3JheS01MDAvMjAgdGV4dC1ncmF5LTQwMCBib3JkZXItZ3JheS01MDAvMzAnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRTdGF0dXNJY29uID0gKHN0YXR1czogc3RyaW5nKSA9PiB7XG4gICAgc3dpdGNoIChzdGF0dXMudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSAnYWN0aXZlJzogcmV0dXJuIDxBbGVydFRyaWFuZ2xlIGNsYXNzTmFtZT1cImgtNCB3LTQgdGV4dC1yZWQtNDAwXCIgLz47XG4gICAgICBjYXNlICdpbnZlc3RpZ2F0aW5nJzogcmV0dXJuIDxDbG9jayBjbGFzc05hbWU9XCJoLTQgdy00IHRleHQteWVsbG93LTQwMFwiIC8+O1xuICAgICAgY2FzZSAncmVzb2x2ZWQnOiByZXR1cm4gPENoZWNrQ2lyY2xlIGNsYXNzTmFtZT1cImgtNCB3LTQgdGV4dC1ncmVlbi00MDBcIiAvPjtcbiAgICAgIGRlZmF1bHQ6IHJldHVybiA8U2hpZWxkIGNsYXNzTmFtZT1cImgtNCB3LTQgdGV4dC1ncmF5LTQwMFwiIC8+O1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRBbGVydFR5cGVDb2xvciA9IChhbGVydFR5cGU6IHN0cmluZykgPT4ge1xuICAgIHN3aXRjaCAoYWxlcnRUeXBlLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ3NlY3VyaXR5IGluY2lkZW50JzogcmV0dXJuICd0ZXh0LXJlZC00MDAnO1xuICAgICAgY2FzZSAnc2VydmljZSBkaXNydXB0aW9uJzogcmV0dXJuICd0ZXh0LW9yYW5nZS00MDAnO1xuICAgICAgY2FzZSAnY29tcGxpYW5jZSB2aW9sYXRpb24nOiByZXR1cm4gJ3RleHQteWVsbG93LTQwMCc7XG4gICAgICBjYXNlICdkYXRhIGJyZWFjaCc6IHJldHVybiAndGV4dC1yZWQtNTAwJztcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAndGV4dC1ncmF5LTQwMCc7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFjdGl2ZUFsZXJ0cyA9IHN1cHBseUNoYWluQWxlcnRzLmZpbHRlcihhbGVydCA9PiBhbGVydC5zdGF0dXMgPT09ICdhY3RpdmUnKTtcbiAgY29uc3QgdG90YWxBbGVydHMgPSBzdXBwbHlDaGFpbkFsZXJ0cy5sZW5ndGg7XG4gIGNvbnN0IGNyaXRpY2FsQWxlcnRzID0gc3VwcGx5Q2hhaW5BbGVydHMuZmlsdGVyKGFsZXJ0ID0+IGFsZXJ0LnNldmVyaXR5ID09PSAnY3JpdGljYWwnKS5sZW5ndGg7XG4gIGNvbnN0IHJlc29sdmVkQWxlcnRzID0gc3VwcGx5Q2hhaW5BbGVydHMuZmlsdGVyKGFsZXJ0ID0+IGFsZXJ0LnN0YXR1cyA9PT0gJ3Jlc29sdmVkJykubGVuZ3RoO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTZcIj5cbiAgICAgIHsvKiBBbGVydCBTdW1tYXJ5IENhcmRzICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy00IGdhcC00XCI+XG4gICAgICAgIDxDYXJkIGNsYXNzTmFtZT1cImJnLWdyYXktODAwLzUwIGJvcmRlci1yZWQtNTAwLzIwXCI+XG4gICAgICAgICAgPENhcmRIZWFkZXIgY2x
125hc3NOYW1lPVwicGItMlwiPlxuICAgICAgICAgICAgPENhcmRUaXRsZSBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS00MDAgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPEFsZXJ0VHJpYW5nbGUgY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgIEFjdGl2ZSBBbGVydHNcbiAgICAgICAgICAgIDwvQ2FyZFRpdGxlPlxuICAgICAgICAgIDwvQ2FyZEhlYWRlcj5cbiAgICAgICAgICA8Q2FyZENvbnRlbnQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LXJlZC00MDBcIj57YWN0aXZlQWxlcnRzLmxlbmd0aH08L2Rpdj5cbiAgICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgICA8L0NhcmQ+XG5cbiAgICAgICAgPENhcmQgY2xhc3NOYW1lPVwiYmctZ3JheS04MDAvNTAgYm9yZGVyLXllbGxvdy01MDAvMjBcIj5cbiAgICAgICAgICA8Q2FyZEhlYWRlciBjbGFzc05hbWU9XCJwYi0yXCI+XG4gICAgICAgICAgICA8Q2FyZFRpdGxlIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTQwMCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICA8U2hpZWxkIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgICAgICAgICAgICBUb3RhbCBBbGVydHNcbiAgICAgICAgICAgIDwvQ2FyZFRpdGxlPlxuICAgICAgICAgIDwvQ2FyZEhlYWRlcj5cbiAgICAgICAgICA8Q2FyZENvbnRlbnQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LXllbGxvdy00MDBcIj57dG90YWxBbGVydHN9PC9kaXY+XG4gICAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgICAgPC9DYXJkPlxuXG4gICAgICAgIDxDYXJkIGNsYXNzTmFtZT1cImJnLWdyYXktODAwLzUwIGJvcmRlci1yZWQtNTAwLzIwXCI+XG4gICAgICAgICAgPENhcmRIZWFkZXIgY2xhc3NOYW1lPVwicGItMlwiPlxuICAgICAgICAgICAgPENhcmRUaXRsZSBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS00MDAgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPEFsZXJ0VHJpYW5nbGUgY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgIENyaXRpY2FsXG4gICAgICAgICAgICA8L0NhcmRUaXRsZT5cbiAgICAgICAgICA8L0NhcmRIZWFkZXI+XG4gICAgICAgICAgPENhcmRDb250ZW50PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1yZWQtNDAwXCI+e2NyaXRpY2FsQWxlcnRzfTwvZGl2PlxuICAgICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICAgIDwvQ2FyZD5cblxuICAgICAgICA8Q2FyZCBjbGFzc05hbWU9XCJiZy1ncmF5LTgwMC81MCBib3JkZXItZ3JlZW4tNTAwLzIwXCI+XG4gICAgICAgICAgPENhcmRIZWFkZXIgY2xhc3NOYW1lPVwicGItMlwiPlxuICAgICAgICAgICAgPENhcmRUaXRsZSBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS00MDAgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPENoZWNrQ2lyY2xlIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgICAgICAgICAgICBSZXNvbHZlZFxuICAgICAgICAgICAgPC9DYXJkVGl0bGU+XG4gICAgICAgICAgPC9DYXJkSGVhZGVyPlxuICAgICAgICAgIDxDYXJkQ29udGVudD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtZ3JlZW4tNDAwXCI+e3Jlc29sdmVkQWxlcnRzfTwvZGl2PlxuICAgICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICAgIDwvQ2FyZD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogQWxlcnRzIFRhYmxlICovfVxuICAgICAgPENhcmQgY2xhc3NOYW1lPVwiYmctZ3JheS04MDAvNTAgYm9yZGVyLWdyZWVuLTUwMC8yMFwiPlxuICAgICAgICA8Q2FyZEhlYWRlcj5cbiAgICAgICAgICA8Q2FyZFRpdGxlIGNsYXNzTmFtZT1cInRleHQtZ3JlZW4tNDAwXCI+U3VwcGx5IENoYWluIFNlY3VyaXR5IEFsZXJ0czwvQ2FyZFRpdGxlPlxuICAgICAgICA8L0NhcmRIZWFkZXI+XG4gICAgICAgIDxDYXJkQ29udGVudD5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm92ZXJmbG93LXgtYXV0b1wiPlxuICAgICAgICAgICAgPFRhYmxlPlxuICAgICAgICAgICAgICA8VGFibGVIZWFkZXI+XG4gICAgICAgICAgICAgICAgPFRhYmxlUm93IGNsYXNzTmFtZT1cImJvcmRlci1iIGJvcmRlci1ncmVlbi01MDAvMjBcIj5cbiAgICAgICAgICAgICAgICAgIDxUYWJsZUhlYWQgY2xhc3NOYW1lPVwidGV4dC1ncmVlbi00MDBcIj5WZW5kb3I8L1RhYmxlSGVhZD5cbiAgICAgICAgICAgICAgICAgIDxUYWJsZUhlYWQgY2xhc3NOYW1lPVwidGV4dC1ncmVlbi00MDBcIj5BbGVydCBUeXBlPC9UYWJsZUhlYWQ+XG4gICAgICAgICAgICAgICAgICA8VGFibGVIZWFkIGNsYXNzTmFtZT1cInRleHQtZ3JlZW4tNDAwXCI+U2V2ZXJpdHk8L1RhYmxlSGVhZD5cbiAgICAgICAgICAgICAgICAgIDxUYWJsZUhlYWQgY2xhc3NOYW1lPVwidGV4dC1ncmVlbi00MDBcIj5TdGF0dXM8L1RhYmxlSGVhZD5cbiAgICAgICAgICAgICAgICAgIDxUYWJsZUhlYWQgY2xhc3NOYW1lPVwidGV4dC1ncmVlbi00MDBcIj5EZXNjcmlwdGlvbjwvVGFibGVIZWFkPlxuICAgICAgICAgICAgICAgICAgPFRhYmxlSGVhZCBjbGFzc05hbWU9XCJ0ZXh0LWdyZWVuLTQwMFwiPkFmZmVjdGVkIFNlcnZpY2VzPC9UYWJsZUhlYWQ+XG4gICAgICAgICAgICAgICAgICA8VGFibGVIZWFkIGNsYXNzTmFtZT1cInRleHQtZ3JlZW4tNDAwXCI+RGV0ZWN0ZWQ8L1RhYmxlSGVhZD5cbiAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICA8L1RhYmxlSGVhZGVyPlxuICAgICAgICAgICAgICA8VGFibGVCb2R5PlxuICAgICAgICAgICAgICAgIHtzdXBwbHlDaGFpbkFsZXJ0cy5tYXAoKGFsZXJ0KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8VGFibGVSb3cga2V5PXthbGVydC5pZH0gY2xhc3NOYW1lPVwiYm9yZGVyLWIgYm9yZGVyLWdyYXktNzAwLzUwIGhvdmVyOmJnLWdyYXktODAwLzMwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGwgY2xhc3NOYW1lPVwiZm9udC1tb25vIHRleHQtZ3JlZW4tMzAwXCI+e2FsZXJ0LnZlbmRvck5hbWV9PC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGwgY2xhc3NOYW1lPXtnZXRBbGVydFR5cGVDb2xvcihhbGVydC5hbGVydFR5cGUpfT5cbiAgICAgICAgICAgICAgICAgICAgICB7YWxlcnQuYWxlcnRUeXBlfVxuICAgICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2UgY2xhc3NOYW1lPXtnZXRTZXZlcml0eUNvbG9yKGFsZXJ0LnNldmVyaXR5KX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7YWxlcnQuc2V2ZXJpdHkudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Z2V0U3RhdHVzSWNvbihhbGVydC5zdGF0dXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTMwMCBjYXBpdGFsaXplXCI+e2FsZXJ0LnN0YXR1c308L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgICAgICA8VGFibGVDZWxsIGNsYXNzTmFtZT1cInRleHQtZ3JheS0zMDAgbWF4LXcteHMgdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7YWxlcnQuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgICAgICA8VGFibGVDZWxsPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgI
125HthbGVydC5hZmZlY3RlZFNlcnZpY2VzPy5tYXAoKHNlcnZpY2UsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBrZXk9e2luZGV4fSB2YXJpYW50PVwib3V0bGluZVwiIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ibHVlLTQwMCBib3JkZXItYmx1ZS01MDAvMzBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2VydmljZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICkpIHx8IDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDBcIj5Ob25lPC9zcGFuPn1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGwgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTQwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtuZXcgRGF0ZShhbGVydC5kZXRlY3RlZEF0KS50b0xvY2FsZURhdGVTdHJpbmcoKX1cbiAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1RhYmxlQm9keT5cbiAgICAgICAgICAgIDwvVGFibGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NhcmQ+XG5cbiAgICAgIHsvKiBSZWNlbnQgQWN0aXZpdHkgVGltZWxpbmUgKi99XG4gICAgICA8Q2FyZCBjbGFzc05hbWU9XCJiZy1ncmF5LTgwMC81MCBib3JkZXItZ3JlZW4tNTAwLzIwXCI+XG4gICAgICAgIDxDYXJkSGVhZGVyPlxuICAgICAgICAgIDxDYXJkVGl0bGUgY2xhc3NOYW1lPVwidGV4dC1ncmVlbi00MDBcIj5SZWNlbnQgQWN0aXZpdHk8L0NhcmRUaXRsZT5cbiAgICAgICAgPC9DYXJkSGVhZGVyPlxuICAgICAgICA8Q2FyZENvbnRlbnQ+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICAgIHtzdXBwbHlDaGFpbkFsZXJ0cy5zbGljZSgwLCA1KS5tYXAoKGFsZXJ0LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2IGtleT17YWxlcnQuaWR9IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00IHAtMyBiZy1ncmF5LTkwMC81MCByb3VuZGVkIGJvcmRlciBib3JkZXItZ3JheS03MDAvNTBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAgICAgIHtnZXRTdGF0dXNJY29uKGFsZXJ0LnN0YXR1cyl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1vbm8gdGV4dC1ncmVlbi0zMDBcIj57YWxlcnQudmVuZG9yTmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxCYWRnZSBjbGFzc05hbWU9e2dldFNldmVyaXR5Q29sb3IoYWxlcnQuc2V2ZXJpdHkpfSBzaXplPVwic21cIj5cbiAgICAgICAgICAgICAgICAgICAgICB7YWxlcnQuc2V2ZXJpdHl9XG4gICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTQwMFwiPnthbGVydC5kZXNjcmlwdGlvbn08L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtZ3JheS01MDBcIj5cbiAgICAgICAgICAgICAgICAgIHtuZXcgRGF0ZShhbGVydC5kZXRlY3RlZEF0KS50b0xvY2FsZURhdGVTdHJpbmcoKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ2FyZD5cbiAgICA8L2Rpdj5cbiAgKTtcbn0iXSwibWFwcGluZ3MiOiJBQWlDNEIsY0E0QmhCLFlBNUJnQjtBQWpDNUIsU0FBUyxNQUFNLGFBQWEsWUFBWSxpQkFBaUI7QUFDekQsU0FBUyxhQUFhO0FBQ3RCLFNBQVMsT0FBTyxXQUFXLFdBQVcsV0FBVyxhQUFhLGdCQUFnQjtBQUM5RSxTQUFTLGVBQWUsUUFBUSxPQUFPLG1CQUFtQjtBQWlCMUQsd0JBQXdCLHNCQUFzQixFQUFFLGtCQUFrQixHQUErQjtBQUMvRixRQUFNLG1CQUFtQixDQUFDLGFBQXFCO0FBQzdDLFlBQVEsU0FBUyxZQUFZLEdBQUc7QUFBQSxNQUM5QixLQUFLO0FBQVksZUFBTztBQUFBLE1BQ3hCLEtBQUs7QUFBUSxlQUFPO0FBQUEsTUFDcEIsS0FBSztBQUFVLGVBQU87QUFBQSxNQUN0QixLQUFLO0FBQU8sZUFBTztBQUFBLE1BQ25CO0FBQVMsZUFBTztBQUFBLElBQ2xCO0FBQUEsRUFDRjtBQUVBLFFBQU0sZ0JBQWdCLENBQUMsV0FBbUI7QUFDeEMsWUFBUSxPQUFPLFlBQVksR0FBRztBQUFBLE1BQzVCLEtBQUs7QUFBVSxlQUFPLG9CQUFDLGlCQUFjLFdBQVUsd0JBQXVCO0FBQUEsTUFDdEUsS0FBSztBQUFpQixlQUFPLG9CQUFDLFNBQU0sV0FBVSwyQkFBMEI7QUFBQSxNQUN4RSxLQUFLO0FBQVksZUFBTyxvQkFBQyxlQUFZLFdBQVUsMEJBQXlCO0FBQU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
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.