import"./Bzak7iHL.js";import{p as Ye,aP as q,a1 as Qe,aQ as Ue,d as t,r as s,t as R,A as a,a as m,e as Ze,f as $,z as k,h as La,s as l,g as ie,bB as Oa,b as $e,b8 as na,b6 as Sa,b7 as Pe,c as T,u as Ea}from"./M0Oc_jcV.js";import{s as de}from"./BudljjWB.js";import{i as P}from"./CF3N4BZN.js";import{e as va,i as da}from"./CpoRs9rA.js";import{r as Z,b as i}from"./3N4rtv_S.js";import{p as Xe}from"./DUgBX6tD.js";import{H as Ia}from"./DDxUNcUd.js";import{c as Ca,b as Ba}from"./Cwb-yVx6.js";import{a as Na}from"./Ljv_TvET.js";import{d as fa,a as o}from"./DLG85UB6.js";import{b as Ma,a as ne}from"./BumAO1GI.js";import{c as Fa}from"./CsN48JFK.js";import{r as v}from"./DLFHhg9C.js";import{S as Pa}from"./mzvHZrFh.js";import{A as Ra}from"./D_UM8qiK.js";import{G as Va}from"./DDxUckF8.js";import{f as za}from"./CKINsPtQ.js";import{t as ca,b as oa}from"./CGd1D22q.js";import{b as Ga}from"./dvEHgczz.js";var Ka=T('

'),Ha=T(''),Ja=T('
'),Qa=T('( )',1),Ua=T('( )',1),Xa=T('( )',1),Ya=T('( )',1),Za=T('( )',1),$a=T(''),et=T('

Loading...

'),at=T("Browse the D3FEND knowledge graph by clicking on the nodes below."),tt=T('
'),st=T('
'),rt=T('
');function lt(Ne,f){Ye(f,!0);const ce=()=>na(a(N),"$isLoading",y),C=()=>na(H,"$modalData",y),[y,fe]=Sa(),V=Fa();let B=[],W=q(""),u=q(Qe([])),ue=Ue(null),N=q(Qe(Ue(!1))),H=Ue(null);const qe=Ca();document.body.style.overflow="hidden";let z=q(!1),J=q(!1),G=q(!1),Q=q(!1),U=q(!1),h=q(!1),b=q(!1),j=q(!1),A=q(!1),L=q(6),E,D=q(null),O=q(Qe({defensiveTactic:0,defensiveTechnique:0,offensiveTechnique:0,artifact:0,weakness:0}));async function ee(e){a(N).set(!0),ue.set(e.item);try{const r=await ve(e.item["@id"].split(":")[1]);console.log({data:r}),H.set(r)}catch(r){console.error("Error during data fetch:",r),H.set(null)}finally{a(N).set(!1)}}function ae(){a(N).set(!1),ue.set(null),H.set(null)}function K(){qe("close"),document.body.style.overflow=""}Ba(()=>{document.body.style.overflow=""});async function oe(){const e="d3fend_search_cache",r=localStorage.getItem(e);if(r)try{return B=JSON.parse(r),B}catch(c){console.error("Failed to parse cached data",c)}try{const c=await Promise.all([fetch(v("/api/matrix-graph.json")),fetch(v("/api/offensive-technique/all.json")),fetch(v("/api/dao/search.json")),fetch(v("/api/weakness/all.json"))]);if(c.every(d=>d.ok)){const[d,Y,g,p]=await Promise.all(c.map(n=>n.json()));let _=d["@graph"].map(n=>({...n,itemType:n["@type"]&&n["@type"].includes("d3f:DefensiveTactic")?"Defensive Tactic":"Defensive Technique"})),x=Y["@graph"].map(n=>({...n,itemType:"Offensive Technique"})),M=g["@graph"].map(n=>({...n,itemType:"Artifact"})),S=p["@graph"].map(n=>({...n,itemType:"Weakness"}));return B=[..._,...x,...M,...S],localStorage.setItem(e,JSON.stringify(B)),B}else throw new Error("One or more API responses were not OK.")}catch(c){k(D,"Failed to load data, check console log for more details."),console.error("Failed to load data for search",c)}}function te(e){if(!a(z)&&!a(J)&&!a(G)&&!a(Q)&&!a(U))return!0;switch(e){case"Defensive Tactic":return a(z);case"Offensive Technique":return a(J);case"Defensive Technique":return a(G);case"Artifact":return a(Q);case"Weakness":return a(U);default:return!1}}function se(e,r){const c=r.toLowerCase();if(c==="")return[];const d=g=>{const p=g.toLowerCase().indexOf(c);if(p===-1)return g;const _=g.substring(0,p),x=g.substring(p,p+c.length),M=g.substring(p+c.length);return`${_}${x}${M}`};let Y=e.reduce((g,p)=>{let _=[],x={...p},M=0;console.log(p);try{if(a(h)||!a(h)&&!a(b)&&!a(j)&&!a(A)){let n=p["rdfs:label"];Array.isArray(n)&&n.length>0&&(n=n[0]),n&&n.toLowerCase().includes(c)&&(_.push("label"),x["rdfs:label"]=d(n),M+=10)}if(a(b)||!a(h)&&!a(b)&&!a(j)&&!a(A)){let n=p["d3f:definition"];Array.isArray(n)&&n.length>0&&(n=n[0]),n&&n.toLowerCase().includes(c)&&(_.push("definition"),x["d3f:definition"]=d(n),M+=5)}if(a(j)||!a(h)&&!a(b)&&!a(j)&&!a(A)){let n=p["d3f:attack-id"];Array.isArray(n)&&n.length>0&&(n=n[0]),n&&n.toLowerCase().includes(c)&&(_.push("attack"),x["d3f:attack-id"]=d(n),M+=10)}if(a(A)||!a(h)&&!a(b)&&!a(j)&&!a(A)){let n=p["d3f:d3fend-id"];Array.isArray(n)&&n.length>0&&(n=n[0]),n&&n.toLowerCase().includes(c)&&(_.push("d3fend"),x["d3f:d3fend-id"]=d(n),M+=10)}let S=p["rdfs:label"];Array.isArray(S)&&S.length>0&&(S=S[0]),S&&S.toLowerCase().includes(c)&&(_.push("off"),x["rdfs:label"]=d(S))}catch(S){k(D,"Failed to load data, check console log for more details."),console.error("Failed to load data for search",S)}if(_.length>0){const S=x.itemType;te(S)&&g.push({item:x,matchedOn:_,score:M})}return g},[]);return Y.sort((g,p)=>p.score-g.score),Y.map(g=>({item:g.item,matchedOn:g.matchedOn}))}function w(e=!1){e?k(u,se(B,a(W)),!0):(clearTimeout(E),E=setTimeout(()=>{k(u,se(B,a(W)),!0),he()},500))}function he(){k(O,{defensiveTactic:a(u).filter(e=>e.item.itemType==="Defensive Tactic").length,defensiveTechnique:a(u).filter(e=>e.item.itemType==="Defensive Technique").length,offensiveTechnique:a(u).filter(e=>e.item.itemType==="Offensive Technique").length,artifact:a(u).filter(e=>e.item.itemType==="Artifact").length,weakness:a(u).filter(e=>e.item.itemType==="Weakness").length},!0)}async function ve(e){try{const r=await fetch(v(`/api/offensive-technique/attack/${e}.json`));if(!r.ok)throw new Error(`Error fetching data: ${r.status}`);const{description:c,off_to_def:d,subtechniques:Y}=await r.json();return{description:c,off_to_def:d,technique_id:e,subtechniques:Y}}catch(r){return console.error("Error fetching defensive data:",r),{error:r.message}}}let Ae=oe();var re=rt(),X=t(re),pe=Pe(()=>V("keydown")),le=t(X),We=Pe(()=>V("keydown")),_e=t(le);Na(_e,()=>Ae,e=>{var r=La("loading...");m(e,r)},(e,r)=>{var c=Ze(),d=$(c);{var Y=p=>{var _=Ka(),x=t(_,!0);s(_),R(()=>de(x,a(D))),m(p,_)},g=p=>{var _=Ha();Z(_),o("input",_,()=>{w(!1)}),Ma(_,()=>a(W),x=>k(W,x)),m(p,_)};P(d,p=>{a(D)?p(Y):p(g,-1)})}m(e,c)},(e,r)=>{var c=Ja(),d=t(c);s(c),R(()=>de(d,`An unexpected error occurred: ${a(r)??""}`)),m(e,c)});var me=l(_e,2),Le=l(me,2),Oe=t(Le),ge=t(Oe),Se=t(ge),Ee=t(Se),Ie=t(Ee),ye=l(t(Ie),2),be=t(ye);Z(be),ie(3),s(ye);var ke=l(ye,2),we=t(ke);Z(we),ie(3),s(ke);var xe=l(ke,2),Te=t(xe);Z(Te),ie(3),s(xe);var je=l(xe,2),De=t(je);Z(De),ie(3),s(je);var Me=l(je,4),Ce=t(Me);Z(Ce);var Ge=l(Ce,4);{var Ke=e=>{var r=Qa(),c=l($(r)),d=t(c,!0);s(c),ie(),R(()=>de(d,a(O).defensiveTactic)),m(e,r)};P(Ge,e=>{a(u).length>0&&e(Ke)})}s(Me);var Fe=l(Me,2),Be=t(Fe);Z(Be);var ua=l(Be,4);{var ha=e=>{var r=Ua(),c=l($(r)),d=t(c,!0);s(c),ie(),R(()=>de(d,a(O).defensiveTechnique)),m(e,r)};P(ua,e=>{a(u).length>0&&e(ha)})}s(Fe);var He=l(Fe,2),Re=t(He);Z(Re);var pa=l(Re,4);{var _a=e=>{var r=Xa(),c=l($(r)),d=t(c,!0);s(c),ie(),R(()=>de(d,a(O).offensiveTechnique)),m(e,r)};P(pa,e=>{a(u).length>0&&e(_a)})}s(He);var Je=l(He,2),Ve=t(Je);Z(Ve);var ma=l(Ve,4);{var ga=e=>{var r=Ya(),c=l($(r)),d=t(c,!0);s(c),ie(),R(()=>de(d,a(O).artifact)),m(e,r)};P(ma,e=>{a(u).length>0&&e(ga)})}s(Je);var ea=l(Je,2),ze=t(ea);Z(ze);var ya=l(ze,4);{var ba=e=>{var r=Za(),c=l($(r)),d=t(c,!0);s(c),ie(),R(()=>de(d,a(O).weakness)),m(e,r)};P(ya,e=>{a(u).length>0&&e(ba)})}s(ea),s(Ie),s(Ee),s(Se),s(ge);var aa=l(ge,2),ta=t(aa),sa=t(ta),ra=t(sa),la=t(ra);va(la,17,()=>a(u).slice(0,a(L)),da,(e,r)=>{Pa(e,{get result(){return a(r)},openDefendModal:ee,get isLoading(){return a(N)},set isLoading(c){Oa(k(N,c,!0),"$isLoading",y)}})});var ka=l(la,2);{var wa=e=>{var r=$a();o("click",r,()=>{k(L,a(u).length,!0)}),m(e,r)};P(ka,e=>{a(u).length>a(L)&&e(wa)})}s(ra),s(sa),s(ta),s(aa),s(Oe),s(Le),s(le),s(X);var xa=l(X,2);{var Ta=e=>{var r=et();m(e,r)},ja=e=>{var r=st(),c=Pe(()=>V("keydown")),d=t(r),Y=Pe(()=>V("keydown")),g=t(d),p=Pe(()=>V("keydown")),_=l(g,2),x=t(_),M=l(t(x),2);{var S=I=>{var F=tt(),qa=t(F);Ra(qa,{children:(Aa,vt)=>{var Wa=at();m(Aa,Wa)},$$slots:{default:!0}}),s(F),m(I,F)};P(M,I=>{C().off_to_def.results.bindings.length>0&&I(S)})}var n=l(M,4);Va(n,{get off_to_def(){return C().off_to_def}});var ia=l(n,2),Da=t(ia);s(ia),s(x),s(_),s(d),s(r),R(I=>i(Da,"href",I),[()=>v(`/api/offensive-technique/attack/${C().technique_id}.json`)]),o("click",r,ae),o("keydown",r,function(...I){var F;(F=a(c))==null||F.apply(this,I)}),o("click",d,I=>I.stopPropagation()),o("keydown",d,function(...I){var F;(F=a(Y))==null||F.apply(this,I)}),o("click",g,ae),o("keydown",g,function(...I){var F;(F=a(p))==null||F.apply(this,I)}),m(e,r)};P(xa,e=>{ce()?e(Ta):C()&&e(ja,1)})}s(re),o("click",X,K),o("keydown",X,function(...e){var r;(r=a(pe))==null||r.apply(this,e)}),o("click",le,e=>e.stopPropagation()),o("keydown",le,function(...e){var r;(r=a(We))==null||r.apply(this,e)}),o("click",me,K),o("keydown",me,e=>za(e,K)),o("change",be,()=>{w(!0)}),ne(be,()=>a(h),e=>k(h,e)),o("change",we,()=>{w(!0)}),ne(we,()=>a(b),e=>k(b,e)),o("change",Te,()=>{w(!0)}),ne(Te,()=>a(j),e=>k(j,e)),o("change",De,()=>{w(!0)}),ne(De,()=>a(A),e=>k(A,e)),o("change",Ce,()=>{w(!0)}),ne(Ce,()=>a(z),e=>k(z,e)),o("change",Be,()=>{w(!0)}),ne(Be,()=>a(G),e=>k(G,e)),o("change",Re,()=>{w(!0)}),ne(Re,()=>a(J),e=>k(J,e)),o("change",Ve,()=>{w(!0)}),ne(Ve,()=>a(Q),e=>k(Q,e)),o("change",ze,()=>{w(!0)}),ne(ze,()=>a(U),e=>k(U,e)),m(Ne,re),$e(),fe()}fa(["click","keydown","input","change"]);var it=T('
  • '),nt=T('
  • domains
  • CAD
  • artifacts
  • taxonomies
  • about
  • resources
  • contribute
  • faq
  • blog
  • search
  • ',1),ct=T('',1);function Ot(Ne,f){Ye(f,!0);let ce=Xe(f,"links",19,()=>[]),C=Xe(f,"sidebar",15,!1),y=q(!1);var fe=ct(),V=$(fe),B=t(V),W=t(B),u=t(W),ue=t(u);s(u),s(W);var N=l(W,2);{var H=h=>{var b=Ze(),j=$(b);va(j,17,ce,da,(A,L)=>{var E=it(),D=t(E),O=t(D,!0);s(D),s(E),R(()=>{i(D,"aria-current",f.current_path===a(L)[0]?"page":void 0),i(D,"href",a(L)[0]),de(O,a(L)[1])}),m(A,E)}),m(h,b)},qe=h=>{var b=nt(),j=$(b),A=t(j);s(j);var L=l(j,2),E=t(L);s(L);var D=l(L,2),O=t(D);s(D);var ee=l(D,2),ae=t(ee);s(ee);var K=l(ee,2),oe=t(K);s(K);var te=l(K,2),se=t(te);s(te);var w=l(te,2),he=t(w);s(w);var ve=l(w,2),Ae=t(ve);s(ve);var re=l(ve,2),X=t(re);s(re);var pe=l(re,2),le=t(pe);s(pe);var We=l(pe,2),_e=t(We),me=t(_e);s(_e),s(We),R((Le,Oe,ge,Se,Ee,Ie,ye,be,ke,we,xe,Te,je,De,Me,Ce,Ge,Ke,Fe,Be)=>{i(A,"aria-current",Le),i(A,"href",Oe),i(E,"current_path",f.current_path),i(E,"href",ge),i(O,"aria-current",Se),i(O,"href",Ee),i(ae,"aria-current",Ie),i(ae,"href",ye),i(oe,"aria-current",be),i(oe,"href",ke),i(se,"aria-current",we),i(se,"href",xe),i(he,"aria-current",Te),i(he,"href",je),i(Ae,"aria-current",De),i(Ae,"href",Me),i(X,"aria-current",Ce),i(X,"href",Ge),i(le,"aria-current",Ke),i(le,"href",Fe),i(me,"src",Be)},[()=>f.current_path.startsWith("domain")?"page":void 0,()=>v("/domain"),()=>v("/cad"),()=>f.current_path.startsWith("dao")?"page":void 0,()=>v("/dao"),()=>f.current_path.startsWith("taxonomies")?"page":void 0,()=>v("/taxonomies"),()=>f.current_path.startsWith("about")?"page":void 0,()=>v("/about"),()=>f.current_path.startsWith("resources")?"page":void 0,()=>v("/resources"),()=>f.current_path.startsWith("contribute")?"page":void 0,()=>v("/contribute"),()=>f.current_path.startsWith("faq")?"page":void 0,()=>v("/faq"),()=>f.current_path.startsWith("blog")?"page":void 0,()=>v("/blog"),()=>f.current_path.startsWith("search")?"page":void 0,()=>v("/search"),()=>v("/img/nsa.png")]),m(h,b)};P(N,h=>{ce().length>0?h(H):h(qe,-1)})}s(B),s(V);var z=l(V,2);{var J=h=>{lt(h,{onclose:()=>k(y,!a(y))})};P(z,h=>{a(y)&&h(J)})}var G=l(z,2),Q=t(G),U=t(Q);Ia(U,{get open(){return C()},set open(h){C(h)}}),s(Q),s(G),R((h,b)=>{i(u,"current_path",f.current_path),i(u,"href",h),i(ue,"src",b)},[()=>v("/"),()=>v("/img/mitre.png")]),m(Ne,fe),$e()}var ot=T('');function St(Ne,f){Ye(f,!0);let ce=Xe(f,"open",15,!1),C=q(void 0);Ea(()=>{a(C)>768&&ce(!1)});function y(W){ce(!1)}var fe=Ze(),V=$(fe);{var B=W=>{var u=ot(),ue=t(u),N=t(ue),H=t(N),qe=t(H);s(H),s(N);var z=l(N,4),J=t(z);s(z);var G=l(z,2),Q=t(G);s(G);var U=l(G,2),h=t(U);s(U);var b=l(U,2),j=t(b);s(b);var A=l(b,2),L=t(A);s(A);var E=l(A,2),D=t(E);s(E);var O=l(E,2),ee=t(O);s(O);var ae=l(O,2),K=t(ae);s(ae);var oe=l(ae,2),te=t(oe);s(oe);var se=l(oe,2),w=t(se);s(se);var he=l(se,4),ve=t(he),Ae=t(ve);s(ve),s(he),s(ue),s(u),R((re,X,pe,le,We,_e,me,Le,Oe,ge,Se,Ee,Ie,ye,be,ke,we,xe,Te,je,De)=>{i(H,"href",re),i(qe,"src",X),i(J,"aria-current",f.current_path==="/domain"?"page":void 0),i(J,"href",pe),i(Q,"href",le),i(h,"aria-current",We),i(h,"href",_e),i(j,"aria-current",me),i(j,"href",Le),i(L,"aria-current",Oe),i(L,"href",ge),i(D,"aria-current",Se),i(D,"href",Ee),i(ee,"aria-current",Ie),i(ee,"href",ye),i(K,"aria-current",be),i(K,"href",ke),i(te,"aria-current",we),i(te,"href",xe),i(w,"aria-current",Te),i(w,"href",je),i(Ae,"src",De)},[()=>v("/"),()=>v("/img/mitre.png"),()=>v("/"),()=>v("/cad"),()=>f.current_path.startsWith("dao")?"page":void 0,()=>v("/dao"),()=>f.current_path.startsWith("taxonomies")?"page":void 0,()=>v("/taxonomies"),()=>f.current_path.startsWith("about")?"page":void 0,()=>v("/about"),()=>f.current_path.startsWith("resources")?"page":void 0,()=>v("/resources"),()=>f.current_path.startsWith("contribute")?"page":void 0,()=>v("/contribute"),()=>f.current_path.startsWith("faq")?"page":void 0,()=>v("/faq"),()=>f.current_path.startsWith("blog")?"page":void 0,()=>v("/blog"),()=>f.current_path.startsWith("search")?"search":void 0,()=>v("/search"),()=>v("/img/nsa.png")]),o("click",qe,y),o("click",J,y),o("click",Q,y),o("click",h,y),o("click",j,y),o("click",L,y),o("click",D,y),o("click",ee,y),o("click",K,y),o("click",te,y),o("click",w,y),ca(5,u,()=>oa,()=>({x:a(C)})),ca(6,u,()=>oa,()=>({x:a(C),duration:50})),m(W,u)};P(V,W=>{ce()&&W(B)})}Ga("innerWidth",W=>k(C,W,!0)),m(Ne,fe),$e()}fa(["click"]);export{St as N,Ot as a};