diff --git a/dist/assets/ActivatedToken-76GRUUDU.js b/dist/assets/ActivatedToken-76GRUUDU.js new file mode 100644 index 000000000..6b17efd66 --- /dev/null +++ b/dist/assets/ActivatedToken-76GRUUDU.js @@ -0,0 +1 @@ +import{_ as p}from"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import{d as c,r as d,C as l,a as _,c as f,i as t,f as s,h as u,I as g,p as k}from"./index-DttDySxD.js";import{g as h,_ as v}from"./generateSVNToken-CAC293zc.js";import{_ as w}from"./ButtonActivateTokenTips.vue_vue_type_script_setup_true_lang-nju7rcNA.js";import"./BaseCopyButton-Dz1wHLk7.js";const T={class:"mt-24 text-sm"},D=c({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(n){const o=d(n.tokenData.hostname),a=l(()=>o.value?h(o.value):"");return(r,e)=>{const m=k,i=p;return _(),f(g,null,[t(v,{"token-data":a.value},null,8,["token-data"]),e[2]||(e[2]=s("p",{class:"mt-16 text-sm"}," Remember, it gets triggered whenever someone clones the SVN repo. ",-1)),t(m,{class:"mt-24",variant:"warning",message:"Don't forget to run the following command after you've added the token:"}),t(i,{class:"mt-16",lang:"bash",code:"svn commit"}),s("p",T,[e[1]||(e[1]=u(" The source IP address shown in the alert is the DNS server, not the end user. ")),t(w,{onHowToUse:e[0]||(e[0]=$=>r.$emit("howToUse"))})])],64)}}});export{D as default}; diff --git a/dist/assets/ActivatedToken-8Xj8i19I.js b/dist/assets/ActivatedToken-8Xj8i19I.js new file mode 100644 index 000000000..29f394d66 --- /dev/null +++ b/dist/assets/ActivatedToken-8Xj8i19I.js @@ -0,0 +1 @@ +import{d as m,r as c,a as _,c as p,i as t,f as a,I as k,p as l}from"./index-DttDySxD.js";import{_ as u}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-Dd1dTbcV.js";import{_ as d}from"./ButtonActivateTokenTips.vue_vue_type_script_setup_true_lang-nju7rcNA.js";import"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import"./BaseCopyButton-Dz1wHLk7.js";const D=m({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(o){const s=o,n=c({aws_access_key_id:s.tokenData.aws_access_key_id||"",aws_secret_access_key:s.tokenData.aws_secret_access_key||"",output:s.tokenData.output||"",region:s.tokenData.region||""});return(i,e)=>{const r=l;return _(),p(k,null,[t(u,{"token-data":n.value},null,8,["token-data"]),e[1]||(e[1]=a("p",{class:"mt-16 text-sm"}," This token is triggered when someone uses this credential pair to access AWS programmatically (through the API). The key is unique. i.e. There is no chance of somebody guessing these credentials. ",-1)),t(d,{onHowToUse:e[0]||(e[0]=f=>i.$emit("howToUse"))}),t(r,{class:"mt-24",variant:"info",message:"If this token fires, it is a clear indication that this set of keys has 'leaked'"}),e[2]||(e[2]=a("p",{class:"mt-24 text-sm"},null,-1))],64)}}});export{D as default}; diff --git a/dist/assets/ActivatedToken-B4VevuJN.js b/dist/assets/ActivatedToken-B4VevuJN.js new file mode 100644 index 000000000..855eac8c0 --- /dev/null +++ b/dist/assets/ActivatedToken-B4VevuJN.js @@ -0,0 +1 @@ +import{d as r,r as m,a as i,c as p,i as t,f as l,I as c,p as d}from"./index-DttDySxD.js";import{_}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-CkpRPyx4.js";import"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import"./BaseCopyButton-Dz1wHLk7.js";const x=r({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(s){const a=m(s.tokenData.unique_email||"");return(o,e)=>{const n=d;return i(),p(c,null,[t(_,{"token-data":a.value},null,8,["token-data"]),t(n,{class:"mt-24",variant:"info",message:"Remember, it gets triggered whenever someone sends an email to the address.","text-link":"More tips?",onClick:e[0]||(e[0]=()=>o.$emit("howToUse"))}),e[1]||(e[1]=l("p",{class:"mt-24 text-sm"},null,-1))],64)}}});export{x as default}; diff --git a/dist/assets/ActivatedToken-BGdtnAD9.js b/dist/assets/ActivatedToken-BGdtnAD9.js new file mode 100644 index 000000000..0119d93bd --- /dev/null +++ b/dist/assets/ActivatedToken-BGdtnAD9.js @@ -0,0 +1 @@ +import{d as i,r as m,a as l,c as p,i as a,f as k,I as c,p as d}from"./index-DttDySxD.js";import{_}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-cKTSULXy.js";const g=i({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(o){const t=o,n=m({qrcode_png:t.tokenData.qrcode_png||"",token:t.tokenData.token||"",auth:t.tokenData.auth_token||""});return(s,e)=>{const r=d;return l(),p(c,null,[a(_,{"token-data":n.value},null,8,["token-data"]),a(r,{class:"mt-24",variant:"info",message:"When someone scans the QR Code with a reader, it will trigger the URL tied to your token and fire an alert.","text-link":"More tips?",onClick:e[0]||(e[0]=()=>s.$emit("howToUse"))}),e[1]||(e[1]=k("p",{class:"mt-24 text-sm"},null,-1))],64)}}});export{g as default}; diff --git a/dist/assets/ActivatedToken-BL8FTG2t.js b/dist/assets/ActivatedToken-BL8FTG2t.js new file mode 100644 index 000000000..cd78cfe81 --- /dev/null +++ b/dist/assets/ActivatedToken-BL8FTG2t.js @@ -0,0 +1,5 @@ +import{d as r,r as s,a as c,c as i,i as e,I as l,p as m}from"./index-DttDySxD.js";import{_ as p}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-C75e3wQO.js";const f=r({__name:"ActivatedToken",props:{tokenData:{}},setup(n){const t=n,o=s({token:t.tokenData.token||"",auth:t.tokenData.auth_token||""});return s(`reg import FILENAME /reg:64 +reg import FILENAME /reg:32`),(u,d)=>{const a=m;return c(),i(l,null,[e(a,{class:"mt-24",variant:"warning",message:`In order to ensure that the token setup works ensure you + are running the powershell script as admin.`}),e(p,{"token-data":o.value},null,8,["token-data"]),e(a,{class:"mt-24",variant:"info",message:`Once installed (with admin permissions) you'll get an alert whenever someone + (or someone's code) accesses or copies files in your fake file system. It will automatically + provide the file that was accessed, and the process used to access or copy the file.`})],64)}}});export{f as default}; diff --git a/dist/assets/ActivatedToken-BNoZj_3F.js b/dist/assets/ActivatedToken-BNoZj_3F.js new file mode 100644 index 000000000..7091690e3 --- /dev/null +++ b/dist/assets/ActivatedToken-BNoZj_3F.js @@ -0,0 +1 @@ +import{d as c,r as m,a as d,c as g,i as a,f as e,u as o,g as r,I as _,p as f}from"./index-DttDySxD.js";import{_ as u}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-COLPf5DV.js";import"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import"./BaseCopyButton-Dz1wHLk7.js";const h={class:"flex flex-row items-center justify-center gap-16 mt-16"},k={href:"https://apps.apple.com/us/app/wireguard/id1441195209?itsct=apps_box_badge&itscg=30200",target:"_blank"},w=["src"],v={href:"https://play.google.com/store/apps/details?id=com.wireguard.android",target:"_blank"},x=["src"],W=c({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(n){const s=n,i=m({qr_code:s.tokenData.qr_code||"",wg_conf:s.tokenData.wg_conf||""});return(p,t)=>{const l=f;return d(),g(_,null,[a(u,{"token-data":i.value},null,8,["token-data"]),t[1]||(t[1]=e("p",{class:"mt-24 text-sm"}," Whenever someone tries to use this WireGuard VPN config to see what access it gets them, an alert is triggered. ",-1)),a(l,{class:"mt-24",variant:"info",message:"This WireGuard config can be installed anywhere WireGuard is used, such as on phones, laptops and servers.","text-link":"More tips?",onClick:t[0]||(t[0]=()=>p.$emit("howToUse"))}),t[2]||(t[2]=e("p",{class:"mt-24 text-center"},"Don't have the WireGuard app?",-1)),e("div",h,[e("a",k,[e("img",{src:o(r)("app-store.svg"),alt:"Download form Apple store",class:"h-[3rem]"},null,8,w)]),e("a",v,[e("img",{src:o(r)("google-play.png"),alt:"Download form Google Play store",class:"h-[3rem]"},null,8,x)])])],64)}}});export{W as default}; diff --git a/dist/assets/ActivatedToken-BQbvelhT.js b/dist/assets/ActivatedToken-BQbvelhT.js new file mode 100644 index 000000000..9743e5079 --- /dev/null +++ b/dist/assets/ActivatedToken-BQbvelhT.js @@ -0,0 +1 @@ +import{d as i,r as m,a as c,c as p,i as t,f as d,h as f,I as u,p as _}from"./index-DttDySxD.js";import{_ as l}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-skA7wIqa.js";import{_ as k}from"./ButtonActivateTokenTips.vue_vue_type_script_setup_true_lang-nju7rcNA.js";const h={class:"mt-24 text-sm"},$=i({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(o){const a=o,s=m({token:a.tokenData.token||"",auth:a.tokenData.auth_token||""});return(n,e)=>{const r=_;return c(),p(u,null,[t(l,{"token-data":s.value},null,8,["token-data"]),d("p",h,[e[1]||(e[1]=f(" You'll get an alert whenever this document is opened with Acrobat Reader, regardless of the user's security preferences in Reader. ")),t(k,{onHowToUse:e[0]||(e[0]=g=>n.$emit("howToUse"))})]),t(r,{class:"mt-24",variant:"info",message:"You can rename the document without affecting its operation."})],64)}}});export{$ as default}; diff --git a/dist/assets/ActivatedToken-BVBgParG.js b/dist/assets/ActivatedToken-BVBgParG.js new file mode 100644 index 000000000..60277965e --- /dev/null +++ b/dist/assets/ActivatedToken-BVBgParG.js @@ -0,0 +1,3 @@ +import{d as r,r as i,a as p,c as m,i as t,f as l,I as c,p as f}from"./index-DttDySxD.js";import{_ as k}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-CxDw_iYC.js";import"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import"./BaseCopyButton-Dz1wHLk7.js";const g=r({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(o){const s=i(o.tokenData.css||"");return(n,e)=>{const a=f;return p(),m(c,null,[t(k,{"token-snippet":s.value},null,8,["token-snippet"]),e[1]||(e[1]=l("p",{class:"mt-16 text-sm"}," Use this CSS to detect when someone has cloned a webpage. ",-1)),t(a,{class:"mt-24",variant:"info",message:`When someone clones your site, they'll load the token, which will check + whether the referrer domain is expected. If not, it fires the token and you + get an alert.`,"text-link":"More tips?",onClick:e[0]||(e[0]=()=>n.$emit("howToUse"))})],64)}}});export{g as default}; diff --git a/dist/assets/ActivatedToken-BYjiaAD5.js b/dist/assets/ActivatedToken-BYjiaAD5.js new file mode 100644 index 000000000..5843209f0 --- /dev/null +++ b/dist/assets/ActivatedToken-BYjiaAD5.js @@ -0,0 +1 @@ +import{d as c,r as i,a as e,c as m,b as r,i as _,f as l,I as d,p as k}from"./index-DttDySxD.js";import{_ as p}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-jADyWSL7.js";import"./BaseCopyButton-Dz1wHLk7.js";const D=c({__name:"ActivatedToken",props:{tokenData:{}},setup(s){const a=s,t=i({token:a.tokenData.token||"",auth:a.tokenData.auth_token||"",card_id:a.tokenData.card_id||"",name_on_card:a.tokenData.name_on_card||"",card_number:a.tokenData.card_number||"",expiry_month:a.tokenData.expiry_month||"",expiry_year:a.tokenData.expiry_year||"",cvv:a.tokenData.cvv||""});return(u,n)=>{const o=k;return e(),m(d,null,[t.value?(e(),r(p,{key:1,"token-data":t.value},null,8,["token-data"])):(e(),r(o,{key:0,class:"mt-24",variant:"info",message:"Credit card token not available yet'"})),_(o,{class:"mt-24",variant:"info",message:"If the card is ever used in an authorization, the transaction will be declined, but you will be alerted."}),n[0]||(n[0]=l("p",{class:"mt-24 text-sm"},null,-1))],64)}}});export{D as default}; diff --git a/dist/assets/ActivatedToken-BhPcLocp.js b/dist/assets/ActivatedToken-BhPcLocp.js new file mode 100644 index 000000000..b3e4cc4ca --- /dev/null +++ b/dist/assets/ActivatedToken-BhPcLocp.js @@ -0,0 +1 @@ +import{d as m,r as i,a as p,c as k,f as l,i as a,I as u,p as c}from"./index-DttDySxD.js";import{_ as d}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-f5dBOp4E.js";import"./BaseSwitch-DCFJt9CG.js";import"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import"./BaseCopyButton-Dz1wHLk7.js";const y=m({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(o){const t=o,n=i({hostname:t.tokenData.hostname||"",token:t.tokenData.token||"",auth:t.tokenData.auth_token||"",encoded:!0});return(s,e)=>{const r=c;return p(),k(u,null,[e[1]||(e[1]=l("p",null,"There are two ways you can use this token:",-1)),a(d,{"token-data":n.value},null,8,["token-data"]),a(r,{class:"mt-24",variant:"info",message:"When the MySQL statements are run, your Canarytoken will be triggered.","text-link":"More tips?",onClick:e[0]||(e[0]=()=>s.$emit("howToUse"))})],64)}}});export{y as default}; diff --git a/dist/assets/ActivatedToken-BrwcTbbG.js b/dist/assets/ActivatedToken-BrwcTbbG.js new file mode 100644 index 000000000..d7d7a95bb --- /dev/null +++ b/dist/assets/ActivatedToken-BrwcTbbG.js @@ -0,0 +1 @@ +import{d as m,r as l,a as i,c as k,i as o,f as n,I as _,p as c}from"./index-DttDySxD.js";import{_ as u}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-DHZWXpUy.js";import"./pwaIconService-BRQ0W_Uv.js";const w=m({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(a){const t=a;console.log(t.tokenData);const s=l({url:t.tokenData.token_url||"",pwa_icon:t.tokenData.pwa_icon||"",pwa_app_name:t.tokenData.pwa_app_name||""});return(p,e)=>{const r=c;return i(),k(_,null,[o(u,{"token-data":s.value},null,8,["token-data"]),e[1]||(e[1]=n("p",{class:"mt-16 text-sm text-center"}," The token gets triggered whenever you open the app. ",-1)),o(r,{class:"mt-24",variant:"info",message:"When you open the token link on your phone, press 'Share', then 'Add to Home Screen' to install.","text-link":"More tips?",onClick:e[0]||(e[0]=()=>p.$emit("howToUse"))}),e[2]||(e[2]=n("p",{class:"mt-24 text-sm"},null,-1))],64)}}});export{w as default}; diff --git a/dist/assets/ActivatedToken-CBbOPWr5.js b/dist/assets/ActivatedToken-CBbOPWr5.js new file mode 100644 index 000000000..0bc0a9936 --- /dev/null +++ b/dist/assets/ActivatedToken-CBbOPWr5.js @@ -0,0 +1 @@ +import{_ as s}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-Dnnhvizd.js";import{d as n,r,a as l,c as i,i as m,f as t,I as p}from"./index-DttDySxD.js";import"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import"./BaseCopyButton-Dz1wHLk7.js";const _=n({__name:"ActivatedToken",props:{tokenData:{}},setup(a){const o=r(a.tokenData.token_usage);return(f,e)=>(l(),i(p,null,[m(s,{"token-usage":o.value},null,8,["token-usage"]),e[0]||(e[0]=t("p",{class:"mt-16 text-sm"}," If the log line is consumed by a vulnerable log4j library, it will generate an alert on this token. ",-1)),e[1]||(e[1]=t("p",{class:"mt-16 text-sm"}," If this works, you will also obtain the hostname of the vulnerable server. ",-1))],64))}});export{_ as default}; diff --git a/dist/assets/ActivatedToken-CEW9wZ59.js b/dist/assets/ActivatedToken-CEW9wZ59.js new file mode 100644 index 000000000..032c22c6d --- /dev/null +++ b/dist/assets/ActivatedToken-CEW9wZ59.js @@ -0,0 +1 @@ +import{_ as r}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-BCRvgeMh.js";import{_ as m}from"./ButtonActivateTokenTips.vue_vue_type_script_setup_true_lang-nju7rcNA.js";import{d as i,r as p,a as l,c as u,i as o,f as c,h as k,I as f}from"./index-DttDySxD.js";const d={class:"mt-24 text-sm text-center"},x=i({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(a){const t=a,n=p({token:t.tokenData.token||"",auth:t.tokenData.auth_token||""});return(s,e)=>(l(),u(f,null,[o(r,{"token-data":n.value},null,8,["token-data"]),c("p",d,[e[1]||(e[1]=k(" You'll get an alert when someone tries to use your Kubeconfig. ")),o(m,{onHowToUse:e[0]||(e[0]=_=>s.$emit("howToUse"))})])],64))}});export{x as default}; diff --git a/dist/assets/ActivatedToken-CZEvBOdo.js b/dist/assets/ActivatedToken-CZEvBOdo.js new file mode 100644 index 000000000..e78239b7d --- /dev/null +++ b/dist/assets/ActivatedToken-CZEvBOdo.js @@ -0,0 +1 @@ +import{d as m,r as i,a as p,c as l,i as s,f as t,h as f,I as u,p as _}from"./index-DttDySxD.js";import{_ as c}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-DL9F_ZwB.js";import{_ as d}from"./ButtonActivateTokenTips.vue_vue_type_script_setup_true_lang-nju7rcNA.js";import"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import"./BaseCopyButton-Dz1wHLk7.js";const k={class:"mt-16 text-sm"},$=m({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(o){const n=i(o.tokenData.hostname||"");return(a,e)=>{const r=_;return p(),l(u,null,[s(c,{"token-url":n.value},null,8,["token-url"]),t("p",k,[e[1]||(e[1]=f(" Remember, it gets triggered whenever someone performs a DNS lookup of the hostname. ")),s(d,{onHowToUse:e[0]||(e[0]=g=>a.$emit("howToUse"))})]),s(r,{class:"mt-24",variant:"info",message:"The source IP address shown in the alert is the DNS server, not the end user."}),e[2]||(e[2]=t("p",{class:"mt-24 text-sm"},null,-1))],64)}}});export{$ as default}; diff --git a/dist/assets/ActivatedToken-CdjnDiDz.js b/dist/assets/ActivatedToken-CdjnDiDz.js new file mode 100644 index 000000000..aab0fa928 --- /dev/null +++ b/dist/assets/ActivatedToken-CdjnDiDz.js @@ -0,0 +1 @@ +import{d as m,r as p,a as c,c as l,i as a,f as s,I as k,p as d}from"./index-DttDySxD.js";import{_ as f}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-BIx55Azg.js";import{_}from"./ButtonActivateTokenTips.vue_vue_type_script_setup_true_lang-nju7rcNA.js";import"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import"./BaseCopyButton-Dz1wHLk7.js";const y=m({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(o){const e=o,n=p({token:e.tokenData.token||"",auth:e.tokenData.auth_token||"",appId:e.tokenData.app_id||"",displayName:e.tokenData.cert_name||"",fileWithCertAndPrivateKey:e.tokenData.cert_file_name||"",tenant:e.tokenData.tenant_id||""});return(i,t)=>{const r=d;return c(),l(k,null,[a(f,{"token-data":n.value},null,8,["token-data"]),t[1]||(t[1]=s("p",{class:"mt-16 text-sm"}," This token is triggered when someone uses this Service Principal Login to access Azure programmatically (through the API). ",-1)),t[2]||(t[2]=s("p",{class:"mt-16 text-sm"}," The Service Principal Login is unique. i.e. there is no chance of somebody guessing these credentials. ",-1)),a(_,{onHowToUse:t[0]||(t[0]=u=>i.$emit("howToUse"))}),a(r,{class:"mt-24",variant:"info",message:"If this token fires, it is a clear indication that this set of keys has 'leaked'"})],64)}}});export{y as default}; diff --git a/dist/assets/ActivatedToken-CmmwpMhE.js b/dist/assets/ActivatedToken-CmmwpMhE.js new file mode 100644 index 000000000..7df8bcb88 --- /dev/null +++ b/dist/assets/ActivatedToken-CmmwpMhE.js @@ -0,0 +1 @@ +import{d as m,r,a as d,c as f,i as c,j as k,h as u,E as D,q as h,f as w,I as v}from"./index-DttDySxD.js";import{_ as x}from"./ButtonActivateTokenTips.vue_vue_type_script_setup_true_lang-nju7rcNA.js";const $={class:"flex justify-center"},T=m({__name:"TokenDisplay",props:{tokenData:{}},setup(a){var s,_;const e=a,n=r(`${(s=e.tokenData)==null?void 0:s.file_name}`),o=r((_=e.tokenData)==null?void 0:_.file_contents);function t(){var i,l;o.value=`${(i=e.tokenData)==null?void 0:i.file_name}`,n.value=(l=e.tokenData)==null?void 0:l.file_contents}return(i,l)=>{const p=h;return d(),f("div",$,[c(p,{class:"mt-16",href:n.value,download:o.value,onClick:t},{default:k(()=>[u("Download "+D(e.tokenData.file_name),1)]),_:1},8,["href","download"])])}}}),g={class:"mt-16 text-sm"},b=m({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(a){const e=a,n=r({file_name:e.tokenData.file_name||"",file_contents:e.tokenData.file_contents||""});return(o,t)=>(d(),f(v,null,[c(T,{"token-data":n.value},null,8,["token-data"]),w("p",g,[t[1]||(t[1]=u(" Remember, this token is triggered whenever the binary file is executed. For EXEs, this means direct execution and for DLLs, it means they were loaded. ")),c(x,{onHowToUse:t[0]||(t[0]=s=>o.$emit("howToUse"))})])],64))}});export{b as default}; diff --git a/dist/assets/ActivatedToken-D8a8di3E.js b/dist/assets/ActivatedToken-D8a8di3E.js new file mode 100644 index 000000000..0831c0ff2 --- /dev/null +++ b/dist/assets/ActivatedToken-D8a8di3E.js @@ -0,0 +1 @@ +import{d as i,r as m,a as p,c as l,i as t,f as s,I as f,p as u}from"./index-DttDySxD.js";import{_ as g}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-BAdS2yN1.js";import"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import"./BaseCopyButton-Dz1wHLk7.js";const x=i({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(n){const a=m(n.tokenData.token_url);return(o,e)=>{const r=u;return p(),l(f,null,[t(g,{"token-url":a.value},null,8,["token-url"]),e[1]||(e[1]=s("p",{class:"mt-16 text-sm"}," Remember, it gets triggered whenever someone requests the URL. ",-1)),t(r,{class:"mt-24",variant:"info",message:"If the URL is requested as an image (e.g. ) then a 1x1 image is served. If the URL is surfed in a browser then a blank page is served with fingerprinting Javascript.","text-link":"More tips?",onClick:e[0]||(e[0]=()=>o.$emit("howToUse"))}),e[2]||(e[2]=s("p",{class:"mt-24 text-sm"},null,-1))],64)}}});export{x as default}; diff --git a/dist/assets/ActivatedToken-DAF2hN3m.js b/dist/assets/ActivatedToken-DAF2hN3m.js new file mode 100644 index 000000000..410cb0a47 --- /dev/null +++ b/dist/assets/ActivatedToken-DAF2hN3m.js @@ -0,0 +1 @@ +import{_ as m}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-Di0R449T.js";import{_ as l}from"./ButtonActivateTokenTips.vue_vue_type_script_setup_true_lang-nju7rcNA.js";import{d,r as o,a as u,c,i as a,f,h as k,I as _}from"./index-DttDySxD.js";import"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import"./BaseCopyButton-Dz1wHLk7.js";const y={class:"mt-16 text-sm"},w=d({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(n){const t=n,s=o(t.tokenData.token_url||""),r=o(t.tokenData.entity_id||""),p=o(t.tokenData.app_type||"");return(i,e)=>(u(),c(_,null,[a(m,{"token-url":s.value,"entity-id":r.value,"app-type":p.value},null,8,["token-url","entity-id","app-type"]),f("p",y,[e[1]||(e[1]=k(" When the fake app is opened from your IdP dashboard you receive an alert. ")),a(l,{onHowToUse:e[0]||(e[0]=v=>i.$emit("howToUse"))})])],64))}});export{w as default}; diff --git a/dist/assets/ActivatedToken-DAVI1yUv.js b/dist/assets/ActivatedToken-DAVI1yUv.js new file mode 100644 index 000000000..5231db011 --- /dev/null +++ b/dist/assets/ActivatedToken-DAVI1yUv.js @@ -0,0 +1 @@ +import{d as i,r as m,a as c,c as p,i as t,f,h as _,I as d,p as l}from"./index-DttDySxD.js";import{_ as u}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-LdLBz20R.js";import{_ as k}from"./ButtonActivateTokenTips.vue_vue_type_script_setup_true_lang-nju7rcNA.js";const h={class:"mt-24 text-sm"},$=i({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(a){const o=a,n=m({token:o.tokenData.token||"",auth:o.tokenData.auth_token||""});return(s,e)=>{const r=l;return c(),p(d,null,[t(u,{"token-data":n.value},null,8,["token-data"]),f("p",h,[e[1]||(e[1]=_(" You'll get an alert whenever this document is opened in Microsoft Office, on Windows or macOS. ")),t(k,{onHowToUse:e[0]||(e[0]=w=>s.$emit("howToUse"))})]),t(r,{class:"mt-24",variant:"info",message:"You can rename the document without affecting its operation."})],64)}}});export{$ as default}; diff --git a/dist/assets/ActivatedToken-DDtZIi9x.js b/dist/assets/ActivatedToken-DDtZIi9x.js new file mode 100644 index 000000000..8eb471ca2 --- /dev/null +++ b/dist/assets/ActivatedToken-DDtZIi9x.js @@ -0,0 +1 @@ +import{_ as n}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-C7OO4JwL.js";import{_ as a}from"./ButtonActivateTokenTips.vue_vue_type_script_setup_true_lang-nju7rcNA.js";import{d as i,r as m,a as l,c as p,i as t,f as d,h as c,I as k}from"./index-DttDySxD.js";import"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import"./BaseCopyButton-Dz1wHLk7.js";const f={class:"mt-16 text-sm"},$=i({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(o){const s=m(o.tokenData.token_url);return(r,e)=>(l(),p(k,null,[t(n,{"token-url":s.value},null,8,["token-url"]),d("p",f,[e[1]||(e[1]=c(" The token is similar to the Web token, however, when the link is loaded the view will be immediately redirected to the specified redirect URL. ")),t(a,{onHowToUse:e[0]||(e[0]=_=>r.$emit("howToUse"))})])],64))}});export{$ as default}; diff --git a/dist/assets/ActivatedToken-DkGpR0D-.js b/dist/assets/ActivatedToken-DkGpR0D-.js new file mode 100644 index 000000000..28a78dc14 --- /dev/null +++ b/dist/assets/ActivatedToken-DkGpR0D-.js @@ -0,0 +1 @@ +import{_ as m}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-CRPUMH1e.js";import{_ as i}from"./ButtonActivateTokenTips.vue_vue_type_script_setup_true_lang-nju7rcNA.js";import{d as l,r as p,a as d,c,i as s,f as n,h as k,I as u}from"./index-DttDySxD.js";import"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import"./BaseCopyButton-Dz1wHLk7.js";const f={class:"mt-16 text-sm"},b=l({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(o){var a;const e=o,r=p({hostname:e.tokenData.hostname||"",sql_table_name:e.tokenData.sql_server_table_name||"",sql_trigger_name:e.tokenData.sql_server_trigger_name||"",sql_function_name:((a=e.tokenData)==null?void 0:a.sql_server_function_name)||"",sql_server_view_name:e.tokenData.sql_server_view_name||"",sql_action:e.tokenData.sql_server_sql_action||""});return(_,t)=>(d(),c(u,null,[s(m,{"token-data":r.value},null,8,["token-data"]),t[2]||(t[2]=n("p",{class:"mt-16 text-sm"}," When the actions are run, your Canarytoken will be triggered. ",-1)),n("p",f,[t[1]||(t[1]=k(" Since DNS is used as the underlying transport, the Source IP will be that of a DNS server, not the database server. ")),s(i,{onHowToUse:t[0]||(t[0]=v=>_.$emit("howToUse"))})])],64))}});export{b as default}; diff --git a/dist/assets/ActivatedToken-DqmPmKOW.js b/dist/assets/ActivatedToken-DqmPmKOW.js new file mode 100644 index 000000000..452eef25c --- /dev/null +++ b/dist/assets/ActivatedToken-DqmPmKOW.js @@ -0,0 +1 @@ +import{_ as n}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-Cb7WGO9S.js";import{_ as a}from"./ButtonActivateTokenTips.vue_vue_type_script_setup_true_lang-nju7rcNA.js";import{d as i,r as m,a as l,c as p,i as t,f as u,h as c,I as d}from"./index-DttDySxD.js";import"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import"./BaseCopyButton-Dz1wHLk7.js";const k={class:"mt-16 text-sm"},$=i({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(o){const s=m(o.tokenData.token_url);return(r,e)=>(l(),p(d,null,[t(n,{"token-url":s.value},null,8,["token-url"]),u("p",k,[e[1]||(e[1]=c(" The token is similar to the Fast redirect token, however, when the link is loaded the user's browser / browser plugin information is captured. ")),t(a,{onHowToUse:e[0]||(e[0]=_=>r.$emit("howToUse"))})])],64))}});export{$ as default}; diff --git a/dist/assets/ActivatedToken-Dt3M4-px.js b/dist/assets/ActivatedToken-Dt3M4-px.js new file mode 100644 index 000000000..823c6e16a --- /dev/null +++ b/dist/assets/ActivatedToken-Dt3M4-px.js @@ -0,0 +1 @@ +import{T as m}from"./TokenDisplay-B4fkFMQ_.js";import{_ as d}from"./ButtonActivateTokenTips.vue_vue_type_script_setup_true_lang-nju7rcNA.js";import{d as p,r as i,a as l,c as _,i as o,f as a,I as k}from"./index-DttDySxD.js";import"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import"./BaseCopyButton-Dz1wHLk7.js";const w={class:"mt-16 text-sm"},T=p({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(s){const e=s,n=i({hostname:e.tokenData.hostname||"",webdav_fs_type:e.tokenData.webdav_fs_type||"",webdav_password:e.tokenData.webdav_password||"",webdav_server:e.tokenData.webdav_server||""});return(r,t)=>(l(),_(k,null,[o(m,{"token-data":n.value},null,8,["token-data"]),t[1]||(t[1]=a("p",{class:"mt-16 text-sm"}," When the WebDAV folder is browsed, your Canarytoken will be triggered. ",-1)),a("p",w,[o(d,{onHowToUse:t[0]||(t[0]=f=>r.$emit("howToUse"))})])],64))}});export{T as default}; diff --git a/dist/assets/ActivatedToken-DyQ5_N8Q.js b/dist/assets/ActivatedToken-DyQ5_N8Q.js new file mode 100644 index 000000000..5ffa01f97 --- /dev/null +++ b/dist/assets/ActivatedToken-DyQ5_N8Q.js @@ -0,0 +1 @@ +import{d as i,r as l,a as c,c as m,f as a,i as o,I as d,p as u}from"./index-DttDySxD.js";import{_ as k}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-CjHO1ynB.js";const _=i({__name:"ActivatedToken",props:{tokenData:{}},setup(n){const t=n,s=l({token:t.tokenData.token||"",auth:t.tokenData.auth_token||"",client_id:t.tokenData.client_id||"",css:t.tokenData.css||""});return(p,e)=>{const r=u;return c(),m(d,null,[e[0]||(e[0]=a("h3",{class:"mb-16 text-lg font-semibold leading-10 text-center text-grey-800"}," How do you want to deploy it? ",-1)),o(k,{"token-data":s.value},null,8,["token-data"]),e[1]||(e[1]=a("p",{class:"mt-16 text-sm"}," When someone clones your site, they'll load the token, which will check whether the referrer domain is expected. If not, it fires the token and you get an alert. ",-1)),o(r,{class:"mt-24",variant:"info",message:"Upload it as a custom branding stylesheet for your Azure Entra ID login portal (requires a P1 or P2 subscription)","text-link":"How?",href:"https://learn.microsoft.com/en-us/entra/fundamentals/how-to-customize-branding",target:"_blank"})],64)}}});export{_ as default}; diff --git a/dist/assets/ActivatedToken-PnYetTo4.js b/dist/assets/ActivatedToken-PnYetTo4.js new file mode 100644 index 000000000..dc5ff92f5 --- /dev/null +++ b/dist/assets/ActivatedToken-PnYetTo4.js @@ -0,0 +1 @@ +import{d as i,r,a as p,c as m,i as t,f as l,I as c,p as k}from"./index-DttDySxD.js";import{_ as d}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-DwnVYEns.js";import"./BaseSwitch-DCFJt9CG.js";import"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import"./BaseCopyButton-Dz1wHLk7.js";const v=i({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(o){const s=r(o.tokenData.clonedsite_js||"");return(n,e)=>{const a=k;return p(),m(c,null,[t(d,{"token-snippet":s.value},null,8,["token-snippet"]),e[1]||(e[1]=l("p",{class:"mt-16 text-sm"}," Use this Javascript to detect when someone has cloned a webpage. ",-1)),t(a,{class:"mt-24",variant:"info",message:"When someone clones your site, they’ll grab this JavaScript too. When the script runs on their cloned site, it triggers an alert to let you know what’s going on.","text-link":"More tips?",onClick:e[0]||(e[0]=()=>n.$emit("howToUse"))})],64)}}});export{v as default}; diff --git a/dist/assets/ActivatedToken-iU5XoiJW.js b/dist/assets/ActivatedToken-iU5XoiJW.js new file mode 100644 index 000000000..988a61757 --- /dev/null +++ b/dist/assets/ActivatedToken-iU5XoiJW.js @@ -0,0 +1 @@ +import{d as i,r as m,a as c,c as p,i as t,f,h as _,I as d,p as l}from"./index-DttDySxD.js";import{_ as u}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-DEy7VRNl.js";import{_ as k}from"./ButtonActivateTokenTips.vue_vue_type_script_setup_true_lang-nju7rcNA.js";const h={class:"mt-24 text-sm"},$=i({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(a){const o=a,n=m({token:o.tokenData.token||"",auth:o.tokenData.auth_token||""});return(s,e)=>{const r=l;return c(),p(d,null,[t(u,{"token-data":n.value},null,8,["token-data"]),f("p",h,[e[1]||(e[1]=_(" You'll get an alert whenever this document is opened in Microsoft Office, on Windows or macOS. ")),t(k,{onHowToUse:e[0]||(e[0]=w=>s.$emit("howToUse"))})]),t(r,{class:"mt-24",variant:"info",message:"You can rename the document without affecting its operation."})],64)}}});export{$ as default}; diff --git a/dist/assets/ActivatedToken-keZuhxNA.js b/dist/assets/ActivatedToken-keZuhxNA.js new file mode 100644 index 000000000..c1567975f --- /dev/null +++ b/dist/assets/ActivatedToken-keZuhxNA.js @@ -0,0 +1,4 @@ +import{_ as c}from"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import{d,r as o,a as p,c as u,i as t,f as s,I as g,p as _}from"./index-DttDySxD.js";import{_ as f}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-mlM8Gu4I.js";import"./BaseCopyButton-Dz1wHLk7.js";const x=d({__name:"ActivatedToken",props:{tokenData:{}},setup(r){const n=r,m=o({token:n.tokenData.token||"",auth:n.tokenData.auth_token||""}),i=o(`reg import FILENAME /reg:64 +reg import FILENAME /reg:32`);return(k,e)=>{const a=_,l=c;return p(),u(g,null,[t(f,{"token-data":m.value},null,8,["token-data"]),t(a,{class:"mt-24",variant:"info",message:`Once installed (with admin permissions) you'll get an alert whenever someone + (or someone's code) runs your sensitive process.`}),e[0]||(e[0]=s("p",{class:"mt-24 text-sm"}," It will automatically provide the command used, computer the command ran on, and the user invoking the command. ",-1)),e[1]||(e[1]=s("p",{class:"mt-16 text-sm"},null,-1)),t(a,{class:"mt-24",variant:"warning",message:`In order to ensure that the token fires for both 32-bit and 64-bit + executables, we suggest installing by running the following commands:`}),t(l,{class:"mt-16",lang:"bash",code:i.value},null,8,["code"])],64)}}});export{x as default}; diff --git a/dist/assets/ActivatedToken-lZjg66rk.js b/dist/assets/ActivatedToken-lZjg66rk.js new file mode 100644 index 000000000..a7561f8a7 --- /dev/null +++ b/dist/assets/ActivatedToken-lZjg66rk.js @@ -0,0 +1 @@ +import{d as i,r as m,a as p,c as l,i as t,f as s,I as u,p as f}from"./index-DttDySxD.js";import{_ as g}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-wr7f4f_p.js";import"./BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js";import"./BaseCopyButton-Dz1wHLk7.js";const U=i({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(o){const n=m(o.tokenData.token_url);return(r,e)=>{const a=f;return p(),l(u,null,[t(g,{"token-url":n.value},null,8,["token-url"]),e[1]||(e[1]=s("p",{class:"mt-16 text-sm"}," Remember, it gets triggered whenever someone requests the URL. ",-1)),t(a,{class:"mt-24",variant:"info",message:"If the URL is requested as an image (e.g. ) then your custom image is served. If the URL is surfed in a browser then a blank page is served with fingerprinting Javascript.","text-link":"More tips?",onClick:e[0]||(e[0]=()=>r.$emit("howToUse"))}),e[2]||(e[2]=s("p",{class:"mt-24 text-sm"},null,-1))],64)}}});export{U as default}; diff --git a/dist/assets/ActivatedToken-tOKbGrNE.js b/dist/assets/ActivatedToken-tOKbGrNE.js new file mode 100644 index 000000000..14992d914 --- /dev/null +++ b/dist/assets/ActivatedToken-tOKbGrNE.js @@ -0,0 +1,4 @@ +import{d as l,r as m,a as d,c as f,i as o,f as n,h as p,I as w,p as k}from"./index-DttDySxD.js";import{_ as u}from"./TokenDisplay.vue_vue_type_script_setup_true_lang-BKRhlQK1.js";import{_ as c}from"./ButtonActivateTokenTips.vue_vue_type_script_setup_true_lang-nju7rcNA.js";const h={class:"mt-16 text-sm"},b=l({__name:"ActivatedToken",props:{tokenData:{}},emits:["howToUse"],setup(a){const t=a,i=m({token:t.tokenData.token||"",auth:t.tokenData.auth_token||""});return(r,e)=>{const s=k;return d(),f(w,null,[o(u,{"token-data":i.value},null,8,["token-data"]),n("p",h,[e[1]||(e[1]=p(" Unzip this file in a folder, and get notified when someone browses the folder in Windows Explorer. It will even trigger if someone is browsing the folder via a network share! ")),o(c,{onHowToUse:e[0]||(e[0]=_=>r.$emit("howToUse"))})]),o(s,{class:"mt-32",variant:"warning",message:`This token only works on Windows 10 systems and lower. It does + not work on Windows 11 or higher. This is because a recent group policy update to + some versions of Windows defaults to disabling functionality that this token + relies on to fire.`}),o(s,{class:"mt-24",variant:"info",message:"The alert will include the network domain and username of the browsing user, if present."}),e[2]||(e[2]=n("p",{class:"mt-24 text-sm"},null,-1))],64)}}});export{b as default}; diff --git a/dist/assets/AppLayoutOneColumn-EVZ4XoK_.js b/dist/assets/AppLayoutOneColumn-EVZ4XoK_.js new file mode 100644 index 000000000..f8006d6be --- /dev/null +++ b/dist/assets/AppLayoutOneColumn-EVZ4XoK_.js @@ -0,0 +1 @@ +import{y as t,a as s,c,A as o}from"./index-DttDySxD.js";const n={},r={class:"flex flex-col items-center justify-center w-full"};function l(e,a){return s(),c("div",r,[o(e.$slots,"default")])}const _=t(n,[["render",l]]);export{_ as A}; diff --git a/dist/assets/BannerDeviceCanarytools-C8_VNMbK.js b/dist/assets/BannerDeviceCanarytools-C8_VNMbK.js new file mode 100644 index 000000000..c75e0343b --- /dev/null +++ b/dist/assets/BannerDeviceCanarytools-C8_VNMbK.js @@ -0,0 +1 @@ +import{y as e,a as n,c as o,f as t,a5 as r,i as c,j as i,h as p,q as d}from"./index-DttDySxD.js";const l={},f={class:"@container"},_={class:"w-full gap-16 p-16 mt-16 rounded-2xl banner-bg grid @sm:justify-center @sm:items-center @sm:grid-cols-[2fr_3fr_1fr] @sm:grid-rows-[2fr] @sm:aspect-[4/1] @md:h-[180px] @sm:bg-[position:-200px_-100px,0] @sm:bg-[size:550px,cover] grid-rows-[3fr_1fr] px-16 h-[280px] aspect-[1/2] bg-[position:-250px_0px,0] bg-[size:550px,cover]"},x={class:"flex self-end justify-end m-w-[0px]"};function m(b,s){const a=d;return n(),o("div",f,[t("div",_,[s[1]||(s[1]=r('
#AdDid you know some of the best security teams in the world run Thinkst Canary?
',2)),t("div",x,[c(a,{class:"whitespace-nowrap",variant:"text-light","icon-position":"right",icon:"arrow-right",href:"https://canary.tools/",target:"_blank"},{default:i(()=>s[0]||(s[0]=[p("Find out")])),_:1})])])])}const g=e(l,[["render",m],["__scopeId","data-v-27a67cb3"]]);export{g as B}; diff --git a/dist/assets/BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js b/dist/assets/BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js new file mode 100644 index 000000000..2423c8b2f --- /dev/null +++ b/dist/assets/BaseCodeSnippet.vue_vue_type_script_setup_true_lang-U-FK7B8h.js @@ -0,0 +1,4 @@ +import{_ as Ut}from"./BaseCopyButton-Dz1wHLk7.js";import{d as Tn,r as he,z as Pt,a9 as Ft,a6 as $t,a as ue,c as Te,i as yn,j as zt,b as vn,a2 as Kt,e as Ie,y as qt,aa as Gt,D as Ht,C as ve,ab as An,E as Mn,f as Cn,n as Wt,ac as Yt,u as Zt}from"./index-DttDySxD.js";const Xt={key:0,class:"fa-sr-only"},Vt=Tn({__name:"BaseRefreshButton",emits:["refresh-token"],setup(n,{emit:e}){const t=e,s=he("Refresh token"),c=he(!1),l=he(["hover","focus"]);function i(o){return new Promise(d=>setTimeout(d,o))}async function a(){await i(150),l.value=[],c.value=!0,s.value="Refreshed!",await i(1500),c.value=!1,l.value=["hover","focus"],await i(150),s.value="Refresh token"}function r(){a(),t("refresh-token")}return(o,d)=>{const g=Pt("font-awesome-icon"),b=Ft("tooltip");return $t((ue(),Te("button",{class:"refresh-token h-[2rem] w-[2rem] font-semibold rounded-full bg-white hover:bg-green-50 hover:text-green-500 focus:text-green-500 focus-visible:outline-0 focus:bg-green-100 focus:border-green-200 focus:outline-0 text-green-600 border border-green-200","aria-label":"Refresh token",onClick:r},[yn(Kt,{name:"fade",mode:"out-in"},{default:zt(()=>[c.value?(ue(),vn(g,{key:1,"aria-hidden":"true",icon:"check"})):(ue(),vn(g,{key:0,"aria-hidden":"true",icon:"rotate-right"}))]),_:1}),c.value?(ue(),Te("span",Xt,"Token Refreshed")):Ie("",!0)])),[[b,{content:s.value,shown:c.value,triggers:l.value}]])}}}),Qt=qt(Vt,[["__scopeId","data-v-79c1aca7"]]);function yt(n){return n instanceof Map?n.clear=n.delete=n.set=function(){throw new Error("map is read-only")}:n instanceof Set&&(n.add=n.clear=n.delete=function(){throw new Error("set is read-only")}),Object.freeze(n),Object.getOwnPropertyNames(n).forEach(e=>{const t=n[e],s=typeof t;(s==="object"||s==="function")&&!Object.isFrozen(t)&&yt(t)}),n}class In{constructor(e){e.data===void 0&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function vt(n){return n.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function ge(n,...e){const t=Object.create(null);for(const s in n)t[s]=n[s];return e.forEach(function(s){for(const c in s)t[c]=s[c]}),t}const Jt="",kn=n=>!!n.scope,jt=(n,{prefix:e})=>{if(n.startsWith("language:"))return n.replace("language:","language-");if(n.includes(".")){const t=n.split(".");return[`${e}${t.shift()}`,...t.map((s,c)=>`${s}${"_".repeat(c+1)}`)].join(" ")}return`${e}${n}`};class ea{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=vt(e)}openNode(e){if(!kn(e))return;const t=jt(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){kn(e)&&(this.buffer+=Jt)}value(){return this.buffer}span(e){this.buffer+=``}}const xn=(n={})=>{const e={children:[]};return Object.assign(e,n),e};class Sn{constructor(){this.rootNode=xn(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t=xn({scope:e});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return typeof t=="string"?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(s=>this._walk(e,s)),e.closeNode(t)),e}static _collapse(e){typeof e!="string"&&e.children&&(e.children.every(t=>typeof t=="string")?e.children=[e.children.join("")]:e.children.forEach(t=>{Sn._collapse(t)}))}}class na extends Sn{constructor(e){super(),this.options=e}addText(e){e!==""&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){const s=e.root;t&&(s.scope=`language:${t}`),this.add(s)}toHTML(){return new ea(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function Se(n){return n?typeof n=="string"?n:n.source:null}function Tt(n){return _e("(?=",n,")")}function ta(n){return _e("(?:",n,")*")}function aa(n){return _e("(?:",n,")?")}function _e(...n){return n.map(t=>Se(t)).join("")}function ra(n){const e=n[n.length-1];return typeof e=="object"&&e.constructor===Object?(n.splice(n.length-1,1),e):{}}function wn(...n){return"("+(ra(n).capture?"":"?:")+n.map(s=>Se(s)).join("|")+")"}function St(n){return new RegExp(n.toString()+"|").exec("").length-1}function ia(n,e){const t=n&&n.exec(e);return t&&t.index===0}const sa=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function On(n,{joinWith:e}){let t=0;return n.map(s=>{t+=1;const c=t;let l=Se(s),i="";for(;l.length>0;){const a=sa.exec(l);if(!a){i+=l;break}i+=l.substring(0,a.index),l=l.substring(a.index+a[0].length),a[0][0]==="\\"&&a[1]?i+="\\"+String(Number(a[1])+c):(i+=a[0],a[0]==="("&&t++)}return i}).map(s=>`(${s})`).join(e)}const oa=/\b\B/,wt="[a-zA-Z]\\w*",Rn="[a-zA-Z_]\\w*",Ot="\\b\\d+(\\.\\d+)?",Rt="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",At="\\b(0b[01]+)",ca="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",la=(n={})=>{const e=/^#![ ]*\//;return n.binary&&(n.begin=_e(e,/.*\b/,n.binary,/\b.*/)),ge({scope:"meta",begin:e,end:/$/,relevance:0,"on:begin":(t,s)=>{t.index!==0&&s.ignoreMatch()}},n)},we={begin:"\\\\[\\s\\S]",relevance:0},da={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[we]},ua={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[we]},ga={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},xe=function(n,e,t={}){const s=ge({scope:"comment",begin:n,end:e,contains:[]},t);s.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const c=wn("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return s.contains.push({begin:_e(/[ ]+/,"(",c,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s},ba=xe("//","$"),pa=xe("/\\*","\\*/"),_a=xe("#","$"),ma={scope:"number",begin:Ot,relevance:0},Ea={scope:"number",begin:Rt,relevance:0},fa={scope:"number",begin:At,relevance:0},ha={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[we,{begin:/\[/,end:/\]/,relevance:0,contains:[we]}]},Na={scope:"title",begin:wt,relevance:0},ya={scope:"title",begin:Rn,relevance:0},va={begin:"\\.\\s*"+Rn,relevance:0},Ta=function(n){return Object.assign(n,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})};var Ce=Object.freeze({__proto__:null,APOS_STRING_MODE:da,BACKSLASH_ESCAPE:we,BINARY_NUMBER_MODE:fa,BINARY_NUMBER_RE:At,COMMENT:xe,C_BLOCK_COMMENT_MODE:pa,C_LINE_COMMENT_MODE:ba,C_NUMBER_MODE:Ea,C_NUMBER_RE:Rt,END_SAME_AS_BEGIN:Ta,HASH_COMMENT_MODE:_a,IDENT_RE:wt,MATCH_NOTHING_RE:oa,METHOD_GUARD:va,NUMBER_MODE:ma,NUMBER_RE:Ot,PHRASAL_WORDS_MODE:ga,QUOTE_STRING_MODE:ua,REGEXP_MODE:ha,RE_STARTERS_RE:ca,SHEBANG:la,TITLE_MODE:Na,UNDERSCORE_IDENT_RE:Rn,UNDERSCORE_TITLE_MODE:ya});function Sa(n,e){n.input[n.index-1]==="."&&e.ignoreMatch()}function wa(n,e){n.className!==void 0&&(n.scope=n.className,delete n.className)}function Oa(n,e){e&&n.beginKeywords&&(n.begin="\\b("+n.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",n.__beforeBegin=Sa,n.keywords=n.keywords||n.beginKeywords,delete n.beginKeywords,n.relevance===void 0&&(n.relevance=0))}function Ra(n,e){Array.isArray(n.illegal)&&(n.illegal=wn(...n.illegal))}function Aa(n,e){if(n.match){if(n.begin||n.end)throw new Error("begin & end are not supported with match");n.begin=n.match,delete n.match}}function Ma(n,e){n.relevance===void 0&&(n.relevance=1)}const Ca=(n,e)=>{if(!n.beforeMatch)return;if(n.starts)throw new Error("beforeMatch cannot be used with starts");const t=Object.assign({},n);Object.keys(n).forEach(s=>{delete n[s]}),n.keywords=t.keywords,n.begin=_e(t.beforeMatch,Tt(t.begin)),n.starts={relevance:0,contains:[Object.assign(t,{endsParent:!0})]},n.relevance=0,delete t.beforeMatch},Ia=["of","and","for","in","not","or","if","then","parent","list","value"],ka="keyword";function Mt(n,e,t=ka){const s=Object.create(null);return typeof n=="string"?c(t,n.split(" ")):Array.isArray(n)?c(t,n):Object.keys(n).forEach(function(l){Object.assign(s,Mt(n[l],e,l))}),s;function c(l,i){e&&(i=i.map(a=>a.toLowerCase())),i.forEach(function(a){const r=a.split("|");s[r[0]]=[l,xa(r[0],r[1])]})}}function xa(n,e){return e?Number(e):Da(n)?0:1}function Da(n){return Ia.includes(n.toLowerCase())}const Dn={},pe=n=>{console.error(n)},Ln=(n,...e)=>{console.log(`WARN: ${n}`,...e)},fe=(n,e)=>{Dn[`${n}/${e}`]||(console.log(`Deprecated as of ${n}. ${e}`),Dn[`${n}/${e}`]=!0)},ke=new Error;function Ct(n,e,{key:t}){let s=0;const c=n[t],l={},i={};for(let a=1;a<=e.length;a++)i[a+s]=c[a],l[a+s]=!0,s+=St(e[a-1]);n[t]=i,n[t]._emit=l,n[t]._multi=!0}function La(n){if(Array.isArray(n.begin)){if(n.skip||n.excludeBegin||n.returnBegin)throw pe("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),ke;if(typeof n.beginScope!="object"||n.beginScope===null)throw pe("beginScope must be object"),ke;Ct(n,n.begin,{key:"beginScope"}),n.begin=On(n.begin,{joinWith:""})}}function Ba(n){if(Array.isArray(n.end)){if(n.skip||n.excludeEnd||n.returnEnd)throw pe("skip, excludeEnd, returnEnd not compatible with endScope: {}"),ke;if(typeof n.endScope!="object"||n.endScope===null)throw pe("endScope must be object"),ke;Ct(n,n.end,{key:"endScope"}),n.end=On(n.end,{joinWith:""})}}function Ua(n){n.scope&&typeof n.scope=="object"&&n.scope!==null&&(n.beginScope=n.scope,delete n.scope)}function Pa(n){Ua(n),typeof n.beginScope=="string"&&(n.beginScope={_wrap:n.beginScope}),typeof n.endScope=="string"&&(n.endScope={_wrap:n.endScope}),La(n),Ba(n)}function Fa(n){function e(i,a){return new RegExp(Se(i),"m"+(n.case_insensitive?"i":"")+(n.unicodeRegex?"u":"")+(a?"g":""))}class t{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(a,r){r.position=this.position++,this.matchIndexes[this.matchAt]=r,this.regexes.push([r,a]),this.matchAt+=St(a)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const a=this.regexes.map(r=>r[1]);this.matcherRe=e(On(a,{joinWith:"|"}),!0),this.lastIndex=0}exec(a){this.matcherRe.lastIndex=this.lastIndex;const r=this.matcherRe.exec(a);if(!r)return null;const o=r.findIndex((g,b)=>b>0&&g!==void 0),d=this.matchIndexes[o];return r.splice(0,o),Object.assign(r,d)}}class s{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(a){if(this.multiRegexes[a])return this.multiRegexes[a];const r=new t;return this.rules.slice(a).forEach(([o,d])=>r.addRule(o,d)),r.compile(),this.multiRegexes[a]=r,r}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(a,r){this.rules.push([a,r]),r.type==="begin"&&this.count++}exec(a){const r=this.getMatcher(this.regexIndex);r.lastIndex=this.lastIndex;let o=r.exec(a);if(this.resumingScanAtSamePosition()&&!(o&&o.index===this.lastIndex)){const d=this.getMatcher(0);d.lastIndex=this.lastIndex+1,o=d.exec(a)}return o&&(this.regexIndex+=o.position+1,this.regexIndex===this.count&&this.considerAll()),o}}function c(i){const a=new s;return i.contains.forEach(r=>a.addRule(r.begin,{rule:r,type:"begin"})),i.terminatorEnd&&a.addRule(i.terminatorEnd,{type:"end"}),i.illegal&&a.addRule(i.illegal,{type:"illegal"}),a}function l(i,a){const r=i;if(i.isCompiled)return r;[wa,Aa,Pa,Ca].forEach(d=>d(i,a)),n.compilerExtensions.forEach(d=>d(i,a)),i.__beforeBegin=null,[Oa,Ra,Ma].forEach(d=>d(i,a)),i.isCompiled=!0;let o=null;return typeof i.keywords=="object"&&i.keywords.$pattern&&(i.keywords=Object.assign({},i.keywords),o=i.keywords.$pattern,delete i.keywords.$pattern),o=o||/\w+/,i.keywords&&(i.keywords=Mt(i.keywords,n.case_insensitive)),r.keywordPatternRe=e(o,!0),a&&(i.begin||(i.begin=/\B|\b/),r.beginRe=e(r.begin),!i.end&&!i.endsWithParent&&(i.end=/\B|\b/),i.end&&(r.endRe=e(r.end)),r.terminatorEnd=Se(r.end)||"",i.endsWithParent&&a.terminatorEnd&&(r.terminatorEnd+=(i.end?"|":"")+a.terminatorEnd)),i.illegal&&(r.illegalRe=e(i.illegal)),i.contains||(i.contains=[]),i.contains=[].concat(...i.contains.map(function(d){return $a(d==="self"?i:d)})),i.contains.forEach(function(d){l(d,r)}),i.starts&&l(i.starts,a),r.matcher=c(r),r}if(n.compilerExtensions||(n.compilerExtensions=[]),n.contains&&n.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return n.classNameAliases=ge(n.classNameAliases||{}),l(n)}function It(n){return n?n.endsWithParent||It(n.starts):!1}function $a(n){return n.variants&&!n.cachedVariants&&(n.cachedVariants=n.variants.map(function(e){return ge(n,{variants:null},e)})),n.cachedVariants?n.cachedVariants:It(n)?ge(n,{starts:n.starts?ge(n.starts):null}):Object.isFrozen(n)?ge(n):n}var za="11.9.0";class Ka extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}const Be=vt,Bn=ge,Un=Symbol("nomatch"),qa=7,kt=function(n){const e=Object.create(null),t=Object.create(null),s=[];let c=!0;const l="Could not find the language '{}', did you forget to load/include a language module?",i={disableAutodetect:!0,name:"Plain text",contains:[]};let a={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:na};function r(u){return a.noHighlightRe.test(u)}function o(u){let f=u.className+" ";f+=u.parentNode?u.parentNode.className:"";const O=a.languageDetectRe.exec(f);if(O){const k=I(O[1]);return k||(Ln(l.replace("{}",O[1])),Ln("Falling back to no-highlight mode for this block.",u)),k?O[1]:"no-highlight"}return f.split(/\s+/).find(k=>r(k)||I(k))}function d(u,f,O){let k="",U="";typeof f=="object"?(k=u,O=f.ignoreIllegals,U=f.language):(fe("10.7.0","highlight(lang, code, ...args) has been deprecated."),fe("10.7.0",`Please use highlight(code, options) instead. +https://github.com/highlightjs/highlight.js/issues/2277`),U=u,k=f),O===void 0&&(O=!0);const Y={code:k,language:U};B("before:highlight",Y);const ne=Y.result?Y.result:g(Y.language,Y.code,O);return ne.code=Y.code,B("after:highlight",ne),ne}function g(u,f,O,k){const U=Object.create(null);function Y(_,y){return _.keywords[y]}function ne(){if(!T.keywords){G.addText(P);return}let _=0;T.keywordPatternRe.lastIndex=0;let y=T.keywordPatternRe.exec(P),S="";for(;y;){S+=P.substring(_,y.index);const x=ae.case_insensitive?y[0].toLowerCase():y[0],X=Y(T,x);if(X){const[se,De]=X;if(G.addText(S),S="",U[x]=(U[x]||0)+1,U[x]<=qa&&(Ee+=De),se.startsWith("_"))S+=y[0];else{const Le=ae.classNameAliases[se]||se;Z(y[0],Le)}}else S+=y[0];_=T.keywordPatternRe.lastIndex,y=T.keywordPatternRe.exec(P)}S+=P.substring(_),G.addText(S)}function te(){if(P==="")return;let _=null;if(typeof T.subLanguage=="string"){if(!e[T.subLanguage]){G.addText(P);return}_=g(T.subLanguage,P,!0,Ae[T.subLanguage]),Ae[T.subLanguage]=_._top}else _=p(P,T.subLanguage.length?T.subLanguage:null);T.relevance>0&&(Ee+=_.relevance),G.__addSublanguage(_._emitter,_.language)}function z(){T.subLanguage!=null?te():ne(),P=""}function Z(_,y){_!==""&&(G.startScope(y),G.addText(_),G.endScope())}function q(_,y){let S=1;const x=y.length-1;for(;S<=x;){if(!_._emit[S]){S++;continue}const X=ae.classNameAliases[_[S]]||_[S],se=y[S];X?Z(se,X):(P=se,ne(),P=""),S++}}function K(_,y){return _.scope&&typeof _.scope=="string"&&G.openNode(ae.classNameAliases[_.scope]||_.scope),_.beginScope&&(_.beginScope._wrap?(Z(P,ae.classNameAliases[_.beginScope._wrap]||_.beginScope._wrap),P=""):_.beginScope._multi&&(q(_.beginScope,y),P="")),T=Object.create(_,{parent:{value:T}}),T}function Q(_,y,S){let x=ia(_.endRe,S);if(x){if(_["on:end"]){const X=new In(_);_["on:end"](y,X),X.isMatchIgnored&&(x=!1)}if(x){for(;_.endsParent&&_.parent;)_=_.parent;return _}}if(_.endsWithParent)return Q(_.parent,y,S)}function j(_){return T.matcher.regexIndex===0?(P+=_[0],1):(ce=!0,0)}function ee(_){const y=_[0],S=_.rule,x=new In(S),X=[S.__beforeBegin,S["on:begin"]];for(const se of X)if(se&&(se(_,x),x.isMatchIgnored))return j(y);return S.skip?P+=y:(S.excludeBegin&&(P+=y),z(),!S.returnBegin&&!S.excludeBegin&&(P=y)),K(S,_),S.returnBegin?0:y.length}function ie(_){const y=_[0],S=f.substring(_.index),x=Q(T,_,S);if(!x)return Un;const X=T;T.endScope&&T.endScope._wrap?(z(),Z(y,T.endScope._wrap)):T.endScope&&T.endScope._multi?(z(),q(T.endScope,_)):X.skip?P+=y:(X.returnEnd||X.excludeEnd||(P+=y),z(),X.excludeEnd&&(P=y));do T.scope&&G.closeNode(),!T.skip&&!T.subLanguage&&(Ee+=T.relevance),T=T.parent;while(T!==x.parent);return x.starts&&K(x.starts,_),X.returnEnd?0:y.length}function oe(){const _=[];for(let y=T;y!==ae;y=y.parent)y.scope&&_.unshift(y.scope);_.forEach(y=>G.openNode(y))}let be={};function Oe(_,y){const S=y&&y[0];if(P+=_,S==null)return z(),0;if(be.type==="begin"&&y.type==="end"&&be.index===y.index&&S===""){if(P+=f.slice(y.index,y.index+1),!c){const x=new Error(`0 width match regex (${u})`);throw x.languageName=u,x.badRule=be.rule,x}return 1}if(be=y,y.type==="begin")return ee(y);if(y.type==="illegal"&&!O){const x=new Error('Illegal lexeme "'+S+'" for mode "'+(T.scope||"